Процессы и их поддержка в ОС
Процесс – динамический объект над которым ОС выполняет определенные действия.
Понятие процесса.
Программа в процессе исполнения является динамически активным объектом. При выполнении программы может меняться количество внешних устройств. Понятие процесса характеризует некую совокупность набора исполняющихся команд, ассоциированных с ними ресурсов (выделенная память, закрепленные за программой файлы и периферийные устройства) и текущего момента его исполнения (значение регистров, программного счетчика, состояния стека и значения переменных), находящегося под управлением ОС.
Состояние процесса.
Все организовано как набор процессов. В однопроцессорной системе в каждый момент времени может работать только один процессор. Для мультипрограммных систем мультипроцессная обработка достигается за счет переключения процессора с одного процесса на другой.
Завершение работы |
Ожидание событий |
Запуск |
Допуск к планированию |
Ожидание |
Исполнение |
Готовность |
Рождение |
Закончить исполнение |
Прерывание |
При рождении процесс получает адресное пространство (память), куда загружается код или часть кода задач. Выделяется стек процессу, выделяются системные ресурсы, устанавливается начальное значение программного счетчика. ОС, пользуясь алгоритмом планирования, выбирает один из очереди готовых процессов и переводил его в состояние исполнение. Покинуть состояние исполнения можно по следующим причинам:
· Процесс закончил свою деятельность;
· Процесс не может продолжить работу в ожидании некоторого события;
· Возникновение прерывания в вычислительной системе.
Операции над процессами и связанные с ними понятия
Набор операций.
Процесс из состояния в состояние переводит ОС. Переход из состояния в состояние удобно объединить в пары:
1. Рождение процесса – завершение процесса;
2. Приостановка процесса (перевод из состояния исполнения в состояние готовности) – запуск процесса (перевод из состояния готовности в состояние исполнения);
3. Блокирование процесса (перевод из состояния исполнения в состояние ожидания) – разблокирование процесса (перевод из состояния ожидания в состояние готовности)
Процесс Control Block и контекст процесса.
Каждый процесс представлен в ОС некой структурой данных. В этой структуре хранится информация, характеризующая процесс:
· Состояние, в котором находится процесс;
· Программный счетчик процесса (адрес команды, которая д/б выполнена следующей);
· Содержимое регистров процесса;
· Данные, необходимые для планирования использования процессора и управления памятью (приоритет процессов, размер и расположение адресного пространства);
· Учетные данные (идентификационные номера; имя пользователя, котороый инициировал работу; общее время использования процессора текущим процессом)
· Информация о переферийных устройствах, связанные с процессом;
· Таблица открытых файлов.
Для любого процесса, находящегося в ВС, вся информация хранится в PCB и доступна ОС. Любая операция, которая производится над процессом, отражается в PCB. Информацию, хранящуюся в PCB удобно разделять на две части:
· Содержимое регистров процессора (содержание счетчика команд) – регистровый контекст;
· Системный контекст;
· Иногда: пользовательский контекст – совокупность данных, находящихся в адресном пространстве.
Совокупность всех видов контекста называют контекст процессора.
Одноразовые операции.
Процесс появляется в системе через его рождение. Активное участие в рождении процесса принимает ОС. В самых простых ОС все процессы рождаются в момент запуска ОС. Более сложные ОС создают процесс во время работы ВС, т.е. создают динамический процесс. Инициатором рождения процесса может быть:
1. Процесс пользователя, который совершил специальный/системный вызов
2. Сама ОС;
Процесс, который породил другой процесс, называется родительским процессом (parent process). В результате получается генеалогическое дерево процессов. Для своей работы порожденный процесс требует выделения ресурсов: памяти, файлов, переферийных устройств. Ресурсы выделяются по разному. В первом случае часть ресурсов родителя передается потомку, во втором случае выделяются ресурсы из запасов ОС. После наделения порожденного процесса ресурсами в его адресное пространство записывается программный код, значение данных и устанавливается программный счетчик. В итоге:
1. Порожденный процесс становится дубликатом процесса-родителя
2. Процесс-ребенок загружается из файла
Когда процесс завершает работу ОС переводит его в состояние завершения => освобождает ресурсы.