Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

Диспетчер операционной системы

Лекция



Привет, Вы узнаете о том , что такое диспетчер операционной системы , Разберем основные их виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое диспетчер операционной системы , настоятельно рекомендую прочитать все из категории Операционные системы и системное программировние.

Планирование выполнения задач — одна из ключевых концепций в многозадачности и многопроцессорности как в операционных системах общего назначения, так и в операционных системах реального времени. Планирование заключается в назначении приоритетов процессам в очереди с приоритетами. Программный код, выполняющий эту задачу, называется планировщиком (англ. task switcher, scheduler).

Самой важной целью планирования задач является наиболее полная загрузка процессора. Производительность — количество процессов, которые завершают выполнение за единицу времени. Время ожидания — время, которое процесс ожидает в очереди готовности. Время отклика — время, которое проходит от начала запроса до первого ответа на запрос.

В средах вычислений реального времени, например, на мобильных устройствах, предназначенных для автоматического управления в промышленности (например, робототехника), планировщик задач должен обеспечить отработку процессов в течение заданных временны́х промежутков (время отклика); это критично для поддержания корректной работы системы реального времени.

Типы планировщиков в операционных системах

Операционные системы могут включать до трех различных типов планировщиков: долговременный планировщик (или планировщик разрешения выполнения), среднесрочный планировщик и краткосрочный планировщик (также известный как диспетчер). Сами названия уже описывают относительную частоту, с которой планировщик выполняет свои функции.

Долговременный планировщик

Долговременный планировщик решает, какие задачи или процессы будут добавлены в очередь процессов, готовых к выполнению; то есть, когда производится попытка запуска процесса, долговременный планировщик или добавляет новый процесс в очередь готовых процессов (допускает к выполнению), или откладывает это действие. Таким образом, долговременный планировщик решает, какие процессы будут выполняться одновременно, тем самым контролируя степень параллелизма и пропорцию между процессами, интенсивно выполняющими ввод-вывод, и процессами, интенсивно использующими процессор. Обычно в настольных компьютерах не применяется долговременный планировщик и новые процессы допускаются к выполнению автоматически. Но данный планировщик очень важен для систем реального времени, так как при чрезмерной нагрузке системы параллельно выполняющимися процессами время отклика системы может стать больше требуемого, что недопустимо.

Среднесрочный планировщик

Во всех системах с виртуальной памятью среднесрочный планировщик временно перемещает (выгружает) процессы из основной памяти во вторичную (например, на жесткий диск), и наоборот. Эти действия называются подкачкой или свопингом. Среднесрочный планировщик может принять решение выгрузить процесс из основной памяти если:

  • процесс был неактивен некоторое время;
  • процесс имеет низкий приоритет;
  • процесс часто вызывает ошибки страниц (page fault);
  • процесс занимает большое количество основной памяти, а системе требуется свободная память для других целей (например, чтобы удовлетворить запрос выделения памяти для другого процесса).

Процесс будет возвращен в основную память, когда будет доступно необходимое количество свободной памяти или когда процесс выйдет из режима ожидания (в этом случае планировщик выгрузит из основной памяти другой процесс для освобождения основной памяти).

Во многих современных системах, поддерживающих отображение виртуального адресного пространства на вторичную память, отличную от файла подкачки, среднесрочный планировщик может одновременно играть роль и долговременного планировщика, рассматривая новые процессы как процессы, которые были выгружены из основной памяти. Таким образом система может подгружать в основную память программный код только тогда, когда он понадобится процессу для выполнения (это называется загрузкой по требованию или «ленивой загрузкой»).

Краткосрочный планировщик

Планировщик на этом уровне решает, какие из готовых и загруженных в память процессов будут запущены на ЦПУ после прерывания (по времени, операции ввода-вывода, вызову операционной системы или другому сигналу). Решения на этом уровне приходится принимать очень часто (как минимум, каждый временной отрезок). Также планировщик может поддерживать или не поддерживать вытесняющую многозадачность (то есть иметь возможность прервать исполнение какого-либо процесса).

Диспетчер

Диспетчер — это еще один компонент системы планирования. Это модуль, который передает управление процессором тому процессу, который был выбран на уровне кратковременного планирования. Об этом говорит сайт https://intellect.icu . В его задачи входит переключение контекста, переключение в пользовательский режим и прыжок к нужному месту пользовательской программы, чтобы начать или продолжить ее исполнение. Главное требование к диспетчеру — это быстродействие, поскольку он осуществляет каждое переключение процессов.

Диспетчер процессов — модуль операционной системы, занимающийся решением задачи диспетчеризации, то есть изменением состояния процессов при наступлении определенных событий в соответствии с заданными правилами.

Для того чтобы управление процессами было возможным, каждому процессу присваивается индивидуальный номер — идентификатор процесса. Вся информация, характеризующая процесс, помещается в специально отведенной области памяти, называемой блоком управления процессом (PCB, Process Control Block), рис. 1.

Диспетчер операционной системы

Рис. 1.

В состав PCB входят следующие данные:

  • идентификатор процесса;
  • состояние процесса;
  • список ресурсов, выделенных процессу;
  • другие данные, характеризующие процесс (адрес текущей команды, копия содержимого регистров процессора и т.п.).

Для каждого процесса формируется свой PCB (этим занимается операционная система), все PCB размещаются в памяти в виде таблицы (рис. 2).

Диспетчер операционной системы

Рис. 2.

Таким образом, зная местоположение таблицы PCB (адрес первого блока), операционная система может получить доступ к информации о любом процессе. Каждый процесс определяется своим блоком PCB.

Диспетчер процессов представляет собой программу (процесс), входящую в состав операционной системы. В распоряжении диспетчера имеется информация обо всех процессах, существующих в системе в данный момент (рис. 3).

Диспетчер операционной системы

Рис. 3.

Список процессов, находящихся в состоянии готовности, содержит перечень идентификаторов процессов, ожидающих выполнения на процессоре и имеющих в своем распоряжении все необходимые ресурсы для этого.

Список заблокированных процессов содержит идентификаторы процессов, ожидающих выделения им какого-либо ресурса.

Список событий содержит информацию о событиях, которые связаны с занятием или освобождением ресурсов в системе. Наступление таких событий может повлиять на переход процесса из состояния блокировки в состояние готовности. Примером такого события может служить получение сигнала готовности от ведомого устройства в случае асинхронного обмена.


Диспетчер активизируется таймером через заданные промежутки времени Диспетчер операционной системы (рис. 4).

Диспетчер операционной системы

Рис. 4.

При каждой активизации диспетчер выполняет следующие действия:

  1. Перевод процессов из состояния блокировки в состояние готовности. Диспетчер анализирует список событий и определяет, какой из процессов можно перевести из состояния блокировки в состояние готовности в соответствии с каждым событием. Каждое событие связано с освобождением или занятием некоторого ресурса и при его наступлении процесс, ожидающий предоставления этого ресурса, может быть переведен в состояние готовности, если необходимый ему ресурс освободился. Если несколько процессов находятся в ожидании одного и того же ресурса, применяется схема приоритетов, позволяющая выбрать из конкурирующих процессов процесс с наивысшим приоритетом и перевести в состояние готовности именно его. Например, если один из заблокированных процессов ожидает сигнала готовности от ведомого устройства (случай асинхронного обмена), при обнаружении события поступления этого сигнала в списке событий диспетчер переводит этот процесс в состояние готовности. Перевод в состояние готовности заключается в то, что:
    • Изменяется состояние процесса в PCB этого процесса (с L на R).
    • Идентификатор этого процесса изымается из списка заблокированных процессов и помещается в список процессов, находящихся в состоянии готовности.
  2. Перевод процессов из состояния готовности в активное состояние. Для всех процессов, находящихся в состоянии готовности, определяется приоритет. Процесс с максимальным приоритетом переводится в активное состояние (начинает выполняться на процессоре). Процесс, бывший до этого активным, переводится в состояние готовности и помещается в список готовых процессов. Определение приоритетов процессов происходит в соответствии с одной из типовых схем, например наибольший приоритет получает процесс, дольше всего находившийся в состоянии готовности (дольше всего не исполнявшийся) или использовавший суммарно наименьшее количество процессорного времени. Перевод процесса в активное состояние заключатся в следующем:
    • Изменяется состояние процесса в PCB этого процесса (с R на A).
    • Идентификатор этого процесса изымается из списка процессов, находящихся в состоянии готовности.

Такие действия диспетчера получили названия планирования процессов. Так как диспетчер вызывается с интервалом Диспетчер операционной системы , с таким же интервалом происходит перепланирование процессов. Следовательно, каждому процессу отводится интервал времени Диспетчер операционной системы для выполнения, после чего он переводится в состояние готовности, а активным становится другой процесс. Интервал Диспетчер операционной системы часто называют квантом процессора. Величина кванта процессора определяется аппаратными настройками вычислительной системы (таймера). Как правило, она составляет несколько десятых долей секунды.

Понятие асинхронных процессов

Процессы относятся к асинхронным, если скорости исполнения любой части процесса не взаимосвязаны друг с другом и с другими процессами. Другими словами, если есть два асинхронных процесса, и в каждом из них мы выделим определенную группу команд, нельзя сказать заранее, какой процесс выполнит "свою" выделенную группу раньше. Такая ситуация вызвана тем, что время работы асинхронного процесса нельзя точно определить так как он может содержать в себе задержки, время которых не поддается точной оценке. Например, если процесс выполняет обмен с асинхронным устройством, и устройство не готово, возникает задержка до готовности устройства, и длительность этой задержки заранее не известна.

Задача синхронизации асинхронных процессов возникает в следующих случаях:

· Если процессы обращаются к одному ресурсу, который является неразделяемым и может быть использован только одним процессом в данный момент времени. В этом случае, после начала обращения к ресурсу одним процессом, необходимо не допустить обращения к этому ресурсу со стороны других процессов.

· Задача организации строгой последовательности обращения процессов к общему ресурсу. Например, два процесса используют общую область памяти для обмена данными, причем один процесс выполняет запись данных в эту область, а второй — чтение. В этом случае задача недопущения одновременного обращения процессов к ресурсу дополняется задачей организации строгой последовательности доступа к нему: сначала обращается "пишущий" процесс, потом "читающий" и т.д.

Решение задачи синхронизации

Задача синхронизации предусматривает, что если один асинхронный процесс начал выполнение некоей группы команд (работа с ресурсом), другой асинхронный процесс не должен начинать выполнение своей группы команд, работающих с этим же ресурсом. Такая группа команд, выполнение которой должно быть синхронизировано с другими процессами, называется критическим участком (критическим блоком).

Если процесс 1 начал выполнение своего критического участка (КУ), процесс 2 не должен начинать выполнение своего КУ до завершения первым процессом выполнения КУ. Такая ситуация получила название задачи взаимоисключения.

Самый простой путь решения задачи взаимоисключения — после начала выполнения процессом КУ запретить активизацию другого, конкурирующего процесса. То есть запретить передиспетчеризацию процессов, например, запретив прерывания в системе. Кстати говоря, нечто подобное уже рассматривалось нами при знакомстве с организацией прерываний — программа имела возможность запретить обработку прерываний на время выполнения некоего участка кода, выполнение которого не может быть прервано.

Однако этот путь имеет большой недостаток. Дело в том, что время, необходимое для выполнения КУ процессом неизвестно. Вообще говоря, оно может быть достаточно большим. И если на это время запретить диспетчеризацию в системе, все остальные процессы (включая саму ОС) будут блокированы на неопределенное время. Такой подход не может быть признан корректным.

Следовательно, необходимо создание более гибких механизмов синхронизации. Попробуем познакомиться с такими механизмами на нескольких примерах. Сделаем следующие допущения:

  • будем рассматривать случай двух конкурирующих процессов;
  • будем считать, что асинхронные процессы существуют одновременно (являются параллельными);
  • будем использовать для написания примеров язык Pascal.

В приведенных ниже примерах конструкция

Par_begin Proc1; Proc2;Par_end;

означает, что процедуры Proc1 и Proc2 выполняются в двух параллельных потоках, принадлежащих двум асинхронным процессам.

Вау!! 😲 Ты еще не читал? Это зря!

  • ULE
  • Brain Fuck Scheduler — планировщик задач в ядре Linux
  • SCHED DEADLINE — реализация планировщика задач по ближайшему времени завершения в ядре Linux

В заключение, эта статья об диспетчер операционной системы подчеркивает важность того что вы тут, расширяете ваше сознание, знания, навыки и умения. Надеюсь, что теперь ты понял что такое диспетчер операционной системы и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Операционные системы и системное программировние

создано: 2016-03-30
обновлено: 2021-04-19
132403



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей



Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Операционные системы и системное программировние

Термины: Операционные системы и системное программировние