Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
46
Добавлен:
10.05.2014
Размер:
919.55 Кб
Скачать

Ядро ос и процессы

Понятие процесса. Управление процессами

Процесс - программа в стадии выполнения. С каждым процессом связывается его адресное пространство: список адресов от минимума до максимума, который процесс может прочесть и в которые он может записать. Адресное пространство содержит саму программу, данные к ней и ее стек (рисунок 1).

Рисунок 1

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

В период своего существования процесс проходит через ряд дискретных состояний:

  • выполняется, если в данный момент времени ему выделен ЦП;

  • готов, если он мог бы сразу использовать ЦП, предоставленный в его распоряжение;

  • блокирован, если он ожидает появление какого-либо события.

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

Представителем процесса в ОС является блок управления процессом (дескриптор процесса). Это структура данных, содержащая:

  • идентификатор процесса;

  • текущее состояние;

  • приоритет процесса;

  • указатель памяти;

  • указатель выделенных процессу ресурсов;

  • область сохранения регистров (чтобы начинать процесс не сначала, а с того места, в котором процесс был прерван).

Когда ОС переключает ЦП с процесса на процесс, она использует области сохранения регистров, предусмотренные в блок управления процессом, чтобы запомнить информацию необходимую для рестарта процесса, тогда он получит в свое распоряжение ЦП. (то есть чтобы начать создавать что-то не с начала, а с того места, где была остановка).

ОС предусматривает следующие операции над процессами:

          • создание процесса (самое сложное);

          • уничтожение процесса;

          • возобновление процесса;

          • изменение приоритета процесса;

          • блокирование процесса;

          • пробуждение процесса;

          • запуск (выбор) процесса.

Создание процесса состоит из:

          • присвоение имени процессу;

          • включение имени в список имен процессов, известных ОС;

          • определение начального приоритета процесса;

          • формирование блока управления процессом;

          • выделение начальных ресурсов для процесса.

Любой процесс может породить новый процесс. Диаграмму создания процесса можно представить так (рис.2):

  1. Готов -> Выполняется – запуск;

  2. Выполняется -> Готов - прерывание, истечение промежутка времени;

  3. Выполняется -> Блокирован - ожидание какого-либо события, ввода-вывода;

  4. Блокирован ->Готов - наступление события, завершение ввода-вывода;

  5. Блокирован -> Приостановлен блокирован - приостановка (процесс приостанавливается ОС или пользователем);

  6. Готов -> Приостановлен готов – приостановка;

  7. Приостановлен готов -> Готов – возобновление;

  8. Приостановлен блокирован -> Приостановлен готов - завершение ввода-вывода, наступление события;

  9. Приостановлен готов -> Приостановлен блокирован - переход невозможен.

Рисунок 2

Итак, понятие процесса базируется на двух независимых концепциях: группирование процессов и выполнение программы.

С одной стороны, у процесса есть адресное пространство, содержащее текст программы и данные, а также другие ресурсы, такие как:

          • открытые файлы;

          • дочерние процессы;

          • обработчики сигналов;

          • необработанные аварийные сообщения;

          • учетная информация и др.

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

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

Приостановленный процесс состоит из собственного адресного пространства, обычно называемого образом памяти или core-файлом.

Ядро ОС

Все операции, связанные с процессами, выполняются под управлением ядра ОС.

Ядро представляет собой лишь небольшую часть кода ОС, однако оно относится к числу наиболее используемых компонент ОС. По этой причине ядро обычно резидентно размещается в ОП, в то время, как другие части ОС перемещаются во внешнюю память и обратно по мере необходимости.

Ядро ОС обычно содержит программы для реализации следующих функций:

  1. обработка прерываний:

а) создание и уничтожение процессов;

б) переключение состояний процессов;

в

управление

процессами

2)

) диспетчеризация;

г) приостановка и активация;

д) синхронизация процессов;

е) организация взаимодействия между процессами;

  1. поддержка операций в/в;

  2. поддержка распределения, иерархирование памяти;

  3. поддержка работы Ф.С.;

  4. поддержка механизма вызова возврата при обращении к процедурам (то есть возвращение в то место, откуда был произведен вызов);

  5. поддержка определения функций по ведению учета машины.

Обработка прерываний

Вход в ядро ОС обычно осуществляется по прерываниям. Когда ядро реагирует на данное прерывание, оно запрещает другие прерывания. После определения причины данного прерывания ядро передает его обработку специальному системному процессу, предназначаемому для работы с прерываниями данного типа. Схема прерываний для разных конфигураций ЭВМ отличается.

Схемы прерываний (типы):

  1. прерывание по вызову супервизора (инициатором является работающий процессор);

  2. прерывание в/в (инициируется аппаратурой в/в (когда завершается операция в/в, или совершается ошибка, или устройство переходит в другое состояние));

  3. внешние прерывания (причиной могут быть различные события: истечение кванта времени, заданного на таймере, нажатие клавиши прерывания(ctrl+break); прием прерывания от другого процессора в мультипроцессорной системе);

  4. прерывание по рестарту (происходит, когда оператор нажимает на пульте управления кнопку рестарта или от другого процессора в мультипроцессорной системе приходит такая команда);

  5. прерывание по ошибке программы при делении на 0, попытка процесса пользователя выполнить привилегированную операцию;

  6. прерывание по ошибке машины (аппаратная ошибка: по питанию, испорченные области на диске).

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

  1. Процессы называются параллельными, если они существуют одновременно.

  2. Параллельные процессы называются асинхронными, если они работают совершенно независимо друг от друга.

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

Поток - группа команд процесса объединенных в единое целое.

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

Мьютекс - упрощенная версия семафора, переменная, которая может находиться в одном из двух состояний «1» или «О» - блокирование или деблокирование.

Волокно (только для Windows) - поток, планируемый в пространстве пользователя, а не в пространстве ядра.

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

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

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

Зависание системы - один или более процессов в тупике.

Рисунок 3