1. Раздел 2.
Управление процессами в
операционных системах
Процессы и потоки
Планирование процессов
Прерывания и системные вызовы
Синхронизация процессов и потоков
1
3. 3
Понятие процесса
Уточнение терминологии
Термин «программа»
Термин «задание»
Термин «процесс»
– не может использоваться для
описания происходящего внутри ОС.
– не может использоваться для
описания происходящего внутри ОС.
Для статических объектов
Для динамических объектов
4. 4
Понятие процесса
Процесс и программа
Термин «процесс» характеризует совокупность
– набора исполняющихся команд
– ассоциированных с ним ресурсов
– текущего момента его выполнения
Процесс ≠ программа, которая исполняется:
– для исполнения одной программы может организовываться
несколько процессов
– в рамках одного процесса может исполняться несколько
программ
– в рамках процесса может исполняться код, отсутствующий в
программе
находящуюся под управлением ОС
6. 6
Набор операций
создание процесса – завершение процесса
запуск процесса – приостановка процесса
блокирование процесса – разблокирование
процесса
(изменение приоритета)
одноразовые
многоразовые
7. 7
Process Control Block
и контекст процесса
состояние процесса
программный счетчик
содержимое регистров
данные для планирования использования процессора и
управления памятью
учетная информация
сведения об устройствах ввода-вывода, связанные с
процессом
Регистровый
контекст
Системный контекст
PCB
Код и данные в адресном пространстве
Пользовательский контекст
Контекст процесса
8. 8
Пример генеалогического леса процессов
Процесс 1 Процесс 2
Процесс 12 Процесс 255
Процесс 3
Процесс 14 Процесс 15 Процесс 128
Процесс 4 Процесс 23
Процесс 192
9. 9
Создание процесса
Порождение нового PCB с состоянием процесса
рождение
Присвоение идентификационного номера
Выделение ресурсов
Занесение в адресное пространство кода и установка
значения программного счетчика
Окончание заполнения PCB
Изменение состояния процесса на готовность
из ресурсов родителя
из ресурсов ОС
дубликат родителя из файла
10. 10
Завершение процесса
Изменение состояния процесса на закончил
исполнение
Освобождение ресурсов
Очистка соответствующих элементов в PCB
Сохранение в PCB информации о причинах
завершения
11. 11
Запуск процесса
Выбор одного из процессов, находящихся в состоянии готовность
Изменение состояния выбранного процесса на исполнение
Обеспечение наличия в оперативной памяти информации, необходимой
для его выполнения
Восстановление значений регистров
Передача управления по адресу, на который указывает программный
счетчик
12. 12
Приостановка процесса
Автоматическое сохранение программного счетчика и
части регистров (работа hardware)
Передача управления по специальному адресу (работа
hardware)
Сохранение динамической части регистрового и
системного контекстов в PCB
Изменение состояния процесса на готовность
Обработка прерывания
14. 14
Разблокирование процесса
Уточнение того, какое именно событие
произошло
Проверка наличия процесса, ожидающего этого
события
Перевод ожидающего процесса в состояние
готовность
Обработка произошедшего события
15. 15
Процесс 1
Процесс 2
Ожидание
Исполнение
Прерывание
Выполнение кода
пользователя
Выполнение кода
ОС
Работа hardware
Сохранение
контекста
Обработка
прерывания
Готовность Исполнение
Готовность
Планирование
Работа hardware
Выполнение кода ОС
Выполнение кода
пользователя
Восстановление
контекста
Пример цепочки операций
18. 18
Цели планирования
Справедливость
Эффективность
Сокращение полного времени выполнения
(turnaround time)
Сокращение времени ожидания (waiting time)
Сокращение времени отклика (response time)
20. 20
Параметры планирования
Статические параметры вычислительной системы –
например, предельные значения ее ресурсов.
Статические параметры процесса – кем запущен,
степень важности, запрошенное процессорное время,
какие требуются ресурсы и т.д.
Динамические параметры вычислительной системы –
например, количество свободных ресурсов в данный
момент.
Динамические параметры процесса – текущий
приоритет, размер занимаемой оперативной памяти,
использованное процессорное время и т.д.
статические
динамические
21. 21
Вытесняющее и невытесняющее планирование
1. Перевод процесса из состояния исполнение в состояние
закончил исполнение
2. Перевод процесса из состояния исполнение в состояние
ожидание
Принятие только вынужденных решений –
невытесняющее планирование
3. Перевод процесса из состояния исполнение в состояние
готовность
4. Перевод процесса из состояния ожидание в состояние
готовность
Принятие вынужденных и невынужденных решений –
вытесняющее планирование
Вынужденное принятие решения
Невынужденное принятие решения
23. 23
Алгоритмы планирования
В системе разделения времени N пользователей:
Ti – время нахождения i-го пользователя в системе
τi – суммарное процессорное время процессов i-го пользователя
τi ‹‹ Ti /N
τi ›› Ti /N
(τi N) / Ti – коэффициент справедливости.
На исполнение выбираются готовые процессы
пользователя с наименьшим коэффициентом
справедливости
Гарантированное планирование
– пользователь обделен
– пользователю благоволят
24. 24
Алгоритмы планирования
Приоритетное планирование
Каждому процессу процессор выделяется в соответствии с приписанным к нему
числовым значением - приоритетом
Параметры для назначения приоритета бывают:
-внешние
-внутренние
Политика изменения приоритета:
-статический приоритет
-динамический приоритет
25. 25
Алгоритмы планирования
время 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
P0
P1
P2
P3
Приоритетное планирование
невытесняющий
И
Г
P0 P1 P2
готовность
P3
исполнение
P3P1P0P2
Г
И
И И
Г Г
И И
Г Г
И
Г
И И И ИИ
Г Г Г Г Г И И И И И И
Процессы P0 P1 P2 P3
Продолжительность CPU burst 6 2 5 5
Момент появления в очереди 0 2 6 0
Приоритет 4 3 2 1
Г Г Г
Г
27. 27
Алгоритмы планирования
Многоуровневые очереди
(Multilevel Queue)
Системные процессы приоритет 0
Процессы ректората приоритет 1
Процессы преподавателей приоритет 2
Фоновые процессы приоритет 3
Процессы студентов приоритет 4
FCFS
RR
RR
RR
RR
28. 28
Алгоритмы планирования
Многоуровневые очереди с обратной связью
(Multilevel Feedback Queue)
Очередь 0 – Приоритет 0
Очередь 1 – Приоритет 1
Очередь 2 – Приоритет 2
Очередь 3 – Приоритет 3
RR с квантом времени 8
RR с квантом времени 16
RR с квантом времени 32
FCFS
Клавиатурный
ввод
Дисковый I/O
29. 29
Алгоритмы планирования
Многоуровневые очереди с обратной связью
(Multilevel Feedback Queue)
Для полного описания необходимо задать
- количество очередей в состоянии готовность
- алгоритм планирования между очередями
- алгоритмы планирования внутри очередей
- куда помещается родившийся процесс
- правила перевода процессов из одной очереди в
другую
30. 30
Основные причины для объединения
усилий процессов
Повышение скорости решения задач
Совместное использование данных
Модульная конструкция какой-либо системы
Для удобства работы пользователя
Кооперативные или взаимодействующие процессы
- это процессы, которые влияют на поведение друг
друга путем обмена информацией
33. Система прерываний ОС
Система прерываний – средство,
позволяющее ОС реагировать на внешние
события, происходящие асинхронно
вычислительному процессу:
– сигналы готовности устройства ввода-
вывода;
– аварийные сигналы аппаратуры
вычислительной системы;
– информация о завершении потока и др.
Прерывание (hardware interrupt) – это
событие, генерируемое внешним (по
отношению к процессору) устройством.
34. Классы прерываний
В зависимости от источника прерывания
делятся на три класса:
– Внешние (аппаратные) прерывания,
связанные с сигналами от внешних
устройств;
– Внутренние прерывания
(исключительные ситуации),
возникающие в результате ошибок
вычислений;
– Программные прерывания (системные
вызовы), представляющие удобный
механизм вызова процедур операционной
системы.
34
36. Внешние (аппаратные)
прерывания,
или прерывания
являются асинхронными событиями
имеют номера
возникают вследствие подачи
аппаратурой электрических сигналов,
которые передаются на специальный
вход процессора по каналам IRQ
обрабатываются драйверами
соответствующих внешних устройств 36
38. Внутренние прерывания
(исключительные ситуации
или исключения, exceptions)
являются синхронными событиями
возникают в результате попытки
выполнения программой команды, которая
не может быть выполнена до конца
делятся на исправимые и неисправимые
обрабатываются модулями ядра ОС
38
40. Программные прерывания
(системные вызовы, system calls)
являются синхронными событиями
возникают вследствие использования
команды программного прерывания INT
обрабатываются процедурами ОС,
обслуживающими системные вызовы
40
41. Пример системного вызова
#include <sys/types.h>
#include <sys/socket.h>
int connect (int sockfd,
struct sockaddr *serv_addr, int addrlen);
41
42. Механизм прерываний
Для реализации механизм прерываний должен
поддерживаться аппаратными средствами компьютера
и программными средствами ОС.
Для упорядочивания процессов обработки прерываний
все источники прерываний делятся по нескольким
приоритетным уровням, а роль арбитра выполняет
диспетчер прерываний ОС.
43. Способы выполнения прерываний
Существует два основных способа выполнения
прерывания:
– Векторный – в процессор передается номер вызываемой
процедуры обработки прерываний;
– Опрашиваемый – процессор последовательно опрашивает
потенциальные источники запроса прерываний.
44. Последовательность действий
по обработке прерываний:
1. Автоматический вызов процедуры
обработки прерывания
2. Прерывание исполнения текущего
процесса и сохранение его состояния в
регистрах процессора
3. Выполнение процессором команд
обработчика прерываний
4. Восстановление состояния прерванного
процесса и продолжение его выполнения
46. Синхронизация
процессов и потоков
Потоки выполняются независимо друг от друга.
Любое взаимодействие процессов или потоков
связано с их синхронизацией.
Синхронизация – согласование скоростей
потоков путем приостановки потока до
наступления некоторого события и
последующей активизации приостановленного
потока после наступления этого события.
47. Механизмы синхронизации
процессов и потоков
Для обеспечения синхронизации процессов и потоков,
выполняющих общие задачи и совместно использующих общие
ресурсы, в операционных системах используются специальные
механизмы:
Критические секции;
Сигналы;
Семафоры;
События;
Таймеры.
48. Проблемы при отсутствии синхронизации
При отсутствии таких механизмов
возможны нежелательные последствия,
такие как гонки и тупики.
– Гонка – ситуация, при которой два или более
потоков обрабатывают разделяемые данные
и конечный результат зависит от
соотношения скоростей потоков.
– Тупик (взаимная блокировка, клинч,
дедлок) – ситуация, при которой два и более
потоков взаимно блокируют действия друг
друга.