
- •Тема 2. Организация вычислительного процесса.
- •2.1. Концепция процессов и потоков.
- •2.1. Концепция процессов и потоков.
- •2.1. Концепция процессов и потоков.
- •2.1. Концепция процессов и потоков.
- •2.1. Концепция процессов и потоков.
- •2.1. Концепция процессов и потоков.
- •2.1. Концепция процессов и потоков.
- •2.1. Концепция процессов и потоков.
- •2.1. Концепция процессов и потоков.
- •2.1. Концепция процессов и потоков.
- •2.1. Концепция процессов и потоков. Задания,
- •2.1. Концепция процессов и потоков.
- •2.1. Концепция процессов и потоков.
- •2.1. Концепция процессов и потоков.
- •2.1. Концепция процессов и потоков.
- •2.1. Концепция процессов и потоков.
- •2.1. Концепция процессов и потоков.
- •Взаимосвязь между заданиями, процессами и потоками Задание
- •2.1. Концепция процессов и потоков.
- •2.1. Концепция процессов и потоков.
- •Задание (JOB)
- •2.2. Мультипрограммирование. Формы
- •2.2.1. Мультипрограммирование в системах пакетной обработки
- •2.2.1. Мультипрограммирование в системах пакетной обработки
- •2.2.1. Мультипрограммирование в системах пакетной обработки
- •2.2.1. Мультипрограммирование в системах пакетной обработки
- •2.2.2. Мультипрограммирование в системах разделения времени
- •2.2.2. Мультипрограммирование в системах
- •2.2.2. Мультипрограммирование в системах разделения времени
- •2.2.3. Мультипрограммирование в системах реального времени
- •2.2.3. Мультипрограммирование в системах
- •2.2.3. Мультипрограммирование в системах реального времени
- •2.2.3. Мультипроцессорная обработка
- •2.2.3. Мультипроцессорная обработка
- •2.2.3. Мультипроцессорная обработка
- •2.2.3. Мультипроцессорная обработка
- •2.2.3.Мультипроцессорная обработка
- •2.2.3.Мультипроцессорная обработка
- •2.2.3. Мультипроцессорная обработка
- •2.2.3.Мультипроцессорная обработка
- •2.2.3. Мультипроцессорная обработка
- •2.2.3.Мультипроцессорная обработка
- •2.3.Управление процессами и потоками
- •2.3.Управление процессами и потоками
- •2.3.Управление процессами и потоками
- •2.3.Управление процессами и потоками
- •2.3.Управление процессами и потоками
- •2.3.Управление процессами и потоками
- •2.3.Управление процессами и потоками
- •2.3.2. Роль процессов, потоков и волокон в мультипрограммировании
- •2.3.2. Роль процессов, потоков и волокон в мультипрограммировании
- •2.4. Создание процессов и потоков.
- •2.4. Создание процессов и потоков.
- •2.4. Создание процессов и потоков. Модели процессов и потоков
- •2.4. Создание процессов и потоков. Модели процессов и потоков
- •Дескриптор процесса (блок управления) содержит:
- •Идентификация процесса
- •Информация по состоянию и управлению процессом
- •КОНТЕКСТ ПРОЦЕССА
- •Простейшая модель процесса
- •Простейшая модель процесса
- •Новый
- •Модель с тремя состояниями
- •2.4.2. Потоки и их модели
- •Поток на уровне пользователя (в пользовательском пространстве)
- •Поток на уровне пользователя (в
- •Поток на уровне пользователя (в
- •Поток на уровне пользователя ДОСТОИНСТВА:
- •Поток на уровне пользователя НЕДОСТАТКИ:
- •Поток на уровне ядра
- •Поток на уровне ядра
- •Поток на уровне ядра
- •Потоки и их модели
- •2.5.Планирование заданий, процессов и потоков
- •2.5.Планирование заданий, процессов и потоков
- •2.5.Планирование заданий, процессов и потоков
- •2.5.Планирование заданий, процессов и потоков
- •2.5.Планирование заданий, процессов и потоков
- •2.5.Планирование заданий, процессов и потоков
- •2.5.Планирование заданий, процессов и потоков
- •2.5.Планирование заданий, процессов и потоков
- •2.5.Планирование заданий, процессов и потоков
- •Схема планирования с учетом очередей заданий (процессов)
- •Долгосрочное
- •Граф состояния потока
- •Граф состояния потока
- •Граф состояния потока
- •Типичный граф состояния потока
- •Алгоритмы планирования потоков
- •Алгоритмы планирования потоков
- •Алгоритмы планирования потоков
- •Простейший алгоритм планирования, реализующий состояния потока для типичного графа состояния потоков
- •Кванты, выделяемые потокам, могут быть равными или различными (типичное значение десятки - сотни
- •Алгоритм планирования, реализующий предпочтения потокам с интенсивным вводом-выводом
- •Алгоритм планирования, реализующий предпочтения потокам с интенсивным вводом-выводом
- •Алгоритм планирования, реализующий предпочтения потокам с интенсивным вводом-выводом
- •Граф состояния потока
- •Алгоритмы приоритетного планирования
- •Алгоритмы приоритетного планирования
- •Алгоритмы приоритетного планирования
- •Алгоритмы приоритетного планирования
- •Алгоритмы приоритетного планирования
- •Алгоритмы приоритетного планирования
- •приоритеты
- •Алгоритмы приоритетного планирования
- •Алгоритмы приоритетного планирования
- •Изменение базового приоритета потока Увеличение приоритета
- •Работоспособные процессы (потоки)
- •2.6. Взаимодействие и синхронизация процессов и потоков
- •2.6. Взаимодействие и синхронизация процессов и потоков
- •2.6.2. Конкуренция процессов в борьбе за ресурсы
- •Взаимоблокировки (тупики, deadlock)
- •Взаимоблокировки (тупики, deadlock)
- •Взаимоблокировки (тупики, deadlock)
- •Проблема “голодание”
- •Проблема “голодание”
- •Проблема “голодание”
- •2.6.3. Сотрудничество с использованием разделения
- •2.6.3. Сотрудничество с использованием
- •2.6.3. Сотрудничество с использованием
- •2.6.4. Сотрудничество с использованием связи
- •2.6.4. Сотрудничество с использованием связи
- •2.6.4.Методы взаимоисключений
- •3.Использование системных функций входа в критическую секцию
- •4. Семафоры Дейкстры (Dijkstra)
- •5. Мониторы Хоара и Хансена
- •Описание структуры и функциональной схемы
- •Абстрактное описание структуры монитора:
- •Абстрактное описание структуры монитора:
- •Описание функционирования монитора
- •Описание функционирования монитора
- •Пример монитора Хоара
- •Пример монитора Хоара
- •Реализация мониторов
- •Решение задачи производитель-потребитель с помощью мониторов:
- •Решение задачи производитель-потребитель с помощью мониторов:
- •Решение задачи производитель-потребитель с помощью мониторов:
- •2.6.5. Взаимоблокировки (тупики)
- •Методы обнаружения взаимоблокировок
- •Граф ресурсов и процессов
- •2. В системе несколько ресурсов каждого типа.
- •Алгоритм обнаружения тупиков
- •Методы устранения тупиков
- •2.6.6. Синхронизирующие объекты ОС
- •2.6.6. Синхронизирующие объекты ОС
- •2.6.6. Синхронизирующие объекты ОС
- •2.6.7. Средства взаимодействия ОС между
- •Конвейеры
- •Конвейеры
- •Конвейеры
- •Конвейеры
- •Конвейеры
- •Конвейеры
- •2.6.7. Средства взаимодействия ОС между
- •Очереди сообщений
- •Очереди сообщений
- •Очереди сообщений
- •Очереди сообщений
- •Очереди сообщений
- •2.6.7. Средства взаимодействия ОС между
- •Почтовые ящики
- •Почтовые ящики
- •2.6.7. Средства взаимодействия ОС между процессами
- •2.6.7. Средства взаимодействия ОС между
- •2.6.7. Средства взаимодействия ОС между
- •2.7. Аппаратно-программные средства поддержки
- •2.7. Аппаратно-программные средства поддержки мультипрограммирования
- •2.7. Аппаратно-программные средства поддержки мультипрограммирования
- •2.7. Аппаратно-программные средства поддержки мультипрограммирования
- •2.7. Аппаратно-программные средства поддержки мультипрограммирования
- •2.7. Аппаратно-программные средства поддержки
- •2.7. Аппаратно-программные средства поддержки мультипрограммирования
- •2.7. Аппаратно-программные средства поддержки мультипрограммирования
- •Последовательность действий при обработке прерываний
- •2.7.2. Системные вызовы
- •Централизованная схема обработки системных вызовов
- •Централизованная схема обработки системных вызовов
- •Централизованная схема обработки системных вызовов
- •Централизованная схема обработки системных вызовов
- •Централизованная схема обработки системных вызовов

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
Ситуации, в которых два или более процессов обрабатывают разделяемые данные (файлы) и конечный результат зависит
от скоростей процессов (потоков), называются гонками.
121
Операционные системы

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

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

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

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

2.6.4.Методы взаимоисключений
1.Запрещение прерываний при входе в критическую область и разрешение прерываний после выхода из критической области. Достоинства: простота реализации. Недостатки: монополизация процессора, возможный крах ОС при сбое процесса, невозможность использования в многопроцессорных системах, так как прерывание относится к одному процессору
2.Глобальные блокирующие переменные (программный подход)
Попытка доступа к |
Нет, занят |
разделяемому ресурсу D |
Неделимая (атомарная) |
F(D)=1? |
|
|
Да, свободен |
|||
операция “проверка- |
|||
установка” |
Занять ресурс |
Недостатки: необходимость |
|
Команды TC, BTR, BTS |
|||
F(D)=0 |
постоянного опроса другими |
||
процессора Pentium |
|
потоками, требующими тот |
|
(анализ и присвоение |
|
||
|
же ресурс, блокирующей |
||
значения логической |
Критическая секция |
||
переменной; |
|||
переменной) |
(работа с ресурсом D) |
||
дополнительные затраты |
|||
|
|
||
|
|
процессорного времени, |
|
|
Освободить ресурс F(D)=1 |
применимы для потоков |
|
|
одного процесса |
||
|
|
||
|
Операционные системы |
|

3.Использование системных функций входа в критическую секцию
Попытка доступа |
Нет |
Перевести данный |
||
к разделяемому |
F(D)=1? |
|
||
ресурсу D |
|
|
поток в ожидание D |
|
|
|
|
||
|
|
|
Да |
|
Установить блокирующую |
Системный вызов |
|||
|
переменную в состояние |
|||
|
|
|||
|
|
“Занято”, F(D) = 0 |
|
EnterCriticalSection() |
Критическая секция (работа с ресурсом D)
Установить блокирующую
переменную в состояние Системный вызов “Свободно”, F(D) = 1
LeaveCriticalSection()
Перевести поток, ожидающий ресурс D, в состояние Готовность
Достоинство:
исключается потеря времени процессора на циклическую проверку освобождения занятого ресурса.
Недостаток: растут накладные расходы ОС по реализации функции входа в критическую секцию и выхода из нее
127
Операционные системы

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 (Первым зашел – первым вышел).
128
Операционные системы

|
Начальные значения |
|
|
семафоров |
|
P(e) |
e = N; f = 0 |
|
|
P(f) |
|
e > 0 |
|
f > 0 |
|
|
|
Работа с |
|
Работа с |
разделяемым |
|
|
|
разделяемым |
|
ресурсом |
|
|
|
ресурсом |
|
(e=e-1) |
|
|
|
(f=f-1) |
|
|
e |
|
|
|
|
V(f) ( f=f+1) |
Буферный пул |
V(e) (e=e+1) |
|
|
|
|
e – пустые буферы, |
|
Потоки-писатели |
f – занятые буферы |
Потоки-читатели |
|
||
|
|
|
|
Операционные системы |
129 |
|
|

5. Мониторы Хоара и Хансена
Монитор — это механизм организации параллелизма, который содержит как данные, так и процедуры, необходимые для динамического распределения конкретного общего ресурса или группы общих ресурсов.
Суть этого механизма сводится к следующему.
Процесс, желающий получить доступ к разделяемым переменным, должен обратиться к монитору (вызвать его процедуру), который либо предоставит доступ, либо откажет в нем.
Механизм монитора гарантирует взаимное исключение процессов. Процессам, которые хотят войти в монитор, когда он уже занят, приходится ждать. Режимом ожидания автоматически управляет сам монитор.
При отказе в доступе монитор блокирует обратившийся к нему процесс |
|
и определяет условие ожидания. Проверка условия ожидания |
|
выполняется самим монитором, который и деблокирует ожидающий |
|
процесс. |
|
Операционные системы |
130 |
|