Организация вычислительного процесса. Тема 2

Содержание

Слайд 2

2.1. Концепция процессов и потоков. Задания, процессы, потоки (нити), волокна Основные

2.1. Концепция процессов и потоков. Задания, процессы, потоки (нити), волокна

Основные понятия

Мультипрограммирование

(многозадачность, multitasking) - это такой способ организации вычислительного процесса, при котором на одном процессоре попеременно выполняются несколько программ.
Слайд 3

2.1. Концепция процессов и потоков. Задания, процессы, потоки (нити), волокна Основные

2.1. Концепция процессов и потоков. Задания, процессы, потоки (нити), волокна

Основные понятия

Чтобы

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

2.1. Концепция процессов и потоков. Задания, процессы, потоки (нити), волокна Основные

2.1. Концепция процессов и потоков. Задания, процессы, потоки (нити), волокна

Основные понятия

В

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

2.1. Концепция процессов и потоков. Задания, процессы, потоки (нити), волокна Основные

2.1. Концепция процессов и потоков. Задания, процессы, потоки (нити), волокна

Основные понятия

Процесс

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

2.1. Концепция процессов и потоков. Задания, процессы, потоки (нити), волокна Основные

2.1. Концепция процессов и потоков. Задания, процессы, потоки (нити), волокна

Основные понятия

Все

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

2.1. Концепция процессов и потоков. Задания, процессы, потоки (нити), волокна Основные

2.1. Концепция процессов и потоков. Задания, процессы, потоки (нити), волокна

Основные понятия

Для

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

2.1. Концепция процессов и потоков. Задания, процессы, потоки (нити), волокна Основные

2.1. Концепция процессов и потоков. Задания, процессы, потоки (нити), волокна

Основные понятия

В некоторых современных ОС, например в Windows 2000/2003 вновь вернулись к такой единице работы, как задание (Job).
Задание в Windows представляет собой набор из одного или нескольких процессов, управляемых как единое целое.
Слайд 9

2.1. Концепция процессов и потоков. Задания, процессы, потоки (нити), волокна Основные

2.1. Концепция процессов и потоков. Задания, процессы, потоки (нити), волокна

Основные понятия

В частности, с каждым заданием ассоциированы квоты и лимиты ресурсов, хранящиеся в соответствующем объекте задания.
Слайд 10

2.1. Концепция процессов и потоков. Задания, процессы, потоки (нити), волокна Основные

2.1. Концепция процессов и потоков. Задания, процессы, потоки (нити), волокна

Основные понятия

Квоты

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

2.1. Концепция процессов и потоков. Задания, процессы, потоки (нити), волокна Основные

2.1. Концепция процессов и потоков. Задания, процессы, потоки (нити), волокна

Основные понятия

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

Операционные системы 2.1. Концепция процессов и потоков. Задания, процессы, потоки (нити),

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

2.1. Концепция процессов и потоков. Задания, процессы, потоки (нити), волокна

Ресурсы

системы

Управляющие таблицы ОС

Образ процесса

Процесс 1

Процесс N

Память

Устройства

Файлы

Процессы

Процесс 1

Процесс 3

Процесс 2

Процесс N

Процессор

Первичные таблицы процессов

Таблицы памяти

Таблицы ввода-вывода

Таблицы файлов

Слайд 13

2.1. Концепция процессов и потоков. Задания, процессы, потоки (нити), волокна Основные

2.1. Концепция процессов и потоков. Задания, процессы, потоки (нити), волокна

Основные понятия

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

2.1. Концепция процессов и потоков. Задания, процессы, потоки (нити), волокна Основные

2.1. Концепция процессов и потоков. Задания, процессы, потоки (нити), волокна

Основные понятия

Каждый процесс начинается с одного потока, но новые потоки могут создаваться (порождаться) процессом динамически.
В простейшем случае процесс состоит из одного потока, и именно таким образом трактовалось понятие «процесс» до середины 80-х годов (например, в ранних версиях UNIX).
Слайд 15

2.1. Концепция процессов и потоков. Задания, процессы, потоки (нити), волокна Основные

2.1. Концепция процессов и потоков. Задания, процессы, потоки (нити), волокна

Основные понятия

В некоторых современных ОС такое положение сохранилось, т. е. понятие «поток» полностью поглощается понятием «процесс».
Как правило, поток работает в пользовательском режиме, но когда он обращается к системному вызову, то переключается в режим ядра.
Слайд 16

2.1. Концепция процессов и потоков. Задания, процессы, потоки (нити), волокна Основные

2.1. Концепция процессов и потоков. Задания, процессы, потоки (нити), волокна

Основные понятия

После завершения системного вызова поток продолжает выполняться в режиме пользователя.
У каждого потока есть два стека: один используется в режиме ядра, другой - в режиме пользователя.
Слайд 17

2.1. Концепция процессов и потоков. Задания, процессы, потоки (нити), волокна Основные

2.1. Концепция процессов и потоков. Задания, процессы, потоки (нити), волокна

Основные понятия

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

2.1. Концепция процессов и потоков. Задания, процессы, потоки (нити), волокна Основные

2.1. Концепция процессов и потоков. Задания, процессы, потоки (нити), волокна

Основные понятия

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

Операционные системы Взаимосвязь между заданиями, процессами и потоками Процессы T T

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

Взаимосвязь между заданиями, процессами и потоками

Процессы

T

T

P

T

Задание

Стек в режиме пользователя

Потоки

Таблица процесса

Таблица

процесса

Маркеры доступа

Стеки потоков в режиме ядра

T

P

Слайд 20

2.1. Концепция процессов и потоков. Задания, процессы, потоки (нити), волокна Основные

2.1. Концепция процессов и потоков. Задания, процессы, потоки (нити), волокна

Основные понятия

Для предоставления сильно облегченного псевдопараллелизма в Windows 2000 используются волокна (Fiber), подобные потокам, но планируемые в пространстве пользователя создавшей их программой.
Слайд 21

2.1. Концепция процессов и потоков. Задания, процессы, потоки (нити), волокна Основные

2.1. Концепция процессов и потоков. Задания, процессы, потоки (нити), волокна

Основные понятия

У каждого потока может быть несколько волокон, с той разницей, что когда волокно логически блокируется, оно помещается в очередь блокированных волокон, после чего для работы выбирается другое волокно в контексте того же потока. При этом ОС «не знает» о смене волокон, так как все тот же поток продолжает работу.
Слайд 22

Операционные системы Задание (JOB) Объекты Процесс 2 Процесс N Процесс 1

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

Задание (JOB)

Объекты

Процесс 2

Процесс N

Процесс 1
Поток 2
Thread 2

Поток k
Thread k

Поток 1
Thread

1

Волокна (Fibers)

Слайд 23

Операционные системы 2.2. Мультипрограммирование. Формы многопрограммной работы Системы пакетной обработки предназначаются

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

2.2. Мультипрограммирование. Формы многопрограммной работы

Системы пакетной обработки предназначаются для решения

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

2.2.1. Мультипрограммирование в системах пакетной обработки

Слайд 24

Операционные системы Для достижения этой цели пакет заданий формируется так, чтобы

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

Для достижения этой цели пакет заданий формируется так, чтобы получающаяся

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

2.2.1. Мультипрограммирование в системах пакетной обработки

Слайд 25

Операционные системы Канальная программа Ввод - вывод В ы ч и

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

Канальная программа

Ввод - вывод

В ы ч и с л е

н и я

Канал

Центральный процессор

Команда запуска канала

Сигнал завершения операции ввода-вывода

2.2.1. Мультипрограммирование в системах пакетной обработки

О п е р а ц и и в в о д а – в ы в о д а

Контроллеры

Центральный процессор

В ы ч и с л е н и я

Слайд 26

Операционные системы В компьютерах класса мэйнфреймов совмещение достигается благодаря наличию в

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

В компьютерах класса мэйнфреймов совмещение достигается благодаря наличию в машине

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

2.2.1. Мультипрограммирование в системах пакетной обработки

Слайд 27

Операционные системы В благоприятных случаях общее время выполнения смеси задач меньше,

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

В благоприятных случаях общее время выполнения смеси задач меньше, чем

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

2.2.1. Мультипрограммирование в системах пакетной обработки

Слайд 28

Операционные системы A 2 2 2 A B 3 B 1

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

A

2

2

2

A

B

3

B

1

Ta=6

Tb=5

Ta+Tb=11

В ы ч и с л е н и я


В в о д – в ы в о д

A

2

B

3

A

2

B

1

Ta= 7

Tb= 6

Ta+Tb= 8

В ы ч и с л е н и я

A

1

В в о д – в ы в о д

Готовность (ожидание процессора)

Слайд 29

Операционные системы В системах разделения времени пользователям (в частном случае одному)

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

В системах разделения времени пользователям (в частном случае одному) предоставляется

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

2.2.2. Мультипрограммирование в системах разделения времени

Слайд 30

Операционные системы Всем приложениям попеременно выделяются кванты времени процессора, таким образом,

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

Всем приложениям попеременно выделяются кванты времени процессора, таким образом,

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

2.2.2. Мультипрограммирование в системах разделения времени

Слайд 31

Операционные системы 2.2.2. Мультипрограммирование в системах разделения времени 1 2 3

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

2.2.2. Мультипрограммирование в системах разделения времени

1

2

3


n

Центральный процессор

TКВ = 0,02 мс

Слайд 32

Операционные системы Назначение систем реального времени: управление техническими объектами (спутник, ракета,

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

Назначение систем реального времени:
управление техническими объектами (спутник, ракета, атомные

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

2.2.3. Мультипрограммирование в системах реального времени

Слайд 33

Операционные системы Особенности реализации систем реального времени: существует предельно допустимое время,

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

Особенности реализации систем реального времени:
существует предельно допустимое время, в

течение которого должна быть выполнена та или иная программа управления объектом (время реакции системы);
мультипрограммная смесь представляет собой фиксированный набор заранее разработанных программ решения функциональных задач управления объектом или процессом;

2.2.3. Мультипрограммирование в системах реального времени

Слайд 34

Операционные системы выбор программы на выполнение осуществляется по прерываниям (исходя из

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

выбор программы на выполнение осуществляется по прерываниям (исходя из текущего

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

2.2.3. Мультипрограммирование в системах реального времени

Слайд 35

Операционные системы Мультипроцессорная обработка - это способ организации вычислительного процесса в

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

Мультипроцессорная обработка - это способ организации вычислительного процесса в системе

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

2.2.3. Мультипроцессорная обработка

Слайд 36

Операционные системы Мультипроцессирование поддерживают: Sun Solaris 2.x, Santa Cruz Operation Open

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

Мультипроцессирование поддерживают: Sun Solaris 2.x, Santa Cruz Operation Open

Server 3.x, OS/2, Windows NT/2000/2003 , NetWare, начиная с версии 4.1.
Мультипроцессорные системы делятся на симметричные и асимметричные.
Эти термины относятся, с одной стороны, к архитектуре вычислительной системы, а с другой - к способу организации вычислительного процесса.

2.2.3. Мультипроцессорная обработка

Слайд 37

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

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

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

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

2.2.3. Мультипроцессорная обработка

Слайд 38

Операционные системы Такая конструкция (масштабирование по вертикали) практически ограничивает число процессоров

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

Такая конструкция (масштабирование по вертикали) практически ограничивает число процессоров

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

2.2.3. Мультипроцессорная обработка

Слайд 39

Операционные системы В симметричных архитектурах вычислительных систем легко реализуется симметричное мультипроцессирование

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

В симметричных архитектурах вычислительных систем легко реализуется симметричное мультипроцессирование

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

2.2.3. Мультипроцессорная обработка

Слайд 40

Операционные системы Программы ОС должны быть реентерабельными (повторновходимыми). Операционная система полностью

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

Программы ОС должны быть реентерабельными (повторновходимыми).
Операционная система полностью децентрализована.

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

2.2.3. Мультипроцессорная обработка

Слайд 41

Операционные системы Все ресурсы выделяются для каждой выполняемой задачи по мере

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

Все ресурсы выделяются для каждой выполняемой задачи по мере

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

2.2.3. Мультипроцессорная обработка

Слайд 42

Операционные системы В вычислительных системах с асимметричной архитектурой процессоры могут быть

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

В вычислительных системах с асимметричной архитектурой процессоры могут быть

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

2.2.3. Мультипроцессорная обработка

Слайд 43

Операционные системы Эта неоднородность ведет к структурным отличиям во фрагментах системы,

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

Эта неоднородность ведет к структурным отличиям во фрагментах системы,

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

2.2.3. Мультипроцессорная обработка

Слайд 44

Операционные системы Масштабирование в данном случае называют горизонтальным, а мультипроцессорную систему

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

Масштабирование в данном случае называют горизонтальным, а мультипроцессорную систему

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

2.2.3. Мультипроцессорная обработка

Слайд 45

Операционные системы 2.3. Управление процессами и потоками 2.3.1. Основные функции управления

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

2.3. Управление процессами и потоками

2.3.1. Основные функции управления процессами и

потоками
Создание процессов и потоков.
Обеспечение процессов и потоков необходимыми ресурсами.
Изоляция процессов.
Планирование выполнения процессов и потоков.
Диспетчеризация потоков.
6. Организация межпроцессного взаимодействия.
7. Синхронизация процессов и потоков.
8. Завершение и уничтожение процессов и потоков.
События, приводящие к созданию процессов:
Инициализация (загрузка) ОС.
Запрос процесса на создание дочернего процесса.
Запрос пользователя на создание процесса (например, при входе в систему в интерактивном режиме).
Инициирование пакетного задания.
Создание операционной системой процесса какой-либо службы.
Слайд 46

Операционные системы 2.3. Управление процессами и потоками 2.3.1. Основные функции управления

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

2.3. Управление процессами и потоками

2.3.1. Основные функции управления процессами и

потоками

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

Слайд 47

Операционные системы 2.3. Управление процессами и потоками 2.3.1. Основные функции управления

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

2.3. Управление процессами и потоками

2.3.1. Основные функции управления процессами и

потоками

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

Слайд 48

Операционные системы 2.3. Управление процессами и потоками 2.3.1. Основные функции управления

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

2.3. Управление процессами и потоками

2.3.1. Основные функции управления процессами и

потоками

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

Слайд 49

Операционные системы 2.3. Управление процессами и потоками 2.3.1. Основные функции управления

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

2.3. Управление процессами и потоками

2.3.1. Основные функции управления процессами и

потоками

Диспетчеризация проходит в три этапа:
• сохранение контекста текущего потока;
• загрузка контекста потока, выбранного в результате планирования;
• запуск нового потока на выполнение.
Для общения друг с другом процессы и потоки могут использовать широкий спектр возможностей: каналы (в UNIX), почтовые ящики (Windows 2000), вызов удаленной процедуры, сокеты (в Windows соединяют процессы на разных машинах). Согласование скоростей потоков также очень важно для предотвращения эффекта «гонок» (когда несколько потоков пытаются получить доступ к одному и тому же ресурсу), взаимных блокировок и других коллизий, которые возникают при совместном использовании ресурсов.
Для решения этой задачи служит синхронизация потоков.

Слайд 50

Операционные системы 2.3. Управление процессами и потоками 2.3.1. Основные функции управления

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

2.3. Управление процессами и потоками

2.3.1. Основные функции управления процессами и

потоками

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

Слайд 51

Операционные системы 2.3. Управление процессами и потоками 2.3.1. Основные функции управления

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

2.3. Управление процессами и потоками

2.3.1. Основные функции управления процессами и

потоками

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

Слайд 52

Операционные системы 2.3.2. Роль процессов, потоков и волокон в мультипрограммировании Отдельный

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

2.3.2. Роль процессов, потоков и волокон в мультипрограммировании

Отдельный процесс не

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

Операционные системы 2.3.2. Роль процессов, потоков и волокон в мультипрограммировании Потоки

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

2.3.2. Роль процессов, потоков и волокон в мультипрограммировании

Потоки одного процесса

используют общие файлы, таймеры, устройства, одну и ту же область оперативной памяти, одно и то же адресное пространство; они разделяют одни и те же глобальные переменные.
Многопоточная (multithreading) обработка эффективна в многопроцессорных вычислительных системах.
Использование аппарата волокон (Windows 2000) повышает эффективность мультипрограммирования за счет сокращения переключения режима (пользовательский - привилегированный), но увеличивает трудоемкость разработки приложений. Для управления волокнами нет системных вызовов, однако есть вызовы Win32 API, которые не обращаются к системным вызовам.
Слайд 54

Операционные системы 2.4. Создание процессов и потоков. Модели процессов и потоков

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

2.4. Создание процессов и потоков. Модели процессов и потоков

2.4.1.Процессы и

их модели

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

Слайд 55

Операционные системы 2.4. Создание процессов и потоков. Модели процессов и потоков

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

2.4. Создание процессов и потоков. Модели процессов и потоков

2.4.1.Процессы и

их модели

Примеры описателей процесса:
• блок управления задачей (ТСВ -Task Control Block) в OS/360;
• управляющий блок процесса (РСВ -Process Control Block) в OS/2;
• дескриптор процесса в UNIX;
• объект-процесс (object-process) в Windows NT/2000/2003.
Создание процесса включает загрузку кодов и данных исполняемой программы данного процесса с диска в оперативную память.

Слайд 56

Операционные системы 2.4. Создание процессов и потоков. Модели процессов и потоков

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

2.4. Создание процессов и потоков. Модели процессов и потоков

2.4.1.Процессы и

их модели

Образ процесса: программа, данные, стек и атрибуты процесса

Слайд 57

Операционные системы 2.4. Создание процессов и потоков. Модели процессов и потоков

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

2.4. Создание процессов и потоков. Модели процессов и потоков

2.4.1.Процессы и

их модели

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

Слайд 58

Операционные системы Дескриптор процесса (блок управления) содержит: 1. Информацию по идентификации

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

Дескриптор процесса (блок управления) содержит:

1. Информацию по идентификации процесса (идентификатор

процесса, идентификатор пользователя,
идентификаторы родительского и дочерних процессов).
2. Информацию по состоянию процесса
3. Информацию, используемую для управления процессом
Слайд 59

Операционные системы Идентификация процесса Каждому процессу присваивается числовой идентификатор, который может

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

Идентификация процесса

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

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

Операционные системы Информация по состоянию и управлению процессом Состояние процесса, определяющее

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

Информация по состоянию и управлению процессом

Состояние процесса, определяющее его

готовность к выполнению (выполняющийся, готовый к выполнению, ожидающий события, приостановленный);
Данные о приоритете (текущий, по умолчанию, максимально возможный);
Информация о событиях – идентификация события, наступление которого позволит продолжить выполнение процесса;
Указатели, позволяющие определить расположение образа процесса в оперативной памяти и на диске;
Указатели на другие процессы (находящиеся в очереди на выполнение);
Флаги, сигналы и сообщения, имеющие отношение к обмену информацией между двумя независимыми процессами;
Данные о привилегиях, определяющие права доступа к определенной области памяти или возможности выполнять определенные виды команд, использовать системные утилиты и службы;
Указатели на ресурсы, которыми управляет процесс;
Сведения по использованию ресурсов и процессора;
Информация, связанная с планированием.
Слайд 61

Операционные системы КОНТЕКСТ ПРОЦЕССА Содержимое регистров процессора, доступных пользователю (обычно 8

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

КОНТЕКСТ ПРОЦЕССА

Содержимое регистров процессора, доступных пользователю (обычно 8 –

32 регистра и до 100 регистров в RISC – процессорах);
Содержимое счетчика команд;
Состояние управляющих регистров и регистров состояния;
Коды условия, отражающие результат выполнения последней арифметической или логической операции (например, равенство нулю,переполнение);
Указатели вершин стеков,хранящие параметры и адреса вызова процедур и системных служб.
Значительная часть этой информации фиксируется в виде слова состояния программы PSW (program status word – EFLAGS в процессоре Pentium).

Содержит информацию, позволяющую ОС приостанавливать и возобновлять выполнение процесса с прерванного места:

Слайд 62

Операционные системы Простейшая модель процесса Диспетчеризация Пауза Не выполняется Выполняется Вход

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

Простейшая модель процесса

Диспетчеризация

Пауза

Не выполняется

Выполняется

Вход

Выход

CPU

Вход

Выход

Очередь

Пауза

Диспетчеризация

CPU

Граф состояний и переходов

tкв

Слайд 63

Операционные системы Простейшая модель процесса В любой момент времени процесс либо

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

Простейшая модель процесса

В любой момент времени процесс либо выполняется,

либо не выполняется, т. е. имеет только два состояния.
Если бы все процессы были всегда готовы к выполнению, то очередь по этой схеме могла бы работать вполне эффективно.
Такая очередь работает по принципу обработки в порядке поступления, а процессор обслуживает имеющиеся в наличии процессы круговым методом (Round-robin).
Каждому процессу отводится определенный промежуток времени, по истечении которого он возвращается в очередь.
Слайд 64

Операционные системы Новый Готовый к выполнению Выполняю-щийся Вход в систему Ожидание

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

Новый

Готовый к выполнению

Выполняю-щийся

Вход

в систему

Ожидание

Завершаю-щийся

Освобо-ждение

события

Блокирова-нный

CPU

Поступление процесса

Очередь готовых процессов

Тайм – аут (

tКВ )

Ожидание события

Модель с тремя состояниями

Слайд 65

Операционные системы Модель с тремя состояниями Все невыполняющиеся процессы делятся на

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

Модель с тремя состояниями

Все невыполняющиеся процессы делятся на на два

типа: готовые к выполнению и заблокированные. Поскольку процессор работает намного быстрее выполнения операций ввода-вывода, то вскоре все находящиеся в памяти процессы оказываются в состоянии ожидания ввода-вывода.
Что делать?
Можно увеличить емкость основной памяти, чтобы в ней умещалось больше процессов.
Свопинг - перенос части процессов из оперативной памяти на диск и загрузка другого процесса из очереди приостановленных (но не блокированных!) процессов, находящихся во внешней памяти.
Слайд 66

Операционные системы 2.4.2. Потоки и их модели Описатель потока: блок управления

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

2.4.2. Потоки и их модели

Описатель потока: блок управления потоком и

контекст потока (в многопоточной системе процессы контекстов не имеют).
Способы реализации пакета потоков:
в пространстве пользователя (user – level threads – ULT);
в ядре (kernel – level threads – KLT).

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

Слайд 67

Операционные системы Поток на уровне пользователя (в пользовательском пространстве) Процессы Пространство

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

Поток на уровне пользователя (в пользовательском пространстве)

Процессы

Пространство пользователя

Потоки

Библиотека подпрограмм для

работы с потоками

Ядро

Таблица процессов

Таблицапотоков

Слайд 68

Операционные системы Поток на уровне пользователя (в пользовательском пространстве) Если управление

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

Поток на уровне пользователя (в пользовательском пространстве)

Если управление потоками происходит

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

Операционные системы Поток на уровне пользователя (в пользовательском пространстве) Приложение в

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

Поток на уровне пользователя (в пользовательском пространстве)

Приложение в начале своей

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

Операционные системы Поток на уровне пользователя можно реализовать в ОС, не

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

Поток на уровне пользователя


можно реализовать в ОС, не поддерживающей

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

ДОСТОИНСТВА:

Слайд 71

Операционные системы Поток на уровне пользователя НЕДОСТАТКИ: системный вызов блокирует не

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

Поток на уровне пользователя
НЕДОСТАТКИ:
системный вызов блокирует не только

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

Операционные системы Поток на уровне ядра Процессы Потоки Ядро Пространство пользователя Таблица процессов Таблица потоков

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

Поток на уровне ядра

Процессы

Потоки

Ядро

Пространство пользователя

Таблица процессов

Таблица потоков

Слайд 73

Операционные системы Поток на уровне ядра В случае потоков на уровне

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

Поток на уровне ядра

В случае потоков на уровне ядра в

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

Операционные системы Поток на уровне ядра ДОСТОИНСТВА: возможно планирование работы нескольких

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

Поток на уровне ядра
ДОСТОИНСТВА:
возможно планирование работы нескольких потоков

одного и того же процесса на нескольких процессорах;
реализуется мультипрограммирование в рамках всех процессов (в том числе одного);
при блокировании одного из потоков процесса ядро может выбрать другой поток этого же (или другого процесса);
процедуры ядра могут быть многопоточными.
НЕДОСТАТКИ:
Необходимость двукратного переключения режима пользователь – ядро, ядро – пользователь для передачи управления от одного потока к другому в рамках одного и того же процесса.
Слайд 75

Операционные системы Потоки и их модели С целью совмещения преимуществ реализации

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

Потоки и их модели

С целью совмещения преимуществ реализации потоков на

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

Операционные системы 2.5. Планирование заданий, процессов и потоков Виды планирования Основная

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

2.5. Планирование заданий, процессов и потоков

Виды планирования

Основная цель планирования вычислительного

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

Операционные системы 2.5. Планирование заданий, процессов и потоков Виды планирования

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

2.5. Планирование заданий, процессов и потоков

Виды планирования

Слайд 78

Операционные системы 2.5. Планирование заданий, процессов и потоков Виды планирования В

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

2.5. Планирование заданий, процессов и потоков

Виды планирования

В большинстве операционных систем

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

Операционные системы 2.5. Планирование заданий, процессов и потоков Виды планирования Другой

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

2.5. Планирование заданий, процессов и потоков

Виды планирования

Другой тип планирования -

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

Операционные системы 2.5. Планирование заданий, процессов и потоков Виды планирования Результатом

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

2.5. Планирование заданий, процессов и потоков

Виды планирования

Результатом его работы является

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

Операционные системы 2.5. Планирование заданий, процессов и потоков Виды планирования Краткосрочный

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

2.5. Планирование заданий, процессов и потоков

Виды планирования

Краткосрочный планировщик (диспетчер) реализует

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

Операционные системы 2.5. Планирование заданий, процессов и потоков Виды планирования Примерами

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

2.5. Планирование заданий, процессов и потоков

Виды планирования

Примерами этих событий

могут быть:
• прерывание таймера;
• прерывание ввода-вывода;
• вызовы операционной системы;
• сигналы.
Слайд 83

Операционные системы 2.5. Планирование заданий, процессов и потоков Виды планирования Среднесрочное

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

2.5. Планирование заданий, процессов и потоков

Виды планирования

Среднесрочное планирование является частью

системы свопинга.
Обычно решение о загрузке процесса в память принимается в зависимости от степени многозадачности (например, OS MFT, OS MVT).
Слайд 84

Операционные системы 2.5. Планирование заданий, процессов и потоков Виды планирования Диспетчеризация

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

2.5. Планирование заданий, процессов и потоков

Виды планирования

Диспетчеризация сводится к следующему:

сохранение контекста текущего потока, который требуется сменить;
• загрузка контекста нового потока, выбранного в результате планирования;
• запуск нового потока на выполнение.
Слайд 85

Операционные системы Схема планирования с учетом очередей заданий (процессов) Новый Готовый

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

Схема планирования с учетом очередей заданий (процессов)

Новый

Готовый / Приостановлен-ный

Готовый в

ОП

Выполняющийся в ОП

Завершаю-щийся

Долгосрочное планирование

Вызов ОС

Активация

Приостановка

Приостановка

Активация

Среднесрочное планирование

Освобождение

Ожидание события (прерывание ввода-вывода, сообщение)

Диспетчеризация (краткосрочное планирование)

Тайм-аут (таймер)

Блокированный / Приостановленный

Диск

Диск

Блокированный в ОП

Наступление события

С в о п и н г

Наступление события

Слайд 86

Операционные системы Долгосрочное планирование Тайм-аут Очередь готовых заданий Среднесрочное планирование Среднесрочное

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

Долгосрочное планирование

Тайм-аут

Очередь готовых заданий

Среднесрочное планирование

Среднесрочное планирование

Очередь готовых приостановленных заданий

Очередь заблокированных

приостановленных заданий

Очередь
заблокированных заданий

Событие

Интерактивные пользователи

Пакетные задания

Ожидание события

ЦП

Выход

ОП

Диск

Диск

ОП

Слайд 87

Операционные системы Граф состояния потока В мультипрограммной системе поток (процесс, если

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

Граф состояния потока

В мультипрограммной системе поток (процесс, если операционная система

работает только с процессами) может находиться в одном из трех основных состояний:
• выполнение - активное состояние потока, во время которого поток обладает всеми необходимыми ресурсами и непосредственно выполняется процессором;
Слайд 88

Операционные системы Граф состояния потока ожидание - пассивное состояние потока, находясь

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

Граф состояния потока

ожидание - пассивное состояние потока, находясь в котором

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

Операционные системы Граф состояния потока В течение своей жизни каждый поток

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

Граф состояния потока

В течение своей жизни каждый поток переходит из

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

Операционные системы Типичный граф состояния потока ВЫПОЛНЕНИЕ ГОТОВНОСТЬ ОЖИДАНИЕ Поток завершен

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

Типичный граф состояния потока

ВЫПОЛНЕНИЕ

ГОТОВНОСТЬ

ОЖИДАНИЕ

Поток завершен или ошибка

Поток ожидает завершения ввода-вывода

или другого события

Ввод-вывод завершен (событие произошло)

Поток вытеснен (исчерпал квант)

Поток выбран на выполнение

Вновь созданный поток

Слайд 91

Операционные системы Алгоритмы планирования потоков Невытесняющие (non-preemptive) планирование распределяется между ОС

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

Алгоритмы планирования потоков

Невытесняющие (non-preemptive)
планирование распределяется между ОС и прикладными

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

Операционные системы Алгоритмы планирования потоков В соответствии с концепцией квантования каждому

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

Алгоритмы планирования потоков

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

для выполнения предоставляется ограниченный непрерывный период процессорного времени - квант.
Смена активного потока происходит, если:
• поток завершается и покинул систему;
• произошла ошибка;
• поток перешел в состояние ожидания;
• исчерпан квант времени, отведенный данному потоку.
Слайд 93

Операционные системы Алгоритмы планирования потоков Поток, который исчерпал свой квант, переводится

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

Алгоритмы планирования потоков

Поток, который исчерпал свой квант, переводится в состояние

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

Операционные системы Простейший алгоритм планирования, реализующий состояния потока для типичного графа

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

Простейший алгоритм планирования, реализующий состояния потока для типичного графа состояния

потоков

Тайм - аут

Процессор

Ожидание события

Очередь заблокированных потоков

Ввод-вывод завершен

Новый

поток

Очередь готовых потоков

Выход

Слайд 95

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

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

Кванты, выделяемые потокам, могут быть равными или различными (типичное значение

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

Операционные системы Алгоритм планирования, реализующий предпочтения потокам с интенсивным вводом-выводом Некоторые

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

Алгоритм планирования, реализующий предпочтения потокам с интенсивным вводом-выводом

Некоторые потоки, получив

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

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

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

Алгоритм планирования, реализующий предпочтения потокам с интенсивным вводом-выводом

Можно создать две

очереди потоков: очередь 1 - для потоков, которые пришли в состояние готовности в результате исчерпания кванта времени, и очередь 2 - для потоков, у которых завершилась операция ввода-вывода.
При выборе потока для выполнения сначала просматривается вторая очередь и, если она пуста, квант выделяется потоку из первой очереди.
Слайд 98

Операционные системы Алгоритм планирования, реализующий предпочтения потокам с интенсивным вводом-выводом Ожидание

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

Алгоритм планирования, реализующий предпочтения потокам с интенсивным вводом-выводом

Ожидание события

Тайм -

аут

Процессор

Новый поток

Очередь 2

Очередь 1

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

Слайд 99

Операционные системы Граф состояния потока Выполнение Ожидание Очередь готовых потоков 1

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

Граф состояния потока

Выполнение

Ожидание

Очередь готовых потоков 1

Очередь готовых потоков 2

Вновь созданный

поток

tКВ

tКВ

Тайм-аут

Завершение
(ошибка)

Событие (завершение ввода-вывода)

Запрос ввода-вывода

Слайд 100

Операционные системы Алгоритмы приоритетного планирования В основе многих вытесняющих алгоритмов планирования

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

Алгоритмы приоритетного планирования

В основе многих вытесняющих алгоритмов планирования лежит приоритетное

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

Операционные системы Алгоритмы приоритетного планирования В большинстве операционных систем, поддерживающих потоки,

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

Алгоритмы приоритетного планирования

В большинстве операционных систем, поддерживающих потоки, приоритет потока

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

Операционные системы Алгоритмы приоритетного планирования При назначении приоритетов вновь созданному процессу

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

Алгоритмы приоритетного планирования

При назначении приоритетов вновь созданному процессу ОС учитывается,

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

Операционные системы Алгоритмы приоритетного планирования Процессор Назначение приоритета Тайм-аут Очередь высшего

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

Алгоритмы приоритетного планирования

Процессор

Назначение приоритета

Тайм-аут

Очередь высшего приоритета

Очередь низшего приоритета

Ожидание события

Ожидание события

Тайм-аут

Завершение

(ошибка)

Новый поток

Приоритетное переключение с квантованием

Слайд 104

Операционные системы Алгоритмы приоритетного планирования Во многих ОС предусматривается возможность изменения

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

Алгоритмы приоритетного планирования

Во многих ОС предусматривается возможность изменения приоритета в

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

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

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

Алгоритмы приоритетного планирования

Существуют две разновидности приоритетного планирования: с относительными и

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

Операционные системы Алгоритмы приоритетного планирования В Windows 2000/2003 (W2K) приоритеты организованы

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

Алгоритмы приоритетного планирования

В Windows 2000/2003 (W2K) приоритеты организованы в виде

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

Операционные системы 31 30 16 -1 0 15 Системные приоритеты Пользоват.

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

31

30

16

-1

0

15

Системные приоритеты

Пользоват. приоритеты

7

8

6

Наивысший

Повышенный

Обычный

Пониженный

Наинизший

Поток обнуления страниц

Пустой поток

Базовый приоритет

Наивысший

Наинизший

Очереди системных потоков и

потоков псевдореального времени

Наивысший

Наинизший

ПРОЦЕССОР

Слайд 108

Операционные системы Алгоритмы приоритетного планирования В классе приоритетов реального времени все

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

Алгоритмы приоритетного планирования

В классе приоритетов реального времени все потоки

имеют фиксированный приоритет (от 16 до 31), который никогда не изменяется, и все активные потоки с определенным уровнем приоритета располагаются в круговой очереди данного класса (t^- 20 мс для W2K Professional, 120 мс - для однопроцессорных серверов).
Слайд 109

Операционные системы Алгоритмы приоритетного планирования В классе переменных приоритетов поток начинает

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

Алгоритмы приоритетного планирования

В классе переменных приоритетов поток начинает работу

с базового приоритета процесса, который может принимать значение от 1 до 15. Каждый поток, связанный с процессом, имеет свой базовый приоритет, равный базовому приоритету процесса, или отличающийся от него не более чем на 2 уровня в большую или меньшую сторону.
После активации потока его динамический приоритет может колебаться в определенных пределах - он не может упасть ниже наименьшего базового приоритета данного класса, т. е. 15. (Для потоков с приоритетом 16 и выше никогда не делается никаких изменений приоритетов.)
Слайд 110

Операционные системы Изменение базового приоритета потока Увеличение приоритета + 1 –

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

Изменение базового приоритета потока
Увеличение приоритета
+ 1 – завершение

ввода-вывода по диску; + 2 – для последовательной линии; + 6 – клавиатура; + 8 – звуковая карта; + 2 – снимается блокировка по семафору (для потока переднего плана); + 1 - снимается блокировка по семафору (для потока непереднего плана); приоритет 15 на 2 кванта процессора, если готовый к выполнению поток простаивает более некоторого директивного времени.
Уменьшение приоритета
1 – если полностью использован квант времени процессора (многократно, вплоть до базового приоритета).
Последняя модификация алгоритма планирования W2K заключается в том, что когда окно становится окном переднего плана, все его потоки получают более длительные кванты времени (величина прибавки хранится в системном реестре).
Слайд 111

Операционные системы Резервный (3) Выполняющийся (2) Готовый (1) Ожидание (5) Транзит

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

Резервный (3)

Выполняющийся (2)

Готовый (1)

Ожидание (5)

Транзит (6)

Завершенный (4)

Переключение

Вытеснение

Блокировка / Приостановка

Снятие блокировки

/ возобновление. Ресурсов достаточно

Снятие блокировки. Ресурсов недостаточно

Ресурсов достаточно

Выбор для выполнения

Завершение

Работоспособные процессы (потоки)

Неработоспособные процессы (потоки)

35

Инициализация (0)

Слайд 112

Операционные системы 2.6. Взаимодействие и синхронизация процессов и потоков 2.6.1. Проблемы

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

2.6. Взаимодействие и синхронизация процессов и потоков 2.6.1. Проблемы взаимодействия и

синхронизации

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

Слайд 113

Операционные системы 2.6. Взаимодействие и синхронизация процессов и потоков 2.6.1. Проблемы взаимодействия и синхронизации

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

2.6. Взаимодействие и синхронизация процессов и потоков 2.6.1. Проблемы взаимодействия и

синхронизации
Слайд 114

Операционные системы 2.6.2. Конкуренция процессов в борьбе за ресурсы Конкуренция –

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

2.6.2. Конкуренция процессов в борьбе за ресурсы

Конкуренция – ситуация, когда

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

Процесс А

Процесс В

Процесс А попадает в критическую область

T1

T2

T3

T4

Процесс А покидает критическую область

Процесс В пытается попасть в критическую область

Процесс В блокирован

Процесс В попадает в критическую область

Процесс В покидает критическую область

T

T

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

Необходимость взаимоисключений:

Слайд 115

Операционные системы Взаимоблокировки (тупики, deadlock) Группа процессов находится в тупиковой ситуации,

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

Взаимоблокировки (тупики, deadlock)

Группа процессов находится в тупиковой ситуации, если

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

Процесс

Ресурс

R1

P2

R2

P1

Исходное распределение ресурсов

R1

P2

R2

P1

P2

P1

R1

R2

Тупиковая ситуация

Слайд 116

Операционные системы Взаимоблокировки (тупики, deadlock) ОС выделяет ресурс R1 процессу Р2,

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

Взаимоблокировки (тупики, deadlock)

ОС выделяет ресурс R1 процессу Р2, а

ресурс R2 - процессу Р1.
В результате каждый процесс ожидает получения одного из двух ресурсов.
При этом ни один из них не освобождает уже имеющийся ресурс, ожидая получения второго ресурса для выполнения функций, требующих наличия двух ресурсов.
В результате процессы оказываются взаимно заблокированными.
Слайд 117

Операционные системы Взаимоблокировки (тупики, deadlock) Удобно моделировать условия возникновения тупиков, используя

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

Взаимоблокировки (тупики, deadlock)

Удобно моделировать условия возникновения тупиков, используя направленные

графы.
Графы имеют 2 вида узлов: процессы-кружочки и ресурсы-квадратики.
Ребро, направленное от квадрата (ресурса) к кружку (процессу), означает, что ресурс был запрошен, получен и используется.
Ребро, направленное от процесса (кружка) к ресурсу (квадрату), означает, что процесс в данный момент заблокирован и находится в состоянии ожидания доступа к этому ресурсу. Цикл в графе означает наличие взаимной блокировки процессов.
Слайд 118

Операционные системы Проблема “голодание” R R R R P1 P2 P3

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

Проблема “голодание”

R

R

R

R

P1

P2

P3

P1

P2

P3

P1

P2

P3

P1

P2

P3

Активный

Блокированные

Блокированные

Активный

Активный

Блокированные

Блокированные

Активный

Слайд 119

Операционные системы Проблема “голодание” Пусть Р1 обладает ресурсом, а Р2 и

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

Проблема “голодание”

Пусть Р1 обладает ресурсом, а Р2 и РЗ приостановлены

в ожидании освобождения ресурса R.
После выхода Р1 из критического раздела доступ к ресурсу будет получен одним из процессов Р2 или РЗ.
Пусть ОС предоставила доступ к ресурсу процессу РЗ.
Пока он работает с ресурсом, доступ к ресурсу вновь требуется процессу Р1.
Слайд 120

Операционные системы Проблема “голодание” В результате по освобождении ресурса R процессом

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

Проблема “голодание”

В результате по освобождении ресурса R процессом РЗ может

оказаться, что ОС вновь предоставит доступ к ресурсу процессу Р1.
Тем временем процессу РЗ вновь требуется доступ к ресурсу R.
Теоретически возможна ситуация, в которой процесс Р2 никогда не получит доступа к требуемому ему ресурсу, несмотря на то что никакой взаимной блокировки в данном случае нет.
Слайд 121

Операционные системы 2.6.3. Сотрудничество с использованием разделения Процессы, взаимодействующие с другими

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

2.6.3. Сотрудничество с использованием разделения

Процессы, взаимодействующие с другими процессами без

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

Проблемы: взаимоисключение, взаимоблокировка, голодание. Дополнительно: синхронизация процессов для обеспечения согласованности данных
Пример: пусть должно выполняться a = b при начальном значении a = b = 1
1-й вариант: процессы выполняются последовательно
P1: a = a + 1; b = b + 1; P2: b = 2 * b; a = 2 * a;
2-й вариант: процессы прерывают друг друга
P1: a = a + 1; прерывание; P2: b = 2 * b; прерывание;
P1: b = b + 1; прерывание; P2: a = 2 * a;
Согласование нарушено: a = 4, b = 3

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

Слайд 122

Операционные системы 2.6.3. Сотрудничество с использованием разделения Набор процессов называется детерминированным,

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

2.6.3. Сотрудничество с использованием разделения

Набор процессов называется детерминированным, если всякий

раз при псевдопараллельном исполнении для одного и того же набора входных данных он дает одинаковые выходные данные.В противном случае он недетерминирован.
Детерминированный набор процессов можно безбоязненно выполнять в режиме разделения времени. Для недетерминированного набора такое исполнение нежелательно.
Про недетерминированный набор программ говорят, что он имеет race condition (состояние гонки, состояние состязания).
Слайд 123

Операционные системы 2.6.3. Сотрудничество с использованием разделения Задачу упорядоченного доступа к

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

2.6.3. Сотрудничество с использованием разделения

Задачу упорядоченного доступа к разделяемым данным

(устранение race condition) в том случае, если нам не важна его очередность, можно решить, если обеспечить каждому процессу эксклюзивное право доступа к этим данным.
Каждый процесс, обращающийся к разделяемым ресурсам, исключает для всех других процессов возможность одновременного с ним общения с этими ресурсами, если это может привести к недетерминированному поведению набора процессов. Такой прием называется взаимоисключением (mutual exclusion).
Слайд 124

Операционные системы 2.6.4. Сотрудничество с использованием связи При сотрудничестве с использованием

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

2.6.4. Сотрудничество с использованием связи

При сотрудничестве с использованием связи различные

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

Операционные системы 2.6.4. Сотрудничество с использованием связи Поскольку в процессе передачи

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

2.6.4. Сотрудничество с использованием связи

Поскольку в процессе передачи сообщений не

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

Операционные системы 2.6.4. Методы взаимоисключений Запрещение прерываний при входе в критическую

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

2.6.4. Методы взаимоисключений

Запрещение прерываний при входе в критическую область и

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

F(D)=1?

Да, свободен

Нет, занят

Попытка доступа к разделяемому ресурсу D

Занять ресурс F(D)=0

Критическая секция (работа с ресурсом D)

Освободить ресурс F(D)=1

Неделимая (атомарная) операция “проверка-установка”
Команды TC, BTR, BTS процессора Pentium (анализ и присвоение значения логической переменной)

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

Слайд 127

Операционные системы 3.Использование системных функций входа в критическую секцию Системный вызов

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

3.Использование системных функций входа в критическую секцию

Системный вызов
EnterCriticalSection()

Попытка доступа

к разделяемому ресурсу D

F(D)=1?

Нет

Да

Перевести данный поток в ожидание D

Установить блокирующую переменную в состояние “Занято”, F(D) = 0

Критическая секция (работа с ресурсом D)

Установить блокирующую переменную в состояние “Свободно”, F(D) = 1

Перевести поток, ожидающий ресурс D, в состояние Готовность

Системный вызов
LeaveCriticalSection()

Достоинство: исключается потеря времени процессора на циклическую проверку освобождения занятого ресурса.

Недостаток: растут накладные расходы ОС по реализации функции входа в критическую секцию и выхода из нее

Слайд 128

Операционные системы 4. Семафоры Дейкстры (Dijkstra) Семафор: переменная S, примитивы P

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

4. Семафоры Дейкстры (Dijkstra)

Семафор: переменная S, примитивы P (proberen –

проверка (==0); уменьшение, down) и V (verhogen – увеличение, up)
V(S) – переменная S увеличивается на 1 единым действием. Выборка, наращивание и запоминание не могут быть прерваны. К переменной S нет доступа во время выполнения этой операции.
P(S) – переменная S уменьшается на 1, если это возможно, оставаясь в области неотрицательных значений. Если S уменьшить невозможно, поток, выполняющий операцию P, ждет, пока это уменьшение станет возможным (Пока S==0 поток блокируется). Операция P неделима.
В частном случае семафор S может принимать двоичные значения 0 и 1, превращаясь в блокирующую переменную (двоичный семафор – мьютекс).
Операция P заключает в себе потенциальную возможность перехода процесса, который ее выполняет, в состояние ожидания (если S = 0).
Операция V может при некоторых обстоятельствах активизировать процесс, приостановленный операцией P.
Для хранения процессов, ожидающих семафоры, используется очередь, работающая по принципу FIFO (Первым зашел – первым вышел).
Слайд 129

Операционные системы f e N Начальные значения семафоров e = N;

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

f

e

N

Начальные значения семафоров
e = N; f = 0

P(e)

Работа с разделяемым

ресурсом (e=e-1)

V(f) ( f=f+1)

Потоки-писатели

Потоки-читатели

Буферный пул

e > 0

P(f)

f > 0

Работа с разделяемым ресурсом (f=f-1)

V(e) (e=e+1)

e – пустые буферы, f – занятые буферы

Слайд 130

Операционные системы 5. Мониторы Хоара и Хансена Монитор — это механизм

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

5. Мониторы Хоара и Хансена

Монитор — это механизм организации параллелизма,

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

Суть этого механизма сводится к следующему.

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

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

При отказе в доступе монитор блокирует обратившийся к нему процесс и определяет условие ожидания. Проверка условия ожидания выполняется самим монитором, который и деблокирует ожидающий процесс.

Слайд 131

Операционные системы Описание структуры и функциональной схемы монитора Внутренние данные монитора

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

Описание структуры и функциональной схемы монитора

Внутренние данные монитора могут быть

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

Операционные системы Абстрактное описание структуры монитора: monitor monitor_name { Описание глобальных

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

Абстрактное описание структуры монитора:

monitor monitor_name
{
Описание глобальных переменных;
void m1(…){
…………
}
void m2(…){
…………
}
…………….
void mn(…){
…………
}
{
блок

инициализации внутренних переменных
}
}
Слайд 133

Операционные системы Абстрактное описание структуры монитора: Здесь функции m1, m2, …

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

Абстрактное описание структуры монитора:

Здесь функции m1, m2, … mn представляют

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

Операционные системы Описание функционирования монитора Если процесс обращается к некоторой процедуре

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

Описание функционирования монитора

Если процесс обращается к некоторой процедуре монитора, а

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

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

Слайд 135

Операционные системы Описание функционирования монитора Чтобы гарантировать, что процесс, находящийся в

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

Описание функционирования монитора

Чтобы гарантировать, что процесс, находящийся в ожидании некоторого

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

Операционные системы Пример монитора Хоара monitor Resourse { condition free; //

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

Пример монитора Хоара

monitor Resourse
{
condition free; // условие - свободный
boolean

busy ; // занят
void REQUEST() // запрос
{
if(busy) WAIT (free);
busy==true;
TakeOff();// выдать ресурс
}
void RELEASE()
{
TakeOn() ; // взять ресурс
busy=false;
SIGNAL ( free );
}
{
busy=false;
}
}
Слайд 137

Операционные системы Пример монитора Хоара Единственный ресурс динамически запрашивается и освобождается

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

Пример монитора Хоара

Единственный ресурс динамически запрашивается и освобождается процессами, которые

обращаются к процедурам REQUEST (запрос) и RELEASE (освободить). Если процесс обращается к процедуре REQUEST в тот момент, когда ресурс используется, значение переменной busy (занято) будет равно true, и процедура REQUEST выполнит операцию монитора WAIT(free). Эта операция блокирует не процедуру REQUEST, а обратившийся к ней процесс, который помещается в конец очереди процессов, ожидающих, пока не будет выполнено условие free (свободно).

Когда процесс, использующий ресурс, обращается к процедуре RELEASE, операция монитора SIGNAL деблокирует процесс, находящийся в начале очереди, не позволяя исполняться никакой другой процедуре внутри того же монитора. Этот деблокированный процесс будет готов возобновить исполнение процедуры REQUEST сразу же после операции WAIT(free), которая его и блокировала. Если операция SIGNAL(free) выполняется в то время, когда нет процесса, ожидающего условия free, то никаких действий не выполняется.

Слайд 138

Операционные системы Реализация мониторов Мониторы представляют собой особые конструкции языка программирования.

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

Реализация мониторов

Мониторы представляют собой особые конструкции языка программирования. Компилятор вызовы

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

Мониторы встречаются в таких языках программирования, как параллельный Евклид, параллельный Паскаль, Java и т.д.

Слайд 139

Операционные системы Решение задачи производитель-потребитель с помощью мониторов: monitor ProducerConsumer {

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

Решение задачи производитель-потребитель с помощью мониторов:

monitor ProducerConsumer
{
condition full, empty;
int count;
void

put()
{
if(count==N) wait(full);
put_item();
count++;
if(count==1) signal(empty);
}
Слайд 140

Операционные системы Решение задачи производитель-потребитель с помощью мониторов: void get() {

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

Решение задачи производитель-потребитель с помощью мониторов:

void get()
{
if(count==0) wait(empty);
get_item();
count--;
if(count==N-1) signal(full);
}
{
count=0;
}
}

Слайд 141

Операционные системы Решение задачи производитель-потребитель с помощью мониторов: Producer: while(1) {

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

Решение задачи производитель-потребитель с помощью мониторов:

Producer:
while(1)
{
produce_item();
ProducerConsumer.put();
}
Consumer:
while(1)
{
ProducerConsumer.get();
consume_item();
}

Слайд 142

Операционные системы 2.6.5. Взаимоблокировки (тупики) Условия возникновения взаимоблокировки (тупиковой) ситуации: Взаимное

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

2.6.5. Взаимоблокировки (тупики)

Условия возникновения взаимоблокировки (тупиковой) ситуации:
Взаимное исключение. Каждый ресурс

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

Стратегии борьбы с взаимоблокировками:
1. Пренебрежение проблемой в целом. 2. Обнаружение и устранение взаимоблокировок (восстановление). 3. Недопущение тупиковых ситуаций с помощью аккуратного распределения ресурсов. 4. Предотвращать с помощью структурного опровержения одного из четырех условий, необходимых для взаимоблокировки

Слайд 143

Операционные системы Методы обнаружения взаимоблокировок В системе один ресурс каждого типа.

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

Методы обнаружения взаимоблокировок

В системе один ресурс каждого типа.
Например, пусть

система из семи процессов (A, B, C, D, E, F, G) и шести ресурсов (R, S, T, V, W, U) в некоторый момент соответствует следующему списку:
Процесс A занимает ресурс R и хочет получить ресурс S.
Процесс B ничего не использует, но хочет получить ресурс T.
Процесс C ничего не использует, но хочет получить ресурс S.
Процесс D занимает ресурс U и хочет получить ресурсы S и T.
Процесс E занимает ресурс T и хочет получить ресурс V.
Процесс F занимает ресурс W и хочет получить ресурс S.
Процесс G занимает ресурс V и хочет получить ресурс U.
ВОПРОС: Заблокирована ли эта система и если да, то какие процессы в этом участвуют?
ОТВЕТ МОЖНО ПОЛУЧИТЬ, ПОСТРОИВ ГРАФ РЕСУРСОВ И ПРОЦЕССОВ.
Слайд 144

Операционные системы цикл R A C S F D B T

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

цикл

R

A

C

S

F

D

B

T

E

U

W

G

V

Граф ресурсов и процессов

Слайд 145

Операционные системы 2. В системе несколько ресурсов каждого типа. P =

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

2. В системе несколько ресурсов каждого типа.

P = {P1, P2,

. . . , Pn} – множество процессов, n – число процессов;
E = {E1, E 2, . . . , Em } – множество ресурсов, m – число типов ресурсов;
A = {A1, A2, . . . , Am} – вектор свободных ресурсов; AJ <= EJ, j = 1, m;
C = {cI J | i = 1, n; j = 1, m } – матрица текущего распределения ресурсов, сij – количество ресурсов класса j, занятого процессом Pi;
R = {ri j | i = 1, n; j = 1, m } – матрица запрашиваемых ресурсов, rij – количество ресурсов класса j, запрашиваемого процессом Pi.
Существующие ресурсы Доступные ресурсы
E = {E1, E 2, . . . , Em } A = {A1, A2, . . . , Am}
c11 c12 . . . . c1m r11 r12 . . . . r1m
c21 c21 . . . . c2m r21 r22 . . . . r2m
. . . . . . . . . . . . . .
cn1 cn2 cnm rn1 rn2 . . . . Rnm
Слайд 146

Операционные системы Алгоритм обнаружения тупиков Основан на сравнении векторов ресурсов. В

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

Алгоритм обнаружения тупиков

Основан на сравнении векторов ресурсов. В исходном состоянии

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

Алгоритм
Ищется процесс Pi , для которого i – я строка матрицы R меньше вектора
A, т. е. Ri <= Aj или ri j <= Aj , j = 1, m.
Если такой процесс найден, он маркируется, и далее прибавляется I - я
строка матрицы С к вектору A, т.е. Aj := Aj + сi j , j = 1, m.
Возврат к шагу 1.
3. Если таких процессов не существует, работа алгоритма заканчивается. Если есть немаркированные процессы, то они попали в тупик.

Слайд 147

Операционные системы Методы устранения тупиков Принудительная выгрузка ресурсов. Изъятие ресурса у

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

Методы устранения тупиков

Принудительная выгрузка ресурсов. Изъятие ресурса у процесса, передача

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

Операционные системы 2.6.6. Синхронизирующие объекты ОС Для синхронизации потоков, принадлежащих разным

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

2.6.6. Синхронизирующие объекты ОС

Для синхронизации потоков, принадлежащих разным процессам, ОС

должна предоставлять потокам системные объекты синхронизации.
К таким объектам относятся события (event), мьютексы (mutex – mutual exclusion – взаимное исключение), системные семафоры и др.
Объект-событие используется для того, чтобы оповестить потоки о том, что некоторые действия завершены.
Мьютекс (простейший двоичный семафор) используется для управления взаимным исключением доступа к совместно используемым данным.
Семафоры используются для оповещения свершения последовательности событий.

Для синхронизации используются также “обычные ” объекты ОС: файлы, процессы, потоки

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

Слайд 149

Операционные системы 2.6.6. Синхронизирующие объекты ОС При переходе объекта в сигнальное

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

2.6.6. Синхронизирующие объекты ОС

При переходе объекта в сигнальное состояние ожидающий

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

Операционные системы 2.6.6. Синхронизирующие объекты ОС Синхронные сигналы чаще всего приходят

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

2.6.6. Синхронизирующие объекты ОС

Синхронные сигналы чаще всего приходят от системы

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

Операционные системы 2.6.7. Средства взаимодействия ОС между процессами Программный канал связи

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

2.6.7. Средства взаимодействия ОС между процессами

Программный канал связи (pipe), или,

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

Конвейеры

Когда процесс А хочет отправить данные процессу В, он пишет их в канал, как если бы это был выходной файл (псевдофайл).
Процесс В читает данные из канала, как если бы он был входным файлом (псевдофайл).
Подобное средство взаимодействия используется в операционной системе UNIX.

Слайд 152

Операционные системы Операции записи и чтения осуществляются потоком байтов, как это

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

Операции записи и чтения осуществляются потоком байтов, как это принято

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

Конвейеры

Канал представляет собой поток данных между двумя (или более) процессами.
На самом деле конвейеры не являются файлами на диске, а представляют собой буферную память, работающую по принципу FIFO, то есть по принципу обычной очереди.

Слайд 153

Операционные системы Конвейер имеет определенный размер, который не может превышать 64

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

Конвейер имеет определенный размер, который не может превышать 64 Кбайт

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

Конвейеры

Слайд 154

Операционные системы В начальный момент оба указателя равны нулю. Добавление самого

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

В начальный момент оба указателя равны нулю. Добавление самого первого

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

Конвейеры

Слайд 155

Операционные системы В результате операций записи (добавления) и чтения (удаления) элементов

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

В результате операций записи (добавления) и чтения (удаления) элементов в

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

Конвейеры

Слайд 156

Операционные системы Как информационная структура конвейер описывается идентификатором, размером и двумя

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

Как информационная структура конвейер описывается идентификатором, размером и двумя указателями.

Конвейеры представляют собой системный ресурс.

Конвейеры

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

Слайд 157

Операционные системы Основные системные запросы для работы с конвейерами на примере

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

Основные системные запросы для работы с конвейерами на примере API

OS/2:

Конвейеры

Функция чтения из конвейера:
DosRead (&ReadHandle, (PVOID)&Inform, sizeof(Inform). &BytesRead);
Здесь ReadHandle — дескриптор чтения из конвейера, Inform — переменная любого типа, sizeof(Inform) — размер переменной Inform, BytesRead — количество прочитанных байтов. Данная функция при обращении к пустому конвейеру будет ожидать, пока в нем не появится информация для чтения.

Функция создания конвейера:
DosCreatePipe (&ReadHandle, &WriteHandle, PipeSize);
Здесь ReadHandle — дескриптор чтения из конвейера, WriteHandle — дескриптор записи в конвейер, PipeSize — размер конвейера.

Функция записи в конвейер:
DosWrite (&WriteHandle. (PVOID)&Inform, sizeofCInform),&SBytesWrite);
Здесь WriteHandle — дескриптор записи в конвейер, BytesWrite — количество записанных байтов.

Слайд 158

Операционные системы Очереди (queues) сообщений представляют собой метод связи между взаимодействующими

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

Очереди (queues) сообщений представляют собой метод связи между взаимодействующими

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

2.6.7. Средства взаимодействия ОС между процессами

Очереди сообщений

Слайд 159

Операционные системы С помощью очередей можно из одного или нескольких процессов

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

С помощью очередей можно из одного или нескольких процессов

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

Очереди сообщений

Слайд 160

Операционные системы Очереди сообщений предоставляют возможность использовать несколько дисциплин обработки сообщений:

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

Очереди сообщений предоставляют возможность использовать несколько дисциплин обработки сообщений:
FIFO

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

Очереди сообщений

Слайд 161

Операционные системы В очередях присутствуют не непосредственно сами сообщения, а только

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

В очередях присутствуют не непосредственно сами сообщения, а только

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

Очереди сообщений

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

Слайд 162

Операционные системы Во время чтения из очереди задача-приемник пользуется следующей информацией:

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

Во время чтения из очереди задача-приемник пользуется следующей информацией:
идентификатор

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

Очереди сообщений

Слайд 163

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

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

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

параметров, поскольку в различных ОС обращения к этим функциям могут существенно различаться):
CreateQueue — создание новой очереди;
OpenQueue — открытие существующей очереди;
ReadQueue — чтение и удаление сообщения из очереди;
PeekQueue — чтение сообщения без его последующего удаления из очереди;
WriteQueue — добавление сообщения в очередь;
CloseQueue — завершение использования очереди;
PurgeQueue — удаление из очереди всех сообщений;
QueryQueue — определение числа элементов в очереди.

Очереди сообщений

Слайд 164

Операционные системы Почтовые ящики, используемые в Windows 2000, в некоторых аспектах

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

Почтовые ящики, используемые в Windows 2000, в некоторых аспектах подобны

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

2.6.7. Средства взаимодействия ОС между процессами

Почтовые ящики

Слайд 165

Операционные системы В случае прямой адресации их можно обозначать так: send(P,

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

В случае прямой адресации их можно обозначать так:
send(P, message)

- послать сообщение message процессу Р;
receive(Q, message) - получить сообщение message от процесса Q,.
В случае непрямой адресации мы будем обозначать их так:
send(A, message) - послать сообщение message в почтовый ящик А;
receive(A, message) - получить сообщение message из почтового ящика А.

Почтовые ящики

Слайд 166

Операционные системы Примитивы send и receive уже имеют скрытый от наших

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

Примитивы send и receive уже имеют скрытый от наших глаз

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

Почтовые ящики

Слайд 167

Операционные системы Сокеты (ОС Windows 2000) подобны каналам, с тем отличием,

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

Сокеты (ОС Windows 2000) подобны каналам, с тем отличием, что

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

2.6.7. Средства взаимодействия ОС между процессами

Сокеты

Слайд 168

Операционные системы Вызов удаленной процедуры (Remote Procedure Call, RPC) представляет собой

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

Вызов удаленной процедуры (Remote Procedure Call, RPC) представляет собой способ,

которым процесс А просит процесс В вызвать процедуру в адресном пространстве процесса В от имени процесса А и вернуть результат процессу А.

2.6.7. Средства взаимодействия ОС между процессами

Вызов удаленной процедуры

Слайд 169

Операционные системы Процессы могут совместно использовать память для одновременного отображения одного

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

Процессы могут совместно использовать память для одновременного отображения одного и

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

2.6.7. Средства взаимодействия ОС между процессами

Разделяемая память

Слайд 170

Операционные системы 2.7. Аппаратно-программные средства поддержки мультипрограммирования 2.7.1. Системы прерываний Классы

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

2.7. Аппаратно-программные средства поддержки мультипрограммирования

2.7.1. Системы прерываний

Классы прерываний: внешние, внутренние,

программные

1. Внешние прерывания – результат действий пользователя, сигналы от периферийных устройств компьютера и управляемых объектов.

2. Внутренние прерывания – результат появления аварийных ситуаций при выполнении инструкции программы.

3. Программные прерывания – результат выполнения запланированных в программе особых инструкций (системный вызов).

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

Слайд 171

Операционные системы 2.7. Аппаратно-программные средства поддержки мультипрограммирования 2.7.1. Системы прерываний Операционные

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

2.7. Аппаратно-программные средства поддержки мультипрограммирования

2.7.1. Системы прерываний

Операционные системы имеют специальные

модули для работы с прерываниями - обработчики прерываний, или процедуры обслуживания прерываний (Interrupt Service Routine, ISR).
Аппаратные прерывания обрабатываются драйверами соответствующих внешних устройств, исключения - специальными модулями ядра, а программные прерывания - процедурами ОС, обслуживающими системные вызовы.
Слайд 172

Операционные системы 2.7. Аппаратно-программные средства поддержки мультипрограммирования 2.7.1. Системы прерываний Кроме

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

2.7. Аппаратно-программные средства поддержки мультипрограммирования

2.7.1. Системы прерываний

Кроме этих моделей

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

Операционные системы 2.7. Аппаратно-программные средства поддержки мультипрограммирования 2.7.1. Системы прерываний В

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

2.7. Аппаратно-программные средства поддержки мультипрограммирования

2.7.1. Системы прерываний

В случае векторных

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

Операционные системы 2.7. Аппаратно-программные средства поддержки мультипрограммирования 2.7.1. Системы прерываний В

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

2.7. Аппаратно-программные средства поддержки мультипрограммирования

2.7.1. Системы прерываний

В этом случае

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

Операционные системы 2.7. Аппаратно-программные средства поддержки мультипрограммирования 2.7.1. Системы прерываний Вектор

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

2.7. Аппаратно-программные средства поддержки мультипрограммирования

2.7.1. Системы прерываний

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

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

Операционные системы 2.7. Аппаратно-программные средства поддержки мультипрограммирования 2.7.1. Системы прерываний Однако

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

2.7. Аппаратно-программные средства поддержки мультипрограммирования

2.7.1. Системы прерываний

Однако при совместном

использовании одного уровня IRQ несколькими устройствами обработка прерываний реализуется по схеме опрашиваемых прерываний, т. е. в данном случае необходимо выполнить опрос всех устройств, подключенных к данному уровню IRQ (Interrupt Request).
Слайд 177

Операционные системы 2.7. Аппаратно-программные средства поддержки мультипрограммирования 2.7.1. Системы прерываний Обычно

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

2.7. Аппаратно-программные средства поддержки мультипрограммирования

2.7.1. Системы прерываний

Обычно в ОС поддерживается

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

Операционные системы Последовательность действий при обработке прерываний Первичное аппаратное распознавание типа

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

Последовательность действий при обработке прерываний

Первичное аппаратное распознавание типа прерывание. Если

прерывания запрещены, продолжается текущая программа. В противном случае вызывается диспетчер прерываний и в зависимости от поступившей в процессор информации (вектор прерывания, приоритет и др.) производится вызов процедуры обработки прерывания.
Сохраняется некоторая часть контекста прерванного потока, которая позволит возобновить его исполнение после обработки прерывания (обычно слово состояния процессора – регистр EFLAGS в Pentium, регистры общего назначения). Может быть сохранен и полный контекст, если ОС обслуживает прерывание со сменой процесса.
В счетчик команд загружается адрес процедуры обработки прерывания и устанавливается новое PSW, которое определяет привилегированный режим работы процессора при обработке прерывания.
Маскированием прерываний временно запрещаются прерывания данного типа, чтобы не образовалась очередь вложенных друг в друга потоков одной и той же процедуры.
После обработки прерывания ядром операционной системы, прерванный контекст восстанавливается (частично аппаратно – PSW, содержимое счетчика команд, частично программно – извлечение данных из стека), снимается обработка прерываний данного типа и работа потока возобновляется с прерванного места.
Слайд 179

Операционные системы 2.7.2. Системные вызовы Системный вызов позволяет приложению обратиться к

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

2.7.2. Системные вызовы

Системный вызов позволяет приложению обратиться к ОС с

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

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

Возможные схемы обслуживания системных вызовов:
1. Децентрализованная –за каждым системным вызовом закреплен свой вектор прерываний. Достоинство – высокая скорость обработки системных вызовов, недостаток – разрастание таблицы векторов прерываний. 2. Централизованная – с помощью диспетчера системных вызовов. При любом системном вызове приложение выполняет программное прерывание с определенным и единственным номером.

Слайд 180

Операционные системы Таблица прерываний системы Адрес диспетчера системных вызовов Диспетчер системных

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

Таблица прерываний системы

Адрес диспетчера системных вызовов

Диспетчер системных вызовов

Процедура обработки системного

вызова 21h

Процедура обработки системного вызова 22h

Процедура обработки системного вызова 23h

Виртуальное адресное пространство

RQ=21h

Системный

вызов

Адрес процедуры 21h

Адрес процедуры 22h

Адрес процедуры 23h

Централизованная схема обработки системных вызовов

Вектор 80h Linux

INT 2Eh Pentium

Слайд 181

Операционные системы Централизованная схема обработки системных вызовов Перед выполнением прерывания приложение

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

Централизованная схема обработки системных вызовов

Перед выполнением прерывания приложение передает операционной

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

Операционные системы Централизованная схема обработки системных вызовов Любой системный вызов приводит

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

Централизованная схема обработки системных вызовов

Любой системный вызов приводит к запуску

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

Операционные системы Централизованная схема обработки системных вызовов Процедура реализации системного вызова

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

Централизованная схема обработки системных вызовов

Процедура реализации системного вызова извлекает из

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

Операционные системы Централизованная схема обработки системных вызовов Операционная система выполняет системные

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

Централизованная схема обработки системных вызовов

Операционная система выполняет системные вызовы, в

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