- •Глава 4. Процессы и потоки
- •Уровни irql
- •Высший (ошибка шины,...)
- •Питание
- •Межпроцессорное прерывание
- •Устройство 1
- •Диспетчерски й/d pc
- •Низший (обычный код)
- •152 Глава 4. Процессы и потоки
- •154 Глава 4. Процессы и потоки
- •Диспетчер системных вызовов
- •156 Глава 4. Процессы и потоки
- •158 Глава 4. Процессы и потоки
- •160 Глава 4. Процессы и потоки
- •162 Глава 4. Процессы и потоки
- •164 Глава 4. Процессы и потоки
- •166 Глава 4. Процессы и потоки
- •168 Глава 4. Процессы и потоки
- •V(f) — нарастить число занятых буферов
- •V(f) — нарастить число занятых буферов
- •170 Глава 4. Процессы и потоки
- •172 Глава 4. Процессы и потоки
- •174 Глава 4. Процессы и потоки
- •176 Глава 4. Процессы и потоки
- •178 Глава 4. Процессы и потоки
Основной
задачей мультипрограммной операционной
системы является распределение ресурсов
между процессами и потоками — двумя
базовыми единицами работы ОС.
В
операционных системах, в которых
существуют как процессы, так и потоки,
процесс рассматривается операционной
системой как заявка на потребление
всех видов ресурсов кроме одного —
процессорного времени. Процессорное
время распределяется ОС между другими
единицами работы — потоками,
представляющими собой последовательности
команд.
Потоки
возникли в операционных системах как
средство распараллеливания
вычислений, облегчающее работу
программиста. В ОС, не поддерживающей
потоков, процесс всегда состоит из
одного потока, и программисту приходится
самостоятельно решать задачу
синхронизации нескольких параллельных
ветвей программы.
Операционная
система для реализации мультипрограммирования
выполняет планирование и диспетчеризацию
потоков (в ОС, не поддерживающих потоков*
— диспетчеризацию
процессов). Планирование включает
определение момента смены текущего
потока, а также выбор нового потока
для выполнения. Диспетчеризация
заключается в реализации найденного
в результате планирования решения,
то есть в переключении процессора с
одного потока на другой.
Планирование
может выполняться динамически, когда
решения принимаются во время работы
системы на основе анализа текущей
ситуации, или статически, если потоки
запускаются на выполнение на основании
заранее раз^ работанного расписания.
Первый способ характерен для универсальных
ОС, второй — для специализированных
ОС, например ОС реального времени.
Динамический
планировщик ОС может реализовывать
различные алгоритмы планирования,
которые делятся на такие крупные
классы, как вытесняющие и не
вытесняющие алгоритмы; алгоритмы
квантования, приоритетные алгоритмы.
Используемый алгоритм планирования
зависит от назначения ОС. Применяются
также смешанные алгоритмы, объединяющие
достоинства нескольких классов.
При
применении вытесняющих алгоритмов
планирования ОС получает полный
контроль над вычислительным процессом,
а при применении невытесняющих
алгоритмов решения принимаются
децентрализовано: активный поток
определяет момент смены потоков, а ОС
выбирает новый поток для выполнения.
Система
прерываний позволяет ОС реагировать
на внешние события, происходящие
асинхронно по отношению к вычислительному
процессу: сигналы готовности
устройств ввода-вывода, аварийные
сигналы аппаратуры вычислительной
системы и т. п.
В
зависимости от источника прерывания
делятся на три больших класса:
внешние
прерывания, связанные с сигналами от
внешних устройств;176 Глава 4. Процессы и потоки
Задачи
и упражнения 177
внутренние
прерывания, возникающие в результате
ошибок вычислений;
программные
прерывания, представляющие собой
удобный способ вызова процедур
операционной системы.
Механизм
прерываний поддерживается аппаратными
средствами компьютера и программными
средствами операционной системы.
Существует
два основных способа выполнения
прерывания: векторный (vectored),
когда в процессор передается номер
вызываемой процедуры обработки
прерывания, и опрашиваемый (polled),
когда процессор вынужден последовательно
опрашивать потенциальные источники
запроса прерывания.
Для
упорядочивания процедур обработки
прерываний все источники прерываний
распределяются по нескольким приоритетным
уровням, а роль арбитра выполняет
диспетчер прерываний ОС.
Системные
вызовы, с помощью которых приложения
получают обслуживание со стороны
ОС, реализуются на основе механизма
программных1
прерываний. Системные вызовы могут
выполняться синхронно, когда поток
приостанавливается до завершения
системного вызова, или асинхронно,
когда поток продолжает работу параллельно
с системной процедурой, реализующей
вызов.
Для
синхронизации процессов и потоков,
решающих общие задачи и совместно
использующих ресурсы, в операционных
системах существуют специальные
средства: критические секции, семафоры,
мьютексы, события, таймеры. Отсутствие
синхронизации может приводить к таким
нежелательным последствиям, как гонки
и тупики.
Задачи
и упражнения
Поясните
употребление терминов «программа»,
«процесс», «задача», «поток», «нить».
В
чем состоит принципиальное отличие
состояний ожидания и готовности потока,
ведь и в том и в другом он ожидает
некоторого события?
Мультипрограммные
операционные системы принято разделять
на системы реального времени, системы
разделения времени, системы пакетной
обработки. В то же время алгоритмы
планирования могут быть основаны на
квантовании, относительных приоритетах
и абсолютных приоритетах. Предложите
для каждого из перечисленных типов ОС
наиболее подходящий, по вашему мнению,
тип алгоритма планирования.
В
какой очереди (ожидающих или готовых)
скапливается большее число процессов:
в
интерактивных системах разделения
времени;
в
системах пакетной обработки, решающих
«счетные» задачи.
Известно,
что программа А
выполняется
в монопольном режиме за 10 минут, а
программа В
— за 20 минут, то есть при последовательном
рыполне-