Читайте также:
|
|
По генеалогическому признаку – порождающие (родители) и порожденные (дети).
По принадлежности к ОС – системные и пользовательские.
По месту выполнения – внутренние (на CPU) и внешние (на внешних процессорах).
По связанности – взаимосвязанные, изолированные, взаимодействующие (имеют общие структуры данных), конкурирующие.
За время существования процесс многократно меняет свое состояние. Различают следующие состояния процесса:
· Новый (процесс только что создан)
· Выполняемый (команды программы выполняются в CPU)
· Ожидающий (процесс ожидает завершения некоторого события, чаще всего операции ввода-вывода)
· Готовый (процесс ожидает освобождения CPU)
· Завершенный (процесс выполнился)
Переход из одного состояния в другое не может быть выполнен произвольно. Он происходит в соответствии с таблицей управления процессом (PCB = Process Control Block). В этой таблице процесс описывается набором значений, параметров, характеризующих его текущее состояние и используемых ОС для управления прохождением процесса через компьютер.
В зависимости от состояния процесса ему должен быть предоставлен какой-либо ресурс.
Содержимое регистров процессора, а также код и данные в адресном пространстве процесса называются контекстом процесса, который переключается на CPU при смене выполняемой им задачи.
В зависимости от того, является ли процесс родителем или ребенком, он может получить отдельные ресурсы или использовать родительские. Для запуска новой программы в Unix сначала содеется копию процесса-родителя, а затем процесс-ребенок должен заменить свой контекст, чтобы стать родителем. Помимо такого способа Windows NT также поддерживает загрузку процесса-ребенка новой программой из какого-либо файла.
При смерти процесса-родителя в Unix ребенок сиротеет, но не умирает. Его усыновляет один из системных процессов.
Планирование процессов
Распределение процессов между имеющимися ресурсами называется планированием процессов.
Для эффективной загрузки ресурсов процессы объединяют в очереди. Новые процессы находятся во входной очереди (очередь заданий). Она располагается во внешней памяти. Там процессы ожидают освобождения адресного пространства оперативной памяти.
Готовые к выполнению процессы располагаются в оперативной памяти в очереди готовых процессов. Там они ожидают освобождения процессорного времени.
Ожидающий ввода-вывода процесс находится в одной из очередей к оборудованию ввода-вывода.
При прохождении через компьютер процесс мигрирует между очередями под управлением программы- планировщика (scheduler). В ОС с мультипрограммированием обычно имеется 2 планировщика – краткосрочный и долгосрочный.
Краткосрочный планировщик решает, какой из процессов в очереди готовых процессов должен быть передан на выполнение в CPU. Долгосрочный планировщик решает, какой из процессов во входной очереди должен быть переведен в очередь готовых процессов в случае освобождения памяти.
Основное различие между ними заключается в частоте запуска: краткосрочный запускается раз в 100 мс, а долгосрочный – раз в несколько минут.
В некоторых ОС долгосрочный планировщик отсутствует. Например, в системах с разделением времени (time-sharing system) каждый новый процесс сразу помещается в оперативную память!
Существует множество алгоритмов работы краткосрочного планировщика.
1. FCFS = First Come First Served (первый пришел, первый обслужился). Это наиболее простая стратегия. Время ожидания для процессов здесь сильно зависит от порядка поступления в очередь готовых процессов. Если имеется несколько маленьких процессов и один большой, то возникает «эффект конвоя».
2. SJF = Shortest Job First (Наиболее короткое задание выполняется первым). Предназначено для борьбы с «эффектом конвоя». Снижает время ожидания в очереди. Основная трудность – в определении заранее длины процесса. Как правило, применяется в долгосрочных планировщиках, обслуживающих пакетный режим. В этом случае, программист перед отправлением задания в пакет должен указать макс. время выполнения задания.
3. Приоритетное планирование. Каждому процессу приписывается приоритет – целое положительное число, - определяющее очередность предоставления ему CPU. Приоритет зависит от требований процесса к памяти, кол-ва открытых файлов, времени ввода-вывода процесса, его важности (какой модуль ОС его запустил).
4. RR = Round Robin («Карусельная» стратегия). Применяется в системах разделения времени. Св-ва стратегии сильно зависят от величины выделяемого каждому процессу кванта времени tk, очередь готовых процессов рассматривается как кольцевая. Новые процессы добавляются в хвост очереди. Если процесс не завершился в выделенный ему квант времени, то его работа принудительно прерывается, и он перемещается в хвост очереди.
5. Multilevel queue scheduling (Планирование с использование многоуровневой очереди). Разработана для ситуации, когда процессы можно легко разбить на несколько групп (например, интерактивные и фоновые - пакетные). В каждой из очередей находится процессы с одинаковыми свойствами, а каждая отдельная очередь может иметь свою стратегию планирования. Ни один процесс с более низким приоритетом не может быть запущен, пока не выполнятся процессы во всех очередях в более высокими приоритетами.
6. Multilevel feedback queue scheduling (Планирование с использование многоуровневой очереди с обратными связями). Стратегия предполагает, что процессы могут перемещаться между очередями. Она является универсальной и сочетает в себе св-ва всех рассмотренных ранее стратегий.
Дата добавления: 2014-12-20; просмотров: 26 | Поможем написать вашу работу | Нарушение авторских прав |