3. План лекции:
Понятие ресурса. Классификация
Многозадачность. Классификация многозадачных ОС
Процессы
Потоки
Операции над процессами/потоками
Алгоритмы планирования
4. Понятие ресурса
Организация рационального использования
ресурсов компьютера – одна из важнейших
функций ОС.
Общее определение: всякий потребляемый объект
(независимо от формы его существования),
обладающий некоторой практической ценностью
для потребителя, является ресурсом.
Ресурс – это средство вычислительной системы,
которое может быть выделено процессу на
определенный интервал времени.
6. Многозадачность ОС
Многозадачность (мультипрограммирование) – способ
организации вычислительного процесса, при котором на
одном (или нескольких) процессоре (-ах) выполняется
несколько задач. Данные задачи совместно используют не
только ресурсы процессора, но также оперативную и
внешнюю память, устройства ввода-вывода и т.д.
Организация вычислительного процесса характеризуется
несколькими критериями эффективности:
Пропускная способность – количество выполняемых
задач в единицу времени;
Удобство работы пользователя
Реактивность системы – способность системы
выдерживать промежутки времени между запуском
программы и получением результата.
7. Классификация многозадачных ОС
Операционные системы по типу организации
многозадачности делятся на:
Системы пакетной обработки
Системы разделения времени
Системы реального времени.
8. Системы пакетной обработки
Для повышения пропускной способности вычислительной
системы и минимизации простоев центрального
процессора, вызванных ожиданием приложением ввода
данных или другими причинами, используется
организация вычислительного процесса в виде очереди
(пакета) исполняемых приложений.
Схема работы системы имеет следующий вид:
В начале работы формируется пакет заданий, причем
каждое задание содержит требования к системным
ресурсам.
Из пакета формируется мультипрограммная смесь, то
есть множество одновременно выполняемых задач (как
правило, выбираются наборы задач, предъявляющие
разные требования к ресурсам).
Область применения систем пакетной обработки –
системы с интенсивными вычислениями (например,
научные и технические расчеты).
10. Системы пакетной обработки
Переключение процессора с выполнения одной
задачи на выполнение другой происходит только в
случае, если активная задача сама отказывается от
процессора, например, из-за необходимости
выполнить операцию ввода-вывода. Поэтому в
системах пакетной обработки невозможно
гарантировать выполнение интерактивных задач.
Сделанная из тонкого картона,
перфокарта представляет информацию
наличием или отсутствием отверстий
в определённых позициях карты.
11. Системы разделения времени
В данных системах пользователю (или пользователям)
предоставляется возможность интерактивной работы
сразу с несколькими приложениями.
Для решения данной задачи ОС должна принудительно
приостанавливать работу приложений и переключать
работу процессора на обработку другого приложения.
Всем приложениям попеременно выделяется некоторый
квант процессорного времени. Пользователь получает
возможность поддерживать диалог с запущенным
приложением.
12. Системы разделения времени
Достоинство данных систем – удобство работы
пользователя. Каждый пользователь получает терминал
для управления работой приложений.
Недостаток – меньшая пропускная способность
операционных систем
13. Системы реального времени
Системы реального времени применяются для управления
различными техническими объектами, такими, (станок,
научная экспериментальная установка) или
технологическими процессами (гальваническая линия,
доменный процесс).
Во всех этих случаях существует предельно допустимое
время, в течение которого должна быть выполнена та или
иная программа, управляющая объектом, в противном
случае может произойти авария.
Таким образом, критерием эффективности для систем
реального времени временя реакции системы на события
от объекта управления, это свойство системы называется
реактивностью.
16. Ответ
системы пакетной обработки (например, ОС ЕС),
системы разделения времени (UNIX, Windows),
системы реального времени (QNX, RT/U).
17. Объект исполнения ОС
Программисты создают программы
Пользователи запускают программы на исполнение
Что представляет собой объект исполнения в ОС?
18. Объект исполнения
Это прикладная программа в состоянии выполнения,
включает:
Адресное пространство, выделенное для выполнения
программы
Код выполняющейся программы
Данные выполняющейся программы
Стек и указатель на его вершину (stack pointer, SP)
Выделенные ресурсы ОС (открытые файлы,
установленные сетевые соединения и т.д.)
Программный счетчик (instruction pointer, IP),
указывающий на следующую выполняемую инструкцию
Текущие значения регистров общего назначения
Объект исполнения представлен двумя понятиями:
процесс и поток
19. Процесс
Процесс - абстракция, представляющая программу во
время ее выполнения
Процессу ОС выделяет ресурсы, необходимые для
выполнения программы, например:
адресное пространство процесса содержит его
программный код, данные и стек (или стеки)
файлы используются процессом для чтения входных
данных и записи выходных
устройства ввода-вывода используются в соответствии с
их назначением
Процесс – пассивный объект – владелец ресурсов,
контейнер для выполнения потоков
20. Поток /Нить (Thread)
Поток - абстракция, представляющая последовательное
выполнение команд программы, развертывающееся во
времени
Процесс может иметь несколько потоков
потоки совместно используют
глобальные и статические переменные (располагаются
в регионе данных)
динамически распределяемую память (кучу)
системные ресурсы, выделенные процессу
каждый поток имеет свои собственные
программный счетчик (IP)
значения регистров
локальные переменные (т.е. свой собственный стек)
Процесс - совокупность взаимодействующих потоков и
выделенных ему ресурсов
21. Процесс с одним потоком
виртуальное адресное
пространство (ВАП) процесса
Регион кода
Регион данных
Стек
Куча
пространство
адресов
MIN
MAX
IP
SP
22. Процесс с несколькими потоками
виртуальное адресное
пространство (ВАП) процесса
Регион кода
Регион данных
Стек потока 1
Куча
пространство
адресов
MIN
MAX
IP потока 1
SP потока 1
Стек потока 2
Стек потока 3
SP потока 2
SP потока 3
IP потока 2
IP потока 3
24. Зачем нужны процессы с несколькими потоками?
Для параллельной обработки нескольких однотипных
запросов (сетевые сервисы)
Для разделения исполнительных активностей,
параллельно решающих различных задач
обеспечение пользовательского интерфейса
математические вычисления
фоновая печать
…
Для создания параллельных программ, эффективно
использующих аппаратные ресурсы (например, несколько
аппаратно имеющихся ЦП)
Для улучшения структуры программы
25. Многопоточная программа vs.
Взаимодействующие процессы
При использовании потоков
экономятся ресурсы (все потоки одного процесса
пользуются одним набором ресурсов)
экономится время (операции создания/уничтожения
потока намного менее затратные, чем операции
создания/уничтожения процесса)
взаимодействие между потоками одного процесса более
удобно и эффективно по причине использования общей
памяти
26. Состояния потока в многозадачной ОС…
Готов к
выполнению
Ожидание
Создание
Завершение
1
2
3
4
Выполнение
5
6
27. Состояния потока в многозадачной ОС…
Выполнение – состояние работающего потока –
обладающего всеми необходимыми ресурсами, в том
числе возможностью использования ЦП
Готов к выполнению – поток обладает всеми
необходимыми для выполнения ресурсами за
исключением ресурса "время ЦП"
Ожидание (сон, блокировка) – выполнение потока
заблокировано до наступления некоторого внешнего
события (например, поступления входных данных или
освобождения ресурса)
28. Состояния потока в многозадачной ОС
(2,3) - осуществляются ядром
операционной системы
(планировщиком)
(4) - продолжение работы невозможно
для продолжения работы требуется наступление какого-
либо события
поток затребовал недоступный в данный момент ресурс
поток переводится в состояние ожидания ядром
операционной системы во время обработки системного
вызова
поток заблокирован внешним по отношению к нему
вызовом
(5) - производится ядром ОС в момент выполнения
условия ожидания
О
2
С
ГВ
3
З
1
4В
6
5
29. Управление процессами/потоками
Структуры, описывающие процессы и потоки в ядре ОС
Операции над процессами и потоками
Распределение ресурсов между процессами/потоками
время центрального процессора (выделяется потокам)
оперативная память (выделяется процессам)
другие ресурсы (как правило, выделяются процессам)
30. Контекст процесса
Контекст – множество информации, полностью
описывающее состояние объекта (в частности, достаточное
для восстановления объекта в случае его удаления)
Контекст процесса включает
Множество информации, используемое операционной
системой для управления ресурсом типа «процесс»
Адресное пространство процесса
Структуру и содержимое пользовательской части
адресного пространства процесса
Множество ресурсов, используемых процессом или
принадлежащих процессу, и их состояния
31. Контекст потока
Контекст потока включает
Множество информации, используемое операционной
системой для управления ресурсом типа «поток»
Множество ресурсов, используемых потоком или
принадлежащих потоку и их состояния
Аппаратный контекст исполнения потока
32. Аппаратный контекст потока
Состояние процессора с точки зрения предоставляемых
потоку прав его использования в конкретной ОС (обычно
представляется множеством доступным потоку регистров
процессора и их текущими значениями)
Состояние других устройств в случае, если управление ими
осуществляется непосредственно на уровне команд
программы, а не через интерфейс доступа к устройствам
через выполнение системных вызовов ОС
33. Переключение контекста
Переключение контекста происходит при переходе к
исполнению другого потока (возможно, другого процесса)
При переключении контекста необходимо
сохранить контекст вытесняемого потока
если поток, выбранный на исполнение, принадлежит
другому процессу
– сохранить контекст процесса – владельца
вытесняемого потока
– загрузить контекст процесса – владельца потока,
выбранного на исполнение
загрузить контекст потока, выбранного на исполнение
Для описания процессов и потоков (в том числе для
хранения их контекстов) в ядре ОС вводятся специальные
структуры – дескрипторы процесса и потока
34. Дескриптор процесса
Идентификатор процесса
Групповые параметры процесса
Параметры, используемые в процессе определения
приоритета процесса при конкуренции за какой-либо
ресурс
Состояние процесса
Статистические данные
Описание адресного пространства процесса
Контекст ввода-вывода
Контекст безопасности
Текущие системные параметры выполнения
Код завершения процесса
В Linux дескриптор процесса – структура task_struct
(include/linux/sched.h), содержит около 100 полей!
35. Дескриптор потока
Идентификатор потока
Идентификатор процесса – владельца потока
Параметры, используемые в процессе определения
приоритета потока при конкуренции за какой-либо ресурс
Статистические данные потока
Аппаратный контекст выполнения потока (программный
счетчик, стек и указатель на его вершину, значения
регистров)
Код завершения потока
37. Кто управляет
процессами и потоками?
За управление процессами всегда отвечает ядро
ОС
Ядро всегда предоставляет каждому процессу
один поток, но не всегда поддерживает
многопоточность
потоки, непосредственно управляемые ядром ОС,
называются потоками ядра
Можно реализовать многопоточность в
библиотеке пользовательского уровня!
38. Потоки ядра vs.
пользовательские потоки
При использовании пользовательских потоков
(+) Операции над потоками выполняются без
выполнения системных вызовов (в 10-100 раз быстрее,
чем при использовании потоков ядра)
(+) Можно реализовать собственный алгоритм
планирования
(-) Ядро ничего не знает о потоках пользовательского
уровня и распределяет время ЦП независимо от их
количества в процессе
(-) Если будет выполнен блокирующий системный вызов
(например, вызвана синхронная операция ввода-
вывода), в состояние ожидания переводится поток ядра,
использовавшийся для обеспечения выполнения
нескольких (или всех) пользовательских потоков.
Соответственно, выполнение всех этих пользовательских
потоков будет заблокировано.
39. Потоки ядра vs.
пользовательские потоки
При использовании пользовательских потоков
(+) Операции над потоками выполняются без
выполнения системных вызовов (в 10-100 раз быстрее,
чем при использовании потоков ядра)
(+) Можно реализовать собственный алгоритм
планирования
(-) Ядро ничего не знает о потоках пользовательского
уровня и распределяет время ЦП независимо от их
количества в процессе
(-) Если будет выполнен блокирующий системный вызов
(например, вызвана синхронная операция ввода-
вывода), в состояние ожидания переводится поток ядра,
использовавшийся для обеспечения выполнения
нескольких (или всех) пользовательских потоков.
Соответственно, выполнение всех этих пользовательских
потоков будет заблокировано.
41. Создание процесса
Создать дескриптор процесса и поместить его в таблицу
процессов
Проинициализировать значения полей общего назначения
дескриптора процесса
Создать виртуальное адресное пространство (ВАП)
процесса и сформировать его структуру
Заполнить необходимыми данными ВАП процесса
(разместить в нем код, данные и т.д.)
Выделить процессу ресурсы, которые он может
использовать сразу после создания
Оповестить подсистемы, принимающие участие в
управлении процессами, о создании нового процесса
Создать первичный поток процесса
43. Создание потока
Создать дескриптор потока и поместить его в таблицу
потоков
Проинициализировать значения полей общего назначения
дескриптора потока
Создать области данных, необходимые для
функционирования потока в данной аппаратной
архитектуре
Инициализировать поле дескриптора «аппаратный
контекст выполнения потока»
Оповестить подсистемы, принимающие участие в
управлении потоками, о создании нового потока
Перевести поток в состояние «готов к выполнению»
44. Создание потока
Ядро
Регион кода
Регион данных
Куча
Стек
SP
IP
значения
регистров
состояние =
"готов к
выполнению"
1. Создание
дескриптора
потока
2. Создание стека
3. Инициализация
аппаратного
контекста
4. Установка
состояния потока
Таблица
дескрипторов
процессов
Таблица
дескрипторов
потоков
45. Завершение потока
Сохранить статистические данные потока и код возврата в
его дескрипторе
Перевести все ресурсы, принадлежащие потоку, в
непротиворечивое и стабильное состояние
Освободить все ресурсы, принадлежавшие потоку или
использовавшиеся потоком
Оповестить подсистемы, принимающие участие в
управлении потоками, о завершении потока
Установить состояние потока в значение «завершен»
Если данный поток является последним активным потоком
в процессе – завершить процесс
После выполнения всех действий остается дескриптор
потока, содержащий его код возврата и статистические
данные; момент уничтожения дескриптора зависит от
реализации
46. Завершение процесса
Завершить выполнение всех потоков процесса
Сохранить статистические данные процесса и код возврата
в его дескрипторе
Перевести все ресурсы, принадлежащие процессу, в
непротиворечивое и стабильное состояние
Освободить все ресурсы, принадлежавшие процессу или
использовавшиеся процессом
Освободить ВАП и уничтожить его
Оповестить подсистемы, принимающие участие в
управлении процессами, о завершении процесса
Установить состояние процесса в значение «завершен»
После выполнения всех действий остается дескриптор
процесса, содержащий его код возврата и статистические
данные; момент уничтожения дескриптора зависит от
реализации
47. Итого по процессам/потокам
Процессы и потоки – объекты, представляющие
программы во время их выполнения
Процесс – пассивный объект, владелец ресурсов
Поток – активный объект
С точки зрения ОС, процессы и потоки –
специфичные типы ресурсов, требующие
специального управления
48. Планирование ЦП
Потокам для выполнения нужен центральный
процессор (ЦП)
Если потоков больше, чем процессоров, ОС должна
обеспечить возможность поочередного
использования процессоров потоками
49. Что такое "планирование"?
Планирование – распределение времени центрального
процессора
Процесс
Поток
Процесс
Поток
Поток
Поток
Поток
Процесс
Поток
Поток
Центральный
процессор
Поток
50. Что такое "планирование"?
Планирование – распределение времени центрального
процессора
Планирование бывает
долгосрочное – принятие решений о запуске и
откладывании запуска заданий
среднесрочное – принятие решений о временном
вытеснении процессов на диск
краткосрочное (диспетчеризация) – выбор потока,
которому следует предоставить ЦП
При реализации планирования используется механизм
переключения контекстов процессов и потоков
51. Критерии оценки алгоритмов
планирования…
Общие критерии
Справедливость – всем выделяется равное
количество времени ЦП
Баланс – обеспечение загрузки всех устройств
системы
Накладные расходы – процент ресурсов,
потребляемых планировщиком
Масштабируемость – увеличение потребления
ресурсов планировщиком при увеличении числа
объектов планирования
52. Критерии оценки алгоритмов
планирования…
Справедливость – всем выделяется равное количество
времени ЦП
Как измерить справедливость?
Одинаковое время потребления ЦП? Одинаковое
количество выполненных команд?
Честно на уровне потоков? процессов? пользователей?
Что если один процесс ограничен возможностями ЦП, а
другой – возможностями ввода-вывода?
Иногда нужно быть несправедливым и явно оказывать
предпочтение некоторым определенным классам
потоков/запросов/событий (иметь систему
приоритетов), но…
следует избегать голодания (starvation) – ситуации,
когда некоторым потокам процессор может не
выделяться в течении неограниченного времени
53. Критерии оценки алгоритмов
планирования…
Системы пакетной обработки данных
Пропускная способность – среднее число заданий,
полностью выполняемых в единицу времени (час,
сутки,…)
Оборотное время – среднее время между запуском
задания и завершением его обработки
Эффективность – средний процент загрузки
центрального процессора
54. Критерии оценки алгоритмов
планирования…
Интерактивные системы
Время отклика – среднее время между
возникновением события и завершением его
обработки
Время ожидания – среднее время между переходом
потока из состояния "ожидание" в состояние "готов к
выполнению" и предоставлением ему ЦП
Соразмерность – соответствие производительности
ожиданиям пользователя
55. Критерии оценки алгоритмов
планирования
Операционные системы реального времени
(Окончание обслуживания к сроку)
Предсказуемость – соблюдение временных
ограничений при выполнении некоторого заранее
оговоренного множества системных вызовов
56. Моменты планирования
Создание нового процесса
Создание нового потока
Завершение потока или процесса
Блокирование потока (переход из состояния
"выполнение" в состояние "ожидание")
Разблокирование потока (переход из состояния
"ожидание" в состояние "готов к выполнению")
Срабатывание таймера
57. Невытесняющие алгоритмы
планирования…
Выбирают поток, передают ему центральный
процессор и позволяют работать вплоть до
блокировки либо до того момента, когда поток сам
отдаст центральный процессор
58. Вытесняющие алгоритмы планирования…
Выбирают поток и позволяют ему работать некоторое
максимально возможное фиксированное время. Если к
концу заданного интервала времени поток все еще
работает, он приостанавливается, и управление переходит
к другому потоку (если существует поток, готовый к
исполнению).
Вытесняющее планирование требует прерываний по
таймеру, происходящих в конце отведенного периода
времени. При отсутствии таймера возможна реализация
только невытесняющих алгоритмов.
59. Приоритетное планирование
Необходим дифференцированный подход к потокам
В системе могут одновременно существовать служебные
процессы и процессы, запущенные пользователями
Пользователи могут различаться по статусу
61. Приоритетное планирование
При использовании приоритетного планирования,
если в системе всегда готов к выполнению хотя бы
один из высокоприоритетных потоков, то потоки с
низкими приоритетами никогда не будут выполнены.
Поэтому, как правило, используются некоторые
модификации этого алгоритма.
62. Приоритетное планирование…
В модификациях часто разделяют базовый
приоритет потока и эффективный приоритет
потока
Базовый приоритет назначается потоку посредством
некоторого системного вызова, например,
инициированного выполнением команды
пользователя
Эффективный приоритет используется
планировщиком при выборе потоков на исполнение и
может им изменяться в соответствии с
реализованным алгоритмом планирования
63. Приоритетное планирование
Для предотвращения бесконечной работы
высокоприоритетных потоков планировщик может
уменьшать с каждым тактом таймера эффективный
приоритет выполняющегося потока
Для предоставления низкоприоритетным потокам
центрального процессора планировщик может проверять
время, в течение которого поток находился в состоянии
готовности к исполнению
Возможно адаптивное и динамическое изменение
приоритетов
адаптивное изменение – коррекция эффективных
приоритетов на основании набора правил
динамическое изменение – регулярный пересчет
эффективных приоритетов на основании значений
некоторой совокупности параметров
64. Итоги
Существует несколько уровней планирования
Существуют различные алгоритмы планирования
Определены критерии оценки алгоритмов
планирования (зачастую противоположные)
В реальных системах реализуются гибридные
алгоритмы, использующие, к тому же, адаптивные
или динамические приоритеты