- •3. Управление процессами
- •3.1. Описание процессов (Лекция 5)
- •3.1.1. Причины создания и завершения, описание процессов, модели с двумя и пятью состояниями
- •3.1.1.1. Процессы, причины создания и завершения
- •3.1.1.2. Модель с двумя состояниями
- •3.1.1.3. Модель с пятью состояниями
- •3.1.2. Блокированные и приостановленные процессы. Модели с шестью и семью состояниями
- •3.1.2.1. Модель с шестью состояниями
- •3.1.2.2. Модель с семью состояниями
- •3.1.3. Управляющие структуры ос для процессов и ресурсов
- •3.1.3.1. Основные виды системных таблиц. Сегментация виртуального адресного пространства процесса
- •3.1.3.2. Элементы управляющего блока процесса. Структура контекста процесса
- •3.2. Управление процессами (Лекция 6)
- •3.2.1. Действия ос по управлению процессами, способы выполнения системных процессов
- •3.2.1.1. Создание процесса
- •3.2.1.2. Переключение процессов
- •3.2.1.3. Выполнение кода ос
- •3.3. Способы реализации мультипрограммирования. Потоки, многопроцессорные системы (Лекция 7)
- •3.3.1. Многозадачность на основе потоков
- •3.3.1.1. Описание потоков
- •3.3.1.2. Функциональность потоков
- •3.3.1.3. Организация многопоточной обработки запросов в модели "клиент-сервер"
- •3.3.2. Потоки и проблема глобальных переменных. Типы реализации потоков.
- •3.3.2.1. Потоки и проблема глобальных переменных
- •3.3.2.2. Пользовательские потоки
- •3.3.2.3. Потоки ядра
- •3.3.2.4. Мультиплексирование потоков ядра пользовательскими потоками
- •3.3.3. Параллельность, обеспечиваемая средствами языка
- •3.3.3.1. Параллельность, обеспечиваемая средствами последовательного языка
- •3.3.3.2. Сопрограммы
- •3.3.3.3. "Процессы"
- •3.3.4. Мультипроцессорные системы
- •3.3.4.1. Введение
- •3.3.4.2. Архитектура мультипроцессоров
- •3.3.4.3. Типы мультипроцессорных ос
3. Управление процессами
3.1. Описание процессов (Лекция 5)
3.1.1. Причины создания и завершения, описание процессов, модели с двумя и пятью состояниями
3.1.1.1. Процессы, причины создания и завершения
Ключевое понятие ОС – процесс. Процессом часто называют программу в момент выполнения. С каждым процессом связывается его адресное пространство – список адресов в памяти от некоторого минимума до некоторого максимума, которые процесс может прочесть и в которые он может писать. Адресное пространство содержит саму программу, данные к ней и стек. Со всяким процессом связывается набор регистров, включая счетчик команд, указатель стека и другая информация, необходимая для запуска программы.
Управление процессами – основная задача любой ОС. ОС может не поддерживать файловую систему, внешние устройства, не быть сетевой и т.п., но без возможности выполнения программ теряет смысл. Управление выполнением программ даже в однозадачной системе не является тривиальным. Программа требует загрузки, запуска, осуществления системных вызовов, завершения.
В многозадачной системе добавляются сложности с параллельным (кажущимся или фактическим) выполнением. В современных ОС вводится также понятие потока, что добавляет еще один уровень иерархии.
Процесс – это не просто набор команд процессора, составляющих в совокупности программу. В то же время, для вычислительной системы любая деятельность может быть описана последовательностью машинных команд с необходимыми адресами операндов. Для такой последовательности существует специальный термин след (trace), траектория. Построить след программы не тривиально.
Существуют 4 события, приводящие к созданию процесса:
- новое задание в пакетном или интерактивном режиме.
- вход нового пользователя в многопользовательскую систему.
- создание процесса ОС для работы системных служб (например, для обслуживания печати в фоновом режиме).
- порождение одного процесса другим. Это называется spawning(spawning– метать икру, размножаться).В этом случае порождающий процесс называется родительским или предком (parent), а порождаемый – дочерним или потомком (child). Обычно родственные процессы обмениваются информацией и взаимодействуют.
С завершением процесса связано дополнительное обстоятельство: ОС должна знать, закончилось ли выполнение процесса.
Действительно, любая программа имеет точку выхода, если только она не была некорректно написана или не является зацикленной по принципу назначения.
Причины завершения процессов:
По запросу самого процесса.
Превышение лимита отведенного времени.
Недостаток памяти для выполнения.
Нарушение защиты памяти.
Ошибка обращения к недоступному ресурсу.
Арифметическая ошибка.
Излишнее ожидание. Процесс слишком долго ждет наступления какого-либо события.
Ошибка ввода/вывода.
Неверная машинная команда.
Команда с недоступными привилегиями.
Неправильное использование данных, особенно при системных вызовах.
Вмешательство оператора или самой ОС.
Завершение родительского процесса может автоматически завершать все дочерние.
Запрос со стороны родительского процесса на прекращение дочернего.
3.1.1.2. Модель с двумя состояниями
След является слишком детальной и плохо применимой на практике моделью процесса. Для практического управления процессом не столь важно, какие именно команды и в какой последовательности выполняются. Интересует, выполняются ли команды из указанного блока памяти. Таким образом, в самом простом случае модель процесса предполагает наличие двух состояний (см. рис. 1).
Рис.1
В этой модели присутствуют создание и завершение процессов (см. п. 3.1.1.1).