
- •Понятия процесса и потока. Классификация процессов. Создание процессов и потоков. Планирование процессов и потоков. Типы планирования процессора. Тупики. Методы взаимодействия процессов
- •Понятия процесс и поток
- •Классификация процессов
- •Создание процессов и потоков
- •Создание процесса
- •Завершение процесса
- •Многократные операции над процессами
- •Переключение контекста процесса
- •Иерархия процессов
- •Состояние процессов
- •Планирование процессов и потоков
- •Диспетчеризация процессов. Стратегии диспетчеризации процессов
- •Планирование и диспетчеризация потоков
- •Состояния потока
- •Вытесняющие и не вытесняющие алгоритмы планирования
- •Алгоритмы планирования, основанные на квантовании
- •Алгоритмы планирования, основанные на приоритетах
- •Смешанные алгоритмы планирования
- •Планирование в системах реального времени
- •Моменты перепланировки
- •Типы планирования процессора
- •2. Предотвращение тупиков за счет нарушения условий их возникновения.
- •Методы взаимодействия процессов
- •Независимые и взаимодействующие процессы
- •Виды организации взаимосвязи процессов
- •Коммуникация процессов
- •Непосредственная коммуникация процессов
- •Косвенная коммуникация процессов
- •Клиент-серверная взаимосвязь
Переключение контекста процесса
До сих пор мы рассматривали операции над процессами изолированно, независимо друг от друга. В действительности же деятельность мультипрограммной операционной системы состоит из цепочек операций, выполняемых над различными процессами, и сопровождается переключением процессора с одного процесса на другой. Для корректного переключения процессора с одного процесса на другой необходимо сохранить контекст исполнявшегося процесса и восстановить контекст процесса, на который будет переключен процессор. Такая процедура сохранения/восстановления работоспособности процессов называется переключением контекста. Время, затраченное на переключение контекста, не используется вычислительной системой для совершения полезной работы и представляет собой накладные расходы, снижающие производительность системы. Оно меняется от машины к машине и обычно колеблется в диапазоне от 1 до 1000 микросекунд. Существенно сократить накладные расходы в современных операционных системах позволяет расширенная модель процессов, включающая в себя понятие threads of execution (нити исполнения или просто нити).
Иерархия процессов
В UNIX системах заложена жесткая иерархия процессов. Каждый новый процесс, созданный системным вызовом, является дочерним к предыдущему процессу. Дочернему процессу достаются от родительского процесса переменные, регистры и т.п. Как только родительские данные скопированы, последующие изменения в одном из процессов не влияют на другой, но процессы помнят о том, кто является родительским. В таком случае в UNIX существует и прародитель всех процессов - процесс init.
Рис. 5.1. Дерево процессов для систем UNIX
В Windows не существует понятия иерархии процессов. Хотя можно задать специальный маркер родительскому процессу, позволяющий контролировать дочерний процесс.
Состояние процессов
При исполнении процесс может изменять свое состояние следующим образом:
новый (new) - процесс создается операционной системой, но еще не начал выполняться;
исполняемый (running) - исполняются команды процесса на процессоре или процессорах компьютерной системы под управлением операционной системы;
ожидающий (waiting) - процесс ожидает наступления некоторого события, например, завершения ввода-вывода. В состоянии ожидания процесс не занимает процессор;
готовый к выполнению (ready) - процесс ожидает получения ресурсов процессора для его исполнения. В состояние готовности к выполнению процесс попадает обычно либо при его создании, либо после завершения ввода-вывода (из состояния ожидания);
завершенный (terminated) - исполнение процесса завершено.
Рис.5.2. Возможные переходы между состояниями.
На серверах для ускорения ответа на запрос клиента, часто загружают несколько процессов в режим ожидания. Как только сервер получит запрос, процесс переходит из состояния ожидания в состояние выполнения. Этот переход выполняется намного быстрее, чем запуск нового процесса.