Главная страница

УМК ОС. Учебнометодический комплекс дисциплины Операционные сиcтемы по кредитной технологии обучения для студентов специальности


Скачать 2.3 Mb.
НазваниеУчебнометодический комплекс дисциплины Операционные сиcтемы по кредитной технологии обучения для студентов специальности
Дата09.02.2022
Размер2.3 Mb.
Формат файлаdoc
Имя файлаУМК ОС.doc
ТипУчебно-методический комплекс
#356789
страница4 из 16
1   2   3   4   5   6   7   8   9   ...   16
Тема лекций №3: Взаимодействие между процессами.

План

1. Передача информации от одного процессора к другому.

2. Контроль над деятельностью процессов.

3.1 Взаимодействие между процессами

Ситуации, когда приходится процессам взаимодействовать:

  • Передача информации от одного процесса другому

  • Контроль над деятельностью процессов (например: когда они борются за один ресурс)

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

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

 

3.1.1 Передача информации от одного процесса другому

Передача может осуществляться несколькими способами:

  • Разделяемая память

  • Каналы (трубы), это псевдофайл, в который один процесс пишет, а другой читает.

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

  • Почтовые ящики (только в Windows), однонаправленные, возможность широковещательной рассылки.

  • Вызов удаленной процедуры, процесс А может вызвать процедуру в процессе В,  и получить обратно данные.

     

 



Схема для канала

 

 



Схема для сокетов

 

3.1.2 Состояние состязания

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

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

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

out - переменная указывающая на следующее имя файла для печати

 



Пример состязания

Распишем события по пунктам.

  1. Процесс А считывает переменную in (равную 7), и сохраняет ее в своей переменной next_free_slot.

  2. Происходит прерывание по таймеру, и процессор переключается на процесс В.

  3. Процесс В считывает переменную in  (равную 7), и сохраняет ее в своей переменной next_free_slot.

  4. Процесс В сохраняет имя файла в сегменте 7.

  5. Процесс В увеличивает переменную next_free_slot на единицу (next_free_slot+1), и заменяет значение in на 8.

  6. Управление переходит процессу А, и продолжает с того места на котором остановился.

  7. Процесс А сохраняет имя файла в сегменте 7, затирая имя файла процесса В.

  8. Процесс А увеличивает переменную next_free_slot на единицу (next_free_slot+1), и заменяет значение in на 8.

Как видно из этой ситуации, файл процесса В не будет напечатан.

 

3.1.3 Критические области

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

Условия избегания состязания и эффективной работы процессов:

  1. Два процесса не должны одновременно находиться в критических областях.

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

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

Пример:



Взаимное исключение с использованием критических областей

 

3.1.4 Взаимное исключение с активным ожиданием

Рассмотрим методы взаимного исключения

Запрещение прерываний

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

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

Переменные блокировки

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



метод блокирующих переменных

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

Строгое чередование

В этой модели, процессы могут выполняться строго по очереди, используя переменную.



Строгое чередование

 

Недостатки метода:

  • Заблокированный процесс постоянно находится в цикле, проверяя, не изменилась ли переменная.

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

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

 

3.1.5 Примитивы взаимодействия процессов

Вводится понятия двух примитивов.

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

wakeup - системный запрос, в результате которого блокированный процесс будет запущен.

 



Применение примитивов

 

Основное преимущество - это отсутствие активного ожидания..

Проблема заключается в следующем, если спулер пуст, то wakeup срабатывает в пустую.

 

Проблема переполненного буфера (проблема производителя и потребителя)

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

Чтобы первый процесс не писал, когда буфер полный, а второй не считывал, когда он пуст, вводится переменная count для подсчета количества элементов в буфере.



Проблема переполненного буфера

 

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

Алгоритм такой ситуации:

  1. Процесс В, считал count=0 (заблокироваться он еще не успел)

  2. Планировщик передал управление процессу А

  3. Процесс А, выполнил все вплоть до wakeup, пытаясь разблокировать процесс В (но он не заблокирован, wakeup срабатывает впустую)

  4. Планировщик передал управление процессу В

  5. И он заблокировался, и больше сигнала на разблокировку не получит

  6. Процесс А в конце концов заполнит буфер и заблокируется, но сигнала на разблокировку не получит.

3.1.6 Семафоры

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

Были предложены две операции down и up (аналоги sleep и wakeup).

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

up увеличит значение семафора на 1 или разблокирует процесс находящийся в ожидании..

down уменьшает значение семафора на 1 или блокирует процесс, если семафор =0.

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

Решение проблемы переполненного буфера с помощью семафора

Применим три семафора:

full - подсчет заполненных сегментов (в начале = 0)

empty - подсчет пустых сегментов (в начале = количеству сегментов)

mutex - для исключения одновременного доступа к буферу двух процессов.  (в начале = 1)

Мьютекс упрощенная версия семафора, он управляет доступом к ресурсу. Показывает, блокирован или нет ресурс.

 



Решение проблемы переполненного буфера с помощью семафора

 

 

Применение семафоров для устройств ввода/вывода

Для устройств ввода/вывода семафор выставляется равный нулю. После запуска управляющего процесса выполняется down, и т.к. семафор равен нулю, процесс блокируется. Когда нужно активизировать процесс управления, выполняется up.

 

 

Тема лекций №4: Планирование процессов.

План

1. Основные понятия планирования процессов.

2. Планирование в системах пакетной обработки.

4.1 Основные понятия планирования процессов

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

Планировщик - отвечающая за это часть операционной системы.

Алгоритм планирования - используемый алгоритм для планирования.

Ситуации, когда необходимо планирование:

  1. Когда создается процесс

  2. Когда процесс завершает работу

  3. Когда процесс блокируется на операции ввода/вывода, семафоре, и т.д.

  4. При прерывании ввода/вывода.

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

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

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

Основные три системы:

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

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

  3. Системы реального времени - могут использовать неприоритетный и приоритетный алгоритм (например: система управления автомобилем).

Задачи алгоритмов планирования:

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

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

  3. Интерактивные системы
    Время отклика - быстрая реакция на запросы
    Соразмерность - выполнение ожиданий пользователя (например: пользователь не готов к долгой загрузке системы)

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

4.2 Планирование в системах пакетной обработки

4.2.1 "Первый пришел - первым обслужен" (FIFO - First In Fist Out)

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

Преимущества:

  • Простата

  • Справедливость (как в очереди покупателей, кто последний пришел, тот оказался в конце очереди)

Недостатки:

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

4.2.2 "Кратчайшая задача - первая"

 



Нижняя очередь выстроена с учетом этого алгоритма

 

Преимущества:

  • Уменьшение оборотного времени

  • Справедливость (как в очереди покупателей, кто без сдачи проходит в перед)

Недостатки:

  • Длинный процесс занявший процессор, не пустит более новые краткие процессы, которые пришли позже.

4.2.3 Наименьшее оставшееся время выполнение

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

 

4.2.4 Трехуровневое планирование

 



Трехуровневое планирование

 

 

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

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

 

4.3 Планирование в интерактивных системах

4.3.1 Циклическое планирование

Самый простой алгоритм планирования и часто используемый.

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

 



Пример циклического планирования

 

Преимущества:

  • Простата

  • Справедливость (как в очереди покупателей, каждому только по килограмму)

Недостатки:

  • Если частые переключения (квант - 4мс, а время переключения равно 1мс), то происходит уменьшение производительности.

  • Если редкие переключения (квант - 100мс, а время переключения равно 1мс), то происходит увеличение времени ответа на запрос.

4.3.2 Приоритетное планирование

Каждому процессу присваивается приоритет, и управление передается процессу с самым высоким приоритетом.

Приоритет может быть динамический и статический.

Динамический приоритет может устанавливаться так:

П=1/Т, где Т- часть использованного в последний раз кванта

Если использовано 1/50 кванта, то приоритет 50.

Если использован весь квант, то приоритет 1.

Т.е. процессы, ограниченные вводом/вывода, будут иметь приоритет над процессами ограниченными процессором.

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

 



Приоритетное планирование 4-х групп

 

4.3.3 Методы разделения процессов на группы

 

Группы с разным квантом времени

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

 



Процесс либо заканчивает работу, либо переходит в другую группу

Этот метод напоминает алгоритм - "Кратчайшая задача - первая".

 

Группы с разным назначением процессов

 



Процесс, отвечающий на запрос, переходит в группу с наивысшим приоритетом.

Такой механизм позволяет повысить приоритет работы с клиентом.

 

Гарантированное планирование

В системе с n-процессами, каждому процессу будет предоставлено 1/n времени процессора.

 

Лотерейное планирование

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

 

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

Процессорное время распределяется среди пользователей, а не процессов. Это справедливо если у одного пользователя несколько процессов, а у другого один.

 

4.4 Планирование в системах реального времени

Системы реального времени делятся на:

  • жесткие (жесткие сроки для каждой задачи) - управление движением

  • гибкие (нарушение временного графика не желательны, но допустимы) - управление видео и аудио

Внешние события, на которые система должна реагировать, делятся:

  • периодические - потоковое видео и аудио

  • непериодические (непредсказуемые) - сигнал о пожаре

Что бы систему реального времени можно было планировать, нужно чтобы выполнялось условие:



m - число периодических событий

i - номер события

P(i) - период поступления события

T(i) - время, которое уходит на обработку события

Т.е. перегруженная система реального времени является не планируемой.

 

4.4.1 Планирование однородных процессов

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

Т.к. все процессы важны, можно использовать циклическое планирование.

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

 

4.4.2 Общее планирование реального времени

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

Планировщик должен знать:

  • частоту, с которой должен работать каждый процесс

  • объем работ, который ему предстоит выполнить

  • ближайший срок выполнения очередной порции задания

Рассмотрим пример из трех процессов.

Процесс А запускается каждые 30мс, обработка кадра 10мс

Процесс В частота 25 кадров, т.е. каждые 40мс, обработка кадра 15мс

Процесс С частота 20 кадров, т.е. каждые 50мс, обработка кадра 5мс



Три периодических процесса

Проверяем, можно ли планировать эти процессы.

10/30+15/40+5/50=0.808<1

Условие выполняется, планировать можно.

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

 

4.4.3 Статический алгоритм планирования RMS (Rate Monotonic Scheduling)

Процессы должны удовлетворять условиям:

  • Процесс должен быть завершен за время его периода

  • Один процесс не должен зависеть от другого

  • Каждому процессу требуется одинаковое процессорное время на каждом интервале

  • У непериодических процессов нет жестких сроков

  • Прерывание процесса происходит мгновенно

Приоритет в этом алгоритме пропорционален частоте.

Процессу А он равен 33 (частота кадров)

Процессу В он равен 25

Процессу С он равен 20

Процессы выполняются по приоритету.

 



Статический алгоритм планирования RMS (Rate Monotonic Scheduling)

 

 

4.4.4 Динамический алгоритм планирования EDF (Earliest Deadline First)

Наибольший приоритет выставляется процессу, у которого осталось наименьшее время выполнения.

При больших загрузках системы EDF имеет преимущества.

Рассмотрим пример, когда процессу А требуется для обработки кадра - 15мс.

Проверяем, можно ли планировать эти процессы.

15/30+15/40+5/50=0.975<1

Загрузка системы 97.5%



Динамический алгоритм планирования EDF (Earliest Deadline First)

 

Алгоритм планирования RMS терпит неудачу.

 

 

1   2   3   4   5   6   7   8   9   ...   16


написать администратору сайта