Лекция
Привет, Вы узнаете о том , что такое диспетчер операционной системы , Разберем основные их виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое диспетчер операционной системы , настоятельно рекомендую прочитать все из категории Операционные системы и системное программировние.
Планирование выполнения задач — одна из ключевых концепций в многозадачности и многопроцессорности как в операционных системах общего назначения, так и в операционных системах реального времени. Планирование заключается в назначении приоритетов процессам в очереди с приоритетами. Программный код, выполняющий эту задачу, называется планировщиком (англ. task switcher, scheduler).
Самой важной целью планирования задач является наиболее полная загрузка процессора. Производительность — количество процессов, которые завершают выполнение за единицу времени. Время ожидания — время, которое процесс ожидает в очереди готовности. Время отклика — время, которое проходит от начала запроса до первого ответа на запрос.
В средах вычислений реального времени, например, на мобильных устройствах, предназначенных для автоматического управления в промышленности (например, робототехника), планировщик задач должен обеспечить отработку процессов в течение заданных временны́х промежутков (время отклика); это критично для поддержания корректной работы системы реального времени.
Операционные системы могут включать до трех различных типов планировщиков: долговременный планировщик (или планировщик разрешения выполнения), среднесрочный планировщик и краткосрочный планировщик (также известный как диспетчер). Сами названия уже описывают относительную частоту, с которой планировщик выполняет свои функции.
Долговременный планировщик решает, какие задачи или процессы будут добавлены в очередь процессов, готовых к выполнению; то есть, когда производится попытка запуска процесса, долговременный планировщик или добавляет новый процесс в очередь готовых процессов (допускает к выполнению), или откладывает это действие. Таким образом, долговременный планировщик решает, какие процессы будут выполняться одновременно, тем самым контролируя степень параллелизма и пропорцию между процессами, интенсивно выполняющими ввод-вывод, и процессами, интенсивно использующими процессор. Обычно в настольных компьютерах не применяется долговременный планировщик и новые процессы допускаются к выполнению автоматически. Но данный планировщик очень важен для систем реального времени, так как при чрезмерной нагрузке системы параллельно выполняющимися процессами время отклика системы может стать больше требуемого, что недопустимо.
Во всех системах с виртуальной памятью среднесрочный планировщик временно перемещает (выгружает) процессы из основной памяти во вторичную (например, на жесткий диск), и наоборот. Эти действия называются подкачкой или свопингом. Среднесрочный планировщик может принять решение выгрузить процесс из основной памяти если:
Процесс будет возвращен в основную память, когда будет доступно необходимое количество свободной памяти или когда процесс выйдет из режима ожидания (в этом случае планировщик выгрузит из основной памяти другой процесс для освобождения основной памяти).
Во многих современных системах, поддерживающих отображение виртуального адресного пространства на вторичную память, отличную от файла подкачки, среднесрочный планировщик может одновременно играть роль и долговременного планировщика, рассматривая новые процессы как процессы, которые были выгружены из основной памяти. Таким образом система может подгружать в основную память программный код только тогда, когда он понадобится процессу для выполнения (это называется загрузкой по требованию или «ленивой загрузкой»).
Планировщик на этом уровне решает, какие из готовых и загруженных в память процессов будут запущены на ЦПУ после прерывания (по времени, операции ввода-вывода, вызову операционной системы или другому сигналу). Решения на этом уровне приходится принимать очень часто (как минимум, каждый временной отрезок). Также планировщик может поддерживать или не поддерживать вытесняющую многозадачность (то есть иметь возможность прервать исполнение какого-либо процесса).
Диспетчер — это еще один компонент системы планирования. Это модуль, который передает управление процессором тому процессу, который был выбран на уровне кратковременного планирования. Об этом говорит сайт https://intellect.icu . В его задачи входит переключение контекста, переключение в пользовательский режим и прыжок к нужному месту пользовательской программы, чтобы начать или продолжить ее исполнение. Главное требование к диспетчеру — это быстродействие, поскольку он осуществляет каждое переключение процессов.
Диспетчер процессов — модуль операционной системы, занимающийся решением задачи диспетчеризации, то есть изменением состояния процессов при наступлении определенных событий в соответствии с заданными правилами.
Для того чтобы управление процессами было возможным, каждому процессу присваивается индивидуальный номер — идентификатор процесса. Вся информация, характеризующая процесс, помещается в специально отведенной области памяти, называемой блоком управления процессом (PCB, Process Control Block), рис. 1.
Рис. 1.
В состав PCB входят следующие данные:
Для каждого процесса формируется свой PCB (этим занимается операционная система), все PCB размещаются в памяти в виде таблицы (рис. 2).
Рис. 2.
Таким образом, зная местоположение таблицы PCB (адрес первого блока), операционная система может получить доступ к информации о любом процессе. Каждый процесс определяется своим блоком PCB.
Диспетчер процессов представляет собой программу (процесс), входящую в состав операционной системы. В распоряжении диспетчера имеется информация обо всех процессах, существующих в системе в данный момент (рис. 3).
Рис. 3.
Список процессов, находящихся в состоянии готовности, содержит перечень идентификаторов процессов, ожидающих выполнения на процессоре и имеющих в своем распоряжении все необходимые ресурсы для этого.
Список заблокированных процессов содержит идентификаторы процессов, ожидающих выделения им какого-либо ресурса.
Список событий содержит информацию о событиях, которые связаны с занятием или освобождением ресурсов в системе. Наступление таких событий может повлиять на переход процесса из состояния блокировки в состояние готовности. Примером такого события может служить получение сигнала готовности от ведомого устройства в случае асинхронного обмена.
Диспетчер активизируется таймером через заданные промежутки времени (рис. 4).
Рис. 4.
При каждой активизации диспетчер выполняет следующие действия:
Такие действия диспетчера получили названия планирования процессов. Так как диспетчер вызывается с интервалом , с таким же интервалом происходит перепланирование процессов. Следовательно, каждому процессу отводится интервал времени для выполнения, после чего он переводится в состояние готовности, а активным становится другой процесс. Интервал часто называют квантом процессора. Величина кванта процессора определяется аппаратными настройками вычислительной системы (таймера). Как правило, она составляет несколько десятых долей секунды.
Процессы относятся к асинхронным, если скорости исполнения любой части процесса не взаимосвязаны друг с другом и с другими процессами. Другими словами, если есть два асинхронных процесса, и в каждом из них мы выделим определенную группу команд, нельзя сказать заранее, какой процесс выполнит "свою" выделенную группу раньше. Такая ситуация вызвана тем, что время работы асинхронного процесса нельзя точно определить так как он может содержать в себе задержки, время которых не поддается точной оценке. Например, если процесс выполняет обмен с асинхронным устройством, и устройство не готово, возникает задержка до готовности устройства, и длительность этой задержки заранее не известна.
Задача синхронизации асинхронных процессов возникает в следующих случаях:
· Если процессы обращаются к одному ресурсу, который является неразделяемым и может быть использован только одним процессом в данный момент времени. В этом случае, после начала обращения к ресурсу одним процессом, необходимо не допустить обращения к этому ресурсу со стороны других процессов.
· Задача организации строгой последовательности обращения процессов к общему ресурсу. Например, два процесса используют общую область памяти для обмена данными, причем один процесс выполняет запись данных в эту область, а второй — чтение. В этом случае задача недопущения одновременного обращения процессов к ресурсу дополняется задачей организации строгой последовательности доступа к нему: сначала обращается "пишущий" процесс, потом "читающий" и т.д.
Задача синхронизации предусматривает, что если один асинхронный процесс начал выполнение некоей группы команд (работа с ресурсом), другой асинхронный процесс не должен начинать выполнение своей группы команд, работающих с этим же ресурсом. Такая группа команд, выполнение которой должно быть синхронизировано с другими процессами, называется критическим участком (критическим блоком).
Если процесс 1 начал выполнение своего критического участка (КУ), процесс 2 не должен начинать выполнение своего КУ до завершения первым процессом выполнения КУ. Такая ситуация получила название задачи взаимоисключения.
Самый простой путь решения задачи взаимоисключения — после начала выполнения процессом КУ запретить активизацию другого, конкурирующего процесса. То есть запретить передиспетчеризацию процессов, например, запретив прерывания в системе. Кстати говоря, нечто подобное уже рассматривалось нами при знакомстве с организацией прерываний — программа имела возможность запретить обработку прерываний на время выполнения некоего участка кода, выполнение которого не может быть прервано.
Однако этот путь имеет большой недостаток. Дело в том, что время, необходимое для выполнения КУ процессом неизвестно. Вообще говоря, оно может быть достаточно большим. И если на это время запретить диспетчеризацию в системе, все остальные процессы (включая саму ОС) будут блокированы на неопределенное время. Такой подход не может быть признан корректным.
Следовательно, необходимо создание более гибких механизмов синхронизации. Попробуем познакомиться с такими механизмами на нескольких примерах. Сделаем следующие допущения:
В приведенных ниже примерах конструкция
Par_begin Proc1; Proc2;Par_end;
означает, что процедуры Proc1 и Proc2 выполняются в двух параллельных потоках, принадлежащих двум асинхронным процессам.
В заключение, эта статья об диспетчер операционной системы подчеркивает важность того что вы тут, расширяете ваше сознание, знания, навыки и умения. Надеюсь, что теперь ты понял что такое диспетчер операционной системы и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Операционные системы и системное программировние
Комментарии
Оставить комментарий
Операционные системы и системное программировние
Термины: Операционные системы и системное программировние