Слайд 1ЗАДАЧИ И ПРОЦЕССЫ.
УПРАВЛЕНИЕ ПРОЦЕССАМИ И ЗАДАЧАМИ
Ершов Б.Л.
Российский государственный
торгово-экономический университет
ИВАНОВСКИЙ
ФИЛИАЛ
Кафедра математики, экономической информатики
и вычислительной техники
Слайд 2Задачи и процессы.
Управление процессами и задачами
ОГЛАВЛЕНИЕ
Задачи, процессы и
ресурсы
Реализация процессов в операционной системе
Планирование и диспетчеризация процессов и
задач
Управление параллельными взаимодействующими процессами
Понятие параллельных процессов, методы и проблемы их организации
Реализация взаимных исключений
Блокировка памяти
Специальные операции типа «Проверка-установка»
Семафоры и их применение
Мониторы и их применение
Почтовые ящики сообщений
Конвейеры сообщений
Очереди сообщений
Выход
Слайд 3Задачи, процессы и ресурсы
Оглавление
PID – номер процесса
Тип (класс)
процесса
Приоритет выделения ресурсов Переменная состояния
Контекст задачи или его
адрес
Параметры запуска
Процесс
. . .
Носитель данных и операций по их обработке.
Обычно процесс считается последовательным
=
РЕСУРСЫ
(обеспечивающие элементы)
Дескриптор процесса
=
Адрес области ОЗУ, выделенной для обмена данными
и сигналами с другими процессами
Адрес постоянного местонахождения в ОЗУ
Адрес временной выгрузки на диск
Слайд 4Реализация процессов
в операционной системе
Оглавление
Слайд 5Реализация процессов
в операционной системе
Оглавление
Управление процессами предполагает выполнение операционной системой
следующих функций:
• создание и удаление задач;
• планирование задач;
• диспетчеризация задач;
•
синхронизация задач и обеспечение их средствами коммуникаций.
Слайд 6Планирование и диспетчеризация
процессов и задач
Оглавление
Цель планирования и диспетчеризации – повышение
эффективности использования процессорного времени как главного ресурса вычислительной системы
Слайд 7Планирование и диспетчеризация процессов и задач
Оглавление
Слайд 8Стратегия планирования
процессов и задач
Оглавление
Слайд 9Стратегия планирования
процессов и задач
Оглавление
В операционной системе Windows имеется возможность переключения
стратегий планирования в окне «Система/Свойства». По умолчанию применяется старетегия задачи
переднего плана, можно выбрать варианты:
• обеспечить наивысшее быстродействие (Windows ХР;)
• оптимизировать быстродействие приложений (Windows 2000).
Слайд 10Диспетчеризация процессов
Оглавление
Слайд 11Дисциплины диспетчеризации процессов
Оглавление
Дисциплины диспетчеризации – это принципы краткосрочного отбора задач
для исполнения на основе событий, происходящих в системе.
Слайд 12Примеры реализации динамических приоритетов
Оглавление
Система UNIX
Основной принцип: равенство в обслуживании при
обеспечении приемлемого времени ожидания. Реализуется на основе карусельной дисциплины (RR)
с несколькими очередями.
Дескриптор задачи
. . .
заказанный приоритет
степень использования ресурсов
. . .
p_nice
p_cpu
Пользователь или система программирования
Диспетчер задач
Текущий приоритет p_priser = a×p_nice – b×p_cpu,
где a – константа, b = 0,5 или b = (2 × load)/(2 × load+1)
load – среднее число процессов в системе
Пересчёт происходит каждую секунду.
Приоритеты имеют следующую нумерацию уровней:
• 0 – 65 для режима задачи;
• 66 – 97 для режима ядра;
• 96 – 127 для поддержки режима реального времени.
Слайд 13Примеры реализации динамических приоритетов
Оглавление
Система Windows NT/2000/XP
Windows оперирует с потоками выполнения
(легковесными процессами, не имеющими ничего своего, кроме процессорного времени). Потоку
назначается базовый приоритет, зависящий от базового приоритета породившего его процесса
Базовый приоритет потока позволяет соизмерять приоритет потока с приоритетами процессов, происходящих в вычислительной системе. Текущий приоритет потока я является динамическим.
Диспетчер ведёт 32 очереди, по одной на каждый уровень приоритета, которые распределяются следующим образом:
0 – очередь для системных процессов;
1 –15 – очереди задач с переменным приоритетом;
16 – 31- очереди задач с фиксированным приоритетом.
Диспетчер при прерывании задачи с приоритетами1 - 15 понижает её уровень на единицу, а при переходе из состояния ожидания в состояние готовности повышает приоритет задачи на величину, зависящую от типа события, которое ожидает заблокированный поток..
Слайд 14Примеры реализации динамических приоритетов
Оглавление
Система OS/2
Слайд 15Вытесняющие и не вытесняющие дисциплины обслуживания
Оглавление
Слайд 16Проблема гарантированного обслуживания
Оглавление
Способ оптимизации: изменение приоритетов процессов с учётом как
интересов гарантированного обслуживания процесса, так интересов оптимального использования процессорного времени
Слайд 17Критерии сравнения алгоритмов диспетчеризации
Оглавление
Загрузка центрального процессора (в среднем для персональных
систем 2 – 3%, для серверов от 15 – 40%
до 90 – 100%);
Пропускная способность центрального процессора, измеряется количеством процессов, выполняемым за единицу времени;
Время оборота – время, затраченное на выполнение процесса с момента его появления до момента исчезновения;
Время ожидания – время нахождения процесса в очереди готовых процессов;
Время отклика (для интерактивных программ) – время, прошедшее от момента попадания процесса во входную очередь до момента первого обращения к терминалу.
Слайд 18Понятие параллельных процессов, методы и проблемы их организации
Оглавление
Слайд 19Понятие параллельных процессов, методы и проблемы их организации
Оглавление
Обобщённая схема взаимодействия
процессов и методы его организации
Формальное описание процессов кодом
на языке
подобном Алголу или Паскалю
Begin {Начало программы}
. . .
Parbegin {Начало описания процессов}
S11; S12; …; S1n {Перечень операторов 1 процесса}
AND {Логическое И, объединяет процессы}
S21; S22; …; S2m {Перечень операторов 2 процесса}
Parend {Конец описания процессов}
End {Начало программы}
Проблемы:
Синхронизация по скорости выполнения;
Исключение одновременного обращения к критическому ресурсу
Слайд 20Реализация взаимных исключений
Оглавление
Условные обозначения:
Слайд 21Блокировка памяти
Оглавление
Блокировка памяти – запрет обращений к одному и тому
байту памяти одновременно двух и более команд.
Поддерживается всеми ЭВМ.
Разрешает поочерёдный доступ к байту памяти двух и более процессов.
Недостаток: Возможно длительное ожидание одним из процессов вхождения в критическую секцию
Слайд 22Блокировка памяти
Оглавление
Недостаток: Нет гарантии полного исключения, т.к. между запросом значения
переменной и её установкой одним процессом проходит конечный интервал времени,
в течение которого может произойти вхождение в критическую секцию другого процесса
Алгоритм с двумя переменными (флагами переключений) X и Y
False
True
CS1
PR1
CS2
PR2
t
Пуск
Х
t
Р1
Р2
t
Пуск
Y
Ожидание Запросы Установка
Усиление взаимных исключений
Недостаток:
Нет гарантии того, что все процессы будут иметь конечное время ожидания входа в свою критическую секцию.
Слайд 23Блокировка памяти
Оглавление
Алгоритм с тремя переменными X,Y и Z
(алгоритм Деккера)
Недостаток:
Трудно распространяется на три и более процессов
О
В управлении процессами
участвуют два переключателя X и Y и переменная О – очередь. Переключатели как и ранее указывают на необходимость войти в критическую секцию кодов процессов, а переменная Очередь является своеобразным арбитром в случае совпадения во времени обращений процессов к критическому ресурсу.
Слайд 24Специальные операции типа «Проверка-установка»
Оглавление
Операция «проверка – установка» осуществляется двухадресной командой,
которая записывает данные по двум адресам и исключает выполнение каких-либо
команд во время своего выполнения.
Дальнейшее развитие
Изначально команда TS появилась как операция над словами данных в машинах IBM 360 и IBM 370.
Дальнейшим развитием этой команды явились команды
BTC, BTS и BTR, работающие с битами
Слайд 25Специальные операции типа «Проверка-установка»
Оглавление
Способ применения
Описание процессов
Y
X
Z
Действие алгоритма
Слайд 26Семафоры и их применение
Оглавление
Семафор – специальная переменная, которая своим значением
сигнализирует о состоянии критического ресурса и позволяет выполнить с собой
два действия, называемые семафорными примитивами:
P(S) – декремент значения семафора и проверка нового значения, если оно не меньше нуля, то выполняется критическая секция процесса, иначе процесс переводится в состояние ожидания;
V(S) – увеличение значения семафора на единицу и перевод в состояние готовности процессов, ожидающих критический ресурс.
Существует множество «семафорных» алгоритмов, создающих значения семафора с разными областями возможных целочисленных значений.
Семафоры, имеющие бинарное значение называются МЬЮТЕКСАМИ. Мьютексы имеют два состояния «Отмечен» (открыт) и «Не отмечен» (закрыт).
Слайд 27Семафоры и их применение
Оглавление
Семафор – специальная переменная, которая своим значением
сигнализирует о состоянии критического ресурса и позволяет выполнить с собой
два действия, называемые семафорными примитивами:
P(S) – декремент значения семафора и проверка нового значения, если оно не меньше нуля, то выполняется критическая секция процесса, иначе процесс переводится в состояние ожидания;
V(S) – увеличение значения семафора на единицу и перевод в состояние готовности процессов, ожидающих критический ресурс.
Схема действий с семафором S
Кроме того для задания начального состояния семафора используется метод InitSem (инициализация семафора)
Слайд 28Семафоры и их применение
Оглавление
Особым видом семафора является МЬЮТЕКС ̶
семафор с двумя состояниями «Отмечен» (открыт) и «Не отмечен» (закрыт).
Для
работы с ними используются методы:
CreateMutex – создать мьютекс;
OpenMutex – открыть мьютекс;
WaitForSingleObject – ожидание события от одного объекта;
WaitForMultiplaeObject – ожидание события от множества объектов;
ReleaseMutex – освобождение мьютекса.
Недостатком механизма семафоров является примитивность семафоров: они не содержат ни непосредственного указания на синхронизирующий механизм, ни непосредственного указания на ресурс, который они контролируют.
Слайд 29Мониторы и их применение
Оглавление
Монитор – это пассивный набор разделяемых переменных
и повторно входимых процедур, обеспечивающих доступ к указанным переменным. Предложены
Ч. Хоаром в конце 80-х г.г. ХХ века.
Понятие монитора
Слайд 30Мониторы и их применение
Оглавление
monitor Resource; {заголовок описания монитора}
condition free; {условие ожидания
– свободный}
var busy: boolean; {описание переменной занят}
Пример описания монитора
Procedure REQUAEST;
{заголовок процедуры Запрос ресурса}
begin
if busy then WAIT(free); {если монитор занят, то блокировать вызвавший} {процесс до сигнала Свободен}
busy:=True; {перевод монитора в состояние Занят}
TakeOff {предоставить ресурс ожидающему процессу}
end;
Procedure RELEASE; {заголовок процедуры Освободить монитор}
begin
TakeOn; {взять предоставленный ресурс}
busy:=False; {освободить монитор}
SIGNAL(free); {послать сигнал Свободен ожидающим процессам}
end;
Слайд 31– Busy = False – Busy = True
– передача сигнала Free
– передача команды Wait
Мониторы
и их применение
Оглавление
Взаимодействие процессов, ресурса и монитора
Монитор
Процесс_1
Процесс_2
Ресурс
RQ
B
RQ
B
TakeOff
TakeOn
RL
F
Обозначения:
RQ – вызов процедуры Requaest
RL – вызов процедуры Release
W
B
B
F
W
CS
Критическая секция
Busy
Wait
Free
Ресурс
Процесс_1
CS
t
t
t
t
t
Слайд 32Почтовые ящики сообщений
Оглавление
Понятие почтового ящика
Почтовый ящик не является разделяемой
переменной, он является сложной информационной структурой, хранящей сообщения и предоставляется
процессам лишь во временное пользование
Устройство почтового ящика
Слайд 33Почтовые ящики сообщений
Оглавление
ПЯ
Р1
ДП1
ОПЕРАЦИОННАЯ СИСТЕМА
ИПЯ
ИПЯ
Управление
Понятие почтового ящика
Устройство почтового ящика
Достоинства почтового
ящика
Процессу нет необходимости иметь информацию о других процессах до получения
от них сообщений;
Процессы могут обмениваться несколькими сообщениями за один сеанс связи даже обращаясь к почтовым ящикам даже в разные моменты времени;
Операционная система гарантирует невмешательство обмен сообщениями процессов, не имеющих к нему никакого отношения;
Работа процессов, отправляющих сообщения, не зависит от работы процессов, принимающих сообщения
Слайд 34Почтовые ящики сообщений
Оглавление
ПЯ
Р1
ДП1
ОПЕРАЦИОННАЯ СИСТЕМА
ИПЯ
ИПЯ
Управление
Понятие почтового ящика
Устройство почтового ящика
Недостатки почтового
ящика
Почтовые ящики имеют статический характер, т.е. их характеристики задаются в
момент создания ящика и не могут быть изменены;
Почтовые ящики являются дополнительными ресурсами и требуют затрат на управление ими;
Слайд 35Почтовые ящики сообщений
Оглавление
ПЯ
Р1
ДП1
ОПЕРАЦИОННАЯ СИСТЕМА
ИПЯ
ИПЯ
Управление
Понятие почтового ящика
Устройство почтового ящика
Реализация почтового
ящика
Семафорными примитивами;
Мониторами Хоара;
Процедуры реализации почтового ящика монитором Хоара
Sand_Massage(адресат,сообщение,буфер)
Wait_Massage(отправитель,сообщение,буфер)
Sand_Answer(результат,ответ,буфер)
Wait_Answer(результат,ответ,буфер)
Слайд 36Конвейеры сообщений
Оглавление
Конвейер сообщений представляет собой закольцованную очередь, работающую по дисциплине
FIFO. Конвейер имеет начало и конец данных, на которые указывают
специальные переменные – указатели. Характеризуется идентификатором и ёмкостью не более 64К.
В исходном состоянии указатели равны нулю (рис. 1). При первой записи данных оба указателя увеличиваются на 1,при дальнейшей записи увеличивается только указатель конца (рис. 2).
Чтение с последующим стиранием данных происходит только с начала данных (рис. 3). Далее оба указателя достигают конца конвейера (рис. 4), а затем данные разбиваются на два сегмента (рис. 5).
Слайд 37Очереди сообщений
Оглавление
Очереди сообщений, как и конвейеры, являются средством обмена сообщениями,
но имеют более сложную реализацию.
Их особенностями являются:
предоставление возможности использования
нескольких дисциплин работы с сообщениями: FIFO, LIFO, приоритетный доступ и произвольный доступ.
сохранение в ней прочитанных записей, в то время как из конвейера они удаляются.
присутствие в очереди не сообщений, а их адреса в памяти и размера.
Сообщения хранятся хранятся в области памяти, которая является об-щей для процессов, обменивающихся ими. Каждый процесс, пользующийся очередью должен получить доступ к общему разделу памяти через системные запросы API, т.к. очередь является системным механизмом.
Слайд 38Конец раздела
Оглавление
КОНЕЦ
РАЗДЕЛА
Завершить раздел
Слайд 40Оглавление
PID – номер процесса
Тип (класс) процесса
Приоритет выделения
ресурсов Переменная состояния
Контекст задачи или его адрес
Параметры запуска
Процесс
. .
.
Носитель данных и операций по их обработке.
Обычно процесс считается последовательным
=
РЕСУРСЫ
(обеспечивающие элементы)
Дескриптор процесса
=
Адрес области ОЗУ, выделенной для обмена данными
и сигналами с другими процессами
Адрес постоянного местонахождения в ОЗУ
Адрес временной выгрузки на диск
Задачи, процессы и ресурсы
Слайд 41Оглавление
PID – номер процесса
Тип (класс) процесса
Приоритет выделения
ресурсов Переменная состояния
Контекст задачи или его адрес
Параметры запуска
Процесс
. .
.
Носитель данных и операций по их обработке.
Обычно процесс считается последовательным
=
РЕСУРСЫ
(обеспечивающие элементы)
Дескриптор процесса
=
Адрес области ОЗУ, выделенной для обмена данными
и сигналами с другими процессами
Адрес постоянного местонахождения в ОЗУ
Адрес временной выгрузки на диск
Задачи, процессы и ресурсы
Слайд 42Дисциплины диспетчеризации процессов
Оглавление
Бесприоритетные дисциплины не учитывают ни важности задач, ни
время их обслуживания.
Приоритетные дисциплины, напротив, учитывают эти факторы и предоставляют
отдельным задачам возможность попасть на внеочередное обслуживание.
Приоритет может быть постоянным (фиксированным или статическим) и изменяемым (динамическим).
Слайд 43Дисциплины диспетчеризации процессов
Оглавление
Слайд 44Дисциплины диспетчеризации процессов
Оглавление
Дисциплины диспетчеризации – это принципы краткосрочного отбора задач
для исполнения на основе событий, происходящих в системе.
Бесприоритетные
Приоритетные
В порядке
очереди
Со случайным
выбором
С циклическим
многоприоритетным алгоритмом
С циклическим алгоритмом
С
зависимостью приоритета от времени ожидания
С зависимостью приоритета от времени обслуживания
С относительным приоритетом
С фиксированным
приоритетом
Циклические
С абсолютным приоритетом
Адаптивное обслуживвание
С динамическим
приоритетом
Линейные
ДИСЦИПЛИНЫ ДИСПЕТЧЕРИЗАЦИИ
Слайд 45Дисциплины диспетчеризации процессов
Оглавление
Слайд 46Дисциплины диспетчеризации процессов
Оглавление
Дисциплины диспетчеризации – это принципы краткосрочного отбора задач
для исполнения на основе событий, происходящих в системе.
Бесприоритетные
Приоритетные
В порядке
очереди
Со случайным
выбором
С циклическим
многоприоритетным алгоритмом
С циклическим алгоритмом
С
зависимостью приоритета от времени ожидания
С зависимостью приоритета от времени обслуживания
С относительным приоритетом
С фиксированным
приоритетом
Циклические
С абсолютным приоритетом
Адаптивное обслуживвание
С динамическим
приоритетом
Линейные
ДИСЦИПЛИНЫ ДИСПЕТЧЕРИЗАЦИИ
Слайд 47Дисциплины диспетчеризации процессов
Оглавление
Дисциплины диспетчеризации – это принципы краткосрочного отбора задач
для исполнения на основе событий, происходящих в системе.
Бесприоритетные
Приоритетные
В порядке
очереди
Со случайным
выбором
С циклическим
многопроиритетным алгоритмом
С циклическим алгоритмом
С
зависимостью приоритета от времени ожидания
С зависимостью приоритета от времени обслуживания
С относительным приоритетом
С фиксированным
приоритетом
Циклические
С абсолютным приоритетом
Адаптивное обслуживвание
С динамическим
приоритетом
Линейные
ДИСЦИПЛИНЫ ДИСПЕТЧЕРИЗАЦИИ
Слайд 48Дисциплины диспетчеризации процессов
Оглавление
Слайд 49Дисциплины диспетчеризации процессов
Оглавление
Слайд 50Дисциплины диспетчеризации процессов
Оглавление
Слайд 51Дисциплины диспетчеризации процессов
Оглавление
Слайд 52Дисциплины диспетчеризации процессов
Оглавление
Слайд 53Мониторы и их применение
monitor Resource; {заголовок описания монитора}
condition free; {условие ожидания
– свободный}
var busy: boolean; {описание переменной занят}
Пример описания монитора
Procedure REQUAEST;
{заголовок процедуры Запрос ресурса}
begin
if busy then WAIT(free); {если монитор занят, то блокировать вызвавший} {процесс до сигнала Свободен}
busy:=True; {перевод монитора в состояние Занят}
TakeOff {предоставить ресурс ожидающему процессу}
end;
Procedure RELEASE; {заголовок процедуры Освободить монитор}
begin
TakeOn; {взять предоставленный ресурс}
busy:=False; {освободить монитор}
SIGNAL(free); {послать сигнал Свободен ожидающим процессам}
end;
Оглавление
Монитор
Повторно входимые процедуры
Разделяемые переменные
Запрос ресурса REQUAEST
Состояние Busy : Boolean
Условие ожидания Condition Free
Освобождение ресурса RELIASE
Слайд 54Почтовые ящики сообщений
Оглавление
ПЯ
Р1
ДП1
ОПЕРАЦИОННАЯ СИСТЕМА
ИПЯ
ИПЯ
Управление
Понятие почтового ящика
Устройство почтового ящика
Реализация почтового
ящика
Семафорными примитивами;
Мониторами Хоара;
Процедуры реализации почтового ящика монитором Хоара
Sand_Massage(получатель,сообщение,буфер)
Wait_Massage(отправитель,сообщение,буфер)
Sand_Answer(результат,ответ,буфер)
Wait_Answer(результат,ответ,буфер)
Слайд 55Почтовые ящики сообщений
Оглавление
ПЯ
Р1
ДП1
ОПЕРАЦИОННАЯ СИСТЕМА
ИПЯ
ИПЯ
Управление
Понятие почтового ящика
Устройство почтового ящика
Реализация почтового
ящика
Семафорными примитивами;
Мониторами Хоара;
Процедуры реализации почтового ящика монитором Хоара
Sand_Massage(получатель,сообщение,буфер)
Wait_Massage(отправитель,сообщение,буфер)
Sand_Answer(результат,ответ,буфер)
Wait_Answer(результат,ответ,буфер)
Слайд 56Почтовые ящики сообщений
Оглавление
ПЯ
Р1
ДП1
ОПЕРАЦИОННАЯ СИСТЕМА
ИПЯ
ИПЯ
Управление
Понятие почтового ящика
Устройство почтового ящика
Реализация почтового
ящика
Семафорными примитивами;
Мониторами Хоара;
Процедуры реализации почтового ящика монитором Хоара
Sand_Massage(получатель,сообщение,буфер)
Wait_Massage(отправитель,сообщение,буфер)
Sand_Answer(результат,ответ,буфер)
Wait_Answer(результат,ответ,буфер)
Слайд 57Почтовые ящики сообщений
Оглавление
ПЯ
Р1
ДП1
ОПЕРАЦИОННАЯ СИСТЕМА
ИПЯ
ИПЯ
Управление
Понятие почтового ящика
Устройство почтового ящика
Реализация почтового
ящика
Семафорными примитивами;
Мониторами Хоара;
Процедуры реализации почтового ящика монитором Хоара
Sand_Massage(получатель,сообщение,буфер)
Wait_Massage(отправитель,сообщение,буфер)
Sand_Answer(результат,ответ,буфер)
Wait_Answer(результат,ответ,буфер)