Лекция №2 Управление задачами Процессы и потоки Процесс Выполнение пассивных инструкций компьютерной программы на процессоре ЭВМ. Стандарт ISO 9000:2000 Definitions определяет процесс как совокупность взаимосвязанных и взаимодействующих действий, преобразующих входящие данные в исходящие. Компьютерная программа сама по себе это только пассивная совокупность инструкций, в то время как процесс — это непосредственное выполнение этих инструкций. Часто процессом называют выполняющуюся программу и все её элементы: адресное пространство, глобальные переменные, регистры, стек, открытые файлы и т. д. Контекст процесса Адресное пространство Содержимое аппаратных регистров Структуры данных ядра Адресное пространство – список адресов в памяти от некоторого минимума (обычно ноль) до некоторого максимума, которые процесс может прочесть и в которые может писать. Содержит саму программу, данные к ней и ее стек. (core image) Регистровый контент Счетчика команд, указывающего адрес следующей команды, которую будет выполнять центральный процессор; этот адрес является виртуальным адресом внутри пространства ядра или пространства задачи. Регистра состояния процессора (PS), который указывает аппаратный статус машины по отношению к процессу. Регистр PS, например, обычно содержит подполя, которые указывают, является ли результат последних вычислений нулевым, положительным или отрицательным, переполнен ли регистр с установкой бита переноса и т.д. Операции, влияющие на установку регистра PS, выполняются для отдельного процесса, потому-то в регистре PS и содержится аппаратный статус машины по отношению к процессу. В других имеющих важное значение подполях регистра PS указывается текущий уровень прерывания процессора, а также текущий и предыдущий режимы выполнения процесса (режим ядра/задачи). По значению подполя текущего режима выполнения процесса устанавливается, может ли процесс выполнять привилегированные команды и обращаться к адресному пространству ядра. Указателя вершины стека, в котором содержится адрес следующего элемента стека ядра или стека задачи, в соответствии с режимом выполнения процесса. В зависимости от архитектуры машины указатель вершины стека показывает на следующий свободный элемент стека или на последний используемый элемент. От архитектуры машины также зависит направление увеличения стека (к старшим или младшим адресам). Регистров общего назначения, в которых содержится информация, сгенерированная процессом во время его выполнения. Взаимодествие процесс-ядро. Системный контекст Запись в таблице процессов, описывающая состояние процесса и содержащая различную управляющую информацию, к которой ядро всегда может обратиться. Часть адресного пространства задачи, выделенная процессу, где хранится управляющая информация о процессе, доступная только в контексте процесса. Общие управляющие параметры, такие как приоритет процесса, хранятся в таблице процессов, поскольку обращение к ним должно производиться за пределами контекста процесса. . Если несколько процессов совместно используют общие области, Записи частнойвходят таблицысоставной областей процесса, общие таблицы областей страниц, эти области частью в контекст каждогои таблицы процесса, необходимые для преобразования виртуальных адресов в физические. + В задачи поскольку каждыйвходит процесс работаетучастков с этимивиртуального областямиадресного управления памятью идентификация независимо от других процессов. пространства процесса, не являющихся резидентными в памяти. Стек ядра, в котором хранятся записи процедур ядра, если процесс выполняется в режиме ядра. Несмотря на то, что все процессы пользуются одними и теми же программами ядра, каждый из них имеет свою собственную копию стека ядра для хранения индивидуальных обращений к функциям ядра. Ядро должно иметь возможность восстанавливать содержимое стека ядра и положение указателя вершины стека для того, чтобы возобновлять выполнение процессавврежиме режиме ядра. В различных системах стек ядра часто Когда процесс выполняется задачи, соответствующий располагается в пространстве процесса, однако этот стек является логически-независимым ему стекобразом, ядра пуст. и, таким может помещаться в самостоятельной области памяти. + Динамическая часть системного контекста процесса, состоящая из несколь ких уровней и имеющая вид стека, который освобождается от элементов в порядке, обратном порядку их поступления. На каждом уровне системного контекста содержится информация, необходимая для восстановления предыдущего уровня и включающая в себя регистровый контекст предыдущего уровня. Таблица процессов Управление процессом •Регистры •Счетчик команд •Указатель стека •Состояние процесса •Приоритет •Параметры планирования •Идентификатор процесса •Родительский процесс •Группа процесса •Время начала процесса •Использованное процессорное время Управление памятью •Указатель на текстовый сегмент •Указатель на сегмент данных •Указатель на сегмент стека Управление файлами •Корневой каталог •Рабочий каталог •Дескрипторы файла •Идентификатор пользователя •Идентификатор группы Модель процесса Один счетчик команд 4 счетчика команд A B A C D В каждый момент времени активен только 1 процесс C D B D C B A время Состояния процесса 1. Действие 1 2 Блокировка 3 2. Готовность 4 1. Работающий (в этот конкретный момент использующий процессор) 2. Готовый к работе (приостановлен что бы позволить работать другому процессу) 3. Заблокирован (ждет внешнего события) 3. 4. процесс блокируется ожидая ввода данных планировщик выбирает другой процесс планировщик выбирает этот процесс доступны входные данные Иерархия процессов Unix Windows Все процессы связаны Не существует иерархии Все процессы Один "родитель" и сколько угодно "детей" Единое дерево во главе init равноправны Родительский процесс имеет дескриптор, позволяющий контролировать дочерний процесс. (Дескриптор можно передать другому процессу) Пример иерархии Unix init bash ls -la grep sendmail pop smtp ls –ls | grep doc Потоки (thread, нити) Существуют только "внутри" процесса Служат для выполнения программ в одной концепции процесса Потоки Процесс 1 Процесс 2 Процесс 3 Процесс 1 Простр анство пользо вателя поток Ядро поток Ядро Таблица потока Элемент процесса Элемент потока 1. 2. 3. 4. 5. 1. 2. 3. 4. Адресное пространство Глобальные переменные Открытые файлы Дочерние процессы Необработанные аварийные сигналы 6. Сигналы и их обработчики 7. Информация об использовании ресурсов Счетчик команд Регистры Стек Состояние Реализация потоков Примеры Редактирование документов Веб сервер - кеширование Вопрос №2 Назовите понятие: «Заходя в ванную, Анна забыла взять с собой халат. Обычно она может выйти в комнату и в неодетом виде, но, пока она была в ванной, в гости зашёл Антон, которому Анна должна отдать флэшку, которая лежит у неё в сумочке. Сам Антон в сумочку лезть отказывается, и требует, чтобы флэшку отдала ему Анна. Без флэшки он не уйдёт. Анна не может выйти в комнату пока там Антон. Антон ждёт, пока ему отдадут флешку, Анна ждёт ухода Антона, после которого она может выйти и отдать флешку.»