 
        
        - •Тема 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.
 приостановленный операцией 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 | 
| 
 | |
