- •Введение
- •Требования к содержанию лекций
- •Организация лабораторного практикума
- •Программа лабораторного практикума
- •Лабораторная работа 1. Краткосрочное планирование задач
- •Лабораторная работа 2. Замещение областей памяти
- •Лабораторная работа 3. Синхронизация процессов/потоков
- •Лабораторная работа 5. Файловые системы
- •Литература
- •Основные понятия и определения
- •Распределение ресурса «центральный процессор»
- •Процесс и поток – типы ресурсов операционной системы
- •Классификация ОС по признаку поддержки процессов и потоков
- •1. Однозадачные ОС
- •2. Многозадачные ОС без поддержки многопоточности
- •3. Многозадачные ОС с поддержкой многопоточности
- •Реализация многопоточности внутри программы пользователя
- •Состояния потока
- •Дескрипторы процессов и потоков
- •Операции над процессами
- •1. Создание процесса
- •2. Завершение процесса
- •Операции над потоками
- •1. Создание потока
- •2. Завершение потока
- •Планирование
- •Модель поведения процесса с одним потоком
- •Критерии оценки алгоритмов планирования
- •Алгоритмы планирования в системах пакетной обработки данных
- •«Кратчайшая задача - первая» (Shortest Job First, SJF)
- •«Наименьшее оставшееся время выполнения»
- •Алгоритмы планирования в интерактивных системах
- •«Циклическое планирование» (Round Robin, RR)
- •«Приоритетное планирование»
- •«Самый короткий поток - следующий»
- •«Гарантированное планирование»
- •Лотерейное планирование
- •Планирование с использованием многоуровневых очередей
- •Алгоритм планирования Windows NT
- •Алгоритм планирования UNIX
- •Алгоритм планирования UNIX System V Release 4
- •Алгоритм планирования Linux (версия ядра 2.2 и ниже)
- •Заключение
- •Управление памятью
- •Архитектура оперативной памяти
- •Способ описания физической памяти
- •Алгоритм обеспечения пространственного мультиплексирования
- •Схема с фиксированными разделами
- •Оверлейная структура
- •Свопинг
- •Схема с переменными разделами
- •Общие вопросы управления страничной памятью
- •Алгоритмы замещения страниц
- •Оптимальный алгоритм
- •Алгоритм FIFO - Выталкивание первой пришедшей страницы
- •Алгоритм Second-Chance - Вторая попытка
- •Алгоритм «часы»
- •Заключение
- •Взаимодействие потоков – передача данных и синхронизация
- •Взаимодействие потоков
- •Критическая секция
- •Задача взаимного исключения
- •Семафоры
- •Тупики
- •Синхронизирующие объекты ОС
- •Сигналы
- •Обмен сообщениями (message passing) (Хоар, 1978 год)
- •Реализация взаимоисключений
- •Алгоритм Петерсона
- •Алгоритм булочной (Bakery algorithm)
- •Аппаратная поддержка взаимоисключений
- •Команда Test-and-Set (Проверить и присвоить 1)
- •Команда Swap (Обменять значения)
- •Классические задачи взаимодействия потоков
- •Задача "Производитель-потребитель"
- •Задача "Читатели-писатели"
- •Задача "Обедающие философы"
- •Проблема спящего брадобрея
- •Передача данных между взаимодействующими потоками
- •Архитектура файловой системы
- •Файлы с точки зрения пользователя
- •Типы объектов файловой системы
- •Имена объектов файловой системы
- •Операции над файлами
- •Директории – логическая структура файлового архива
- •Операции над директориями
- •Пользовательский интерфейс системы управления файлами
- •Виртуальная Файловая Система
- •Принцип работы
- •Структура VFS
- •Типы объектов в VFS
- •Символьные связи (мягкие ссылки)
- •Именованные конвейеры (именованные каналы)
- •Реализация VFS
- •Лабораторная работа 1. Краткосрочное планирование задач
- •Симулятор многозадачной системы
- •Модель эксперимента
- •Архитектура программной лаборатории
- •Проведение эксперимента
- •Выполнение лабораторной работы
- •Архитектура планировщика в Linux (Ядро 2.4.18)
- •Очередь процессов
- •Кванты времени центрального процессора
- •Выбор процесса на исполнение
- •Вычисление эффективного приоритета и размера кванта
- •Вытеснение процесса
- •Изменение алгоритма планирования
- •Компиляция и установка ядра Linux
- •Литература по лабораторной работе 1
- •Лабораторная работа 2. Замещение областей памяти
- •Симулятор многозадачной системы
- •Управление памятью в Linux (ядро 2.4.18)
- •Описание физической памяти в Linux
- •Узлы
- •Зоны
- •Отметки уровня воды (watermarks)
- •Страницы
- •Адресное пространство процесса
- •Страничные сбои
- •Выделение памяти по запросу
- •Подкачка по запросу
- •Демон выгрузки страниц (kswapd)
- •Кэш страниц
- •Добавление страниц в кэш страниц
- •Заполнения списка «холодных» страниц
- •Стратегия замещения страниц
- •Изменение стратегии замещения
- •Литература по лабораторной работе 2
- •Механизмы межпроцессного взаимодействия ОС UNIX
- •Семафоры.
- •Очереди сообщений.
- •Работа с разделяемой памятью.
- •Механизмы межпроцессного взаимодействия ОС Windows
- •Wait-функции
- •События
- •Ожидаемые таймеры
- •Семафоры
- •Мьютексы
- •Литература по лабораторным работам 3-4
- •Лабораторная работа 5. Файловые системы
- •Предлагаемые к реализации файловые системы
- •Файловая система 1
- •Файловая система 2
- •Файловая система 3
- •Симулятор работы с файловой системой
- •Постановка задачи
- •Операции над файлами
- •Операции над директориями
- •Требования к лабораторной работе
- •Архитектура программной лаборатории
- •Обзор архитектуры модуля поддержки файловой системы в Linux
- •Модули драйвера файловой системы Minix
- •Описание суперблока файловой системы
- •Описание индексного дескриптора (inode)
- •Основной файл заголовков
- •Исходные тексты функций работы с индексным дескриптором
- •Исходные тексты функций работы с объектами ФС разных типов
- •Другие модули
- •Реализация драйвера файловой системы
- •Литература по лабораторной работе 5
- •Литература
- •Дополнительная литература
Лабораторный практикум по курсу "Операционные системы"
«Наименьшее оставшееся время выполнения»
Этот невытесняющий алгоритм планирования является разновидностью предыдущего, только он учитывает не общее планируемое время выполнения потока, а планируемое время до окончания выполнения.
Такая схема позволяет быстро обслуживать короткие и близкие к завершению запросы.
Алгоритмы планирования в интерактивных системах
«Циклическое планирование» (Round Robin, RR)
Одним из наиболее старых, простых и справедливых алгоритмов планирования является вытесняющий алгоритм циклического планирования. Процессорное время делится на некоторые интервалы, так называемые кванты времени, и готовом к исполнению потокам в порядке очереди предоставляется такой квант. Если к концу кванта времени поток все еще работает, он прерывается, помещается в конец очереди готовых к исполнению, а управление передается другому потоку. Если поток блокируется или завершает работу до истечения предоставленного ему кванта, переход управления происходит немедленно.
Реализация алгоритма проста – |
необходимо |
лишь |
поддерживать |
очередь потоков в |
||||
состоянии «готов к выполнению». |
|
|
|
|
|
|
||
текущий |
следующий |
|
|
|
||||
поток |
|
поток |
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
A |
|
|
B |
|
C |
D |
E |
|
|
|
|
|
|
|
|
|
Список потоков в состоянии «готов к выполнению»
текущий
поток
B |
C |
D |
E |
A |
|
|
|
|
|
Список потоков в состоянии «готов к выполнению» после исчерпания потоком A своего кванта времени
Рис. 14 Очередь готовых к исполнению потоков при циклическом планировании
Интересным моментом данного алгоритма является выбор размера кванта времени. Если выбрать слишком маленький размер кванта, очень много времени будет уходить на переключения контекстов, если выбрать слишком большой – при большом числе потоков
Учебно-исследовательская лаборатория «Информационные технологии» 29
Лабораторный практикум по курсу "Операционные системы"
сильно увеличится время отклика. Значение кванта обычно принимается в пределах 20-50 мс.
«Приоритетное планирование»
В циклическом алгоритме планирования есть важное допущение о том, что все потоки равнозначны. В действительности обычно это не так. Во-первых, возможно одновременное существование служебных процессов и процессов, запущенных пользователями. При этом важность выполнения служебных процессов может быть как достаточно высокой, так и достаточно низкой. Во-вторых, возможно ранжирование пользователей по статусу (например, декан-преподаватели-студенты). Необходимость принимать во внимание такие факторы приводит к приоритетному планированию.
Основная идея проста – каждому потоку присваивается приоритет, и управление передается готовому к выполнению потоку с самым высоким приоритетом.
заголовки
очередей
Приоритет 4 |
самый высокий |
|
приоритет |
||
|
||
Приоритет 3 |
|
|
|
|
|
Приоритет 2 |
|
|
|
самый низкий |
|
Приоритет 1 |
||
приоритет |
||
|
Рис. 15 Приоритетный алгоитм планирования с четырьмя уровнями приоритетов
Пока в очереди потоков с наивысшим приоритетов есть хотя бы один поток, они запускаются один за другим в порядке циклического планирования. Если в классе 4 нет готовых к исполнению потоков, обслуживаются потоки класса 3 и т.д.
При использовании приоритетного планирования, если в системе всегда готов к исполнению хотя бы один из высокоприоритетных потоков, то потоки с низкими приоритетами никогда не будут выполнены. Поэтому всегда используются некоторые модификации этого алгоритма.
В этих модификациях иногда разделяют базовый приоритет потока и эффективный приоритет потока. Базовый приоритет назначается потоку посредством некоторого системного вызова, например, инициированного выполнением команды пользователя. Эффективный приоритет используется планировщиком при выборе потоков на исполнение и может им изменяться в соответствии с реализованным алгоритмом планирования.
1.Для предотвращения бесконечной работы высокоприоритетных потоков планировщик может изменять с каждым тактом таймера эффективный приоритет выполняющегося потока, уменьшая его. Если в системе еще существуют готовые к исполнению потоки, то рано или поздно их приоритет станет выше, и один из них получит центральный процессор. Эффективный приоритет прерванного потока через некоторое время восстановится до первоначального значения.
2.Для предоставления низкоприоритетным потокам центрального процессора планировщик может проверять время, в течение которого поток находился в состоянии готовности к исполнению. В случае достижения некоторого критического значения потоку временно
30 Учебно-исследовательская лаборатория «Информационные технологии»
Лабораторный практикум по курсу "Операционные системы"
назначается наивысший эффективный приоритет, который после получения квантов времени постепенно уменьшается до первоначального значения.
3. Динамическое изменение приоритетов.
Система может динамически назначать приоритеты для достижения своих целей. Например, если какой-то поток проводит большую часть времени в ожидании завершения операций ввода-вывода, то, очевидно, что когда бы ни потребовался данному потоку центральный процессор, его желательно немедленно предоставить, чтобы поток смог начать следующую операцию ввода-вывода.
Простой алгоритм обслуживания процессов, ограниченных возможностями устройств вводавывода, состоит в установке приоритета равным 1/f, где f – часть использованного в последний раз кванта.
При использовании динамических приоритетов в расчетах могут использоваться самые различные параметры, как статические для каждого потока, так и динамические, например:
-Каким пользователем запущен процесс или сформировано задание.
-Насколько важной является поставленная задача, т. е. каков приоритет ее выполнения.
-Сколько процессорного времени запрошено пользователем для решения задачи.
-Каково соотношение потребляемого процессорного времени и времени, необходимого для осуществления операций ввода-вывода.
-Какие ресурсы вычислительной системы (оперативная память, устройства ввода-вывода, специальные библиотеки и системные программы и т. д.) и в каком количестве необходимы заданию.
-Сколько времени прошло со времени выгрузки процесса на диск или его загрузки в оперативную память.
-Сколько оперативной памяти занимает процесс.
-Сколько процессорного времени было уже предоставлено процессу.
Рассмотрим несколько частных случаев.
«Самый короткий поток - следующий»
Алгоритм планирования «Кратчайшая задача - первая» минимизирует среднее оборотное время в системах пакетной обработки. Поскольку интерактивные процессы часто работают по схеме «ожидание команды – исполнение команды - ожидание команды», то одна итерация такого цикла может быть рассмотрена как отдельное задание, время оборота которого желательно минимизировать.
Один из методов оценки длины потока базируется на использовании информации о предыдущем поведении процесса. В ходе планирования ни исполнение выбирается поток, у которого оценочное время самое маленькое.
Проблема состоит в том, что мы можем делать только прогноз длительности следующего временного отрезка, в течение которого поток будет занимать центральный процессор, исходя из предыстории работы процесса.
Пусть t(n) - величина n-го времени использования ЦП, T(n + 1)- предсказываемое значение для n + 1-го времени использования, a - некоторая величина в диапазоне от 0 до 1.
Определим рекуррентное соотношение:
Учебно-исследовательская лаборатория «Информационные технологии» 31
Лабораторный практикум по курсу "Операционные системы"
T(n+1) = a*t(n) + (1- a)*T(n), T(0) положим произвольной неотрицательной константой.
Первое слагаемое учитывает последнее поведение процесса, тогда как второе слагаемое учитывает его предысторию. При a = 0 мы перестаем следить за последним поведением процесса, фактически полагая T(n) = T(n-1) =…=T(0), т.е. оценивая все времена использования ЦП одинаково, исходя из некоторого начального предположения. Положив a = 1, мы забываем о предыстории процесса. В этом случае мы полагаем, что время очередного использования ЦП будет совпадать со временем последнего использования ЦП: T(n+1) = t(n). При выборе a = 1/2 равноценно учитываются последнее поведение и предыстория. Отметим, что такой выбор a удобен и для быстрой организации вычисления оценки T(n+1). Для подсчета новой оценки нужно взять старую оценку, сложить с последним измеренным временем использования ЦП и полученную сумму разделить на 2, например, с помощью ее сдвига на 1 бит вправо. Полученные оценки T(n+1) применяются как продолжительности очередных промежутков времени непрерывного использования процессора для краткосрочного планирования «Самый короткий поток следующий».
«Гарантированное планирование»
При одновременной работе N пользователей в вычислительной системе можно применить алгоритм планирования, который гарантирует, что каждый из пользователей будет иметь в своем распоряжении примерно 1/N часть процессорного времени.
Пронумеруем всех пользователей от 1 до N. Для каждого пользователя с номером i введем две величины: Ti - время нахождения пользователя в системе, и ti - суммарное процессорное время уже выделенное всем его потокам в течение сеанса. Справедливым для пользователя было бы получение Ti/N процессорного времени. Если t << Ti / N, то i - й пользователь несправедливо обделен процессорным временем. Если же t >> Ti / N, то система явно благоволит к пользователю с номером i. Вычислим для каждого пользовательского потока значение коэффициента справедливости ti * N / Ti , и будем предоставлять очередной квант времени процессу с наименьшей величиной этого отношения. Предложенный алгоритм называют алгоритмом гарантированного планирования.
К недостаткам этого алгоритма можно отнести невозможность предугадать поведение пользователей. Если некоторый пользователь отправится на пару часов пообедать и поспать, не прерывая сеанса работы, то по возвращении его процессы будут получать неоправданно много процессорного времени.
Лотерейное планирование
Для простой реализации предсказуемых результатов используется алгоритм лотерейного планирования.
В основе алгоритма лежит раздача потокам лотерейных билетов на доступ к различным ресурсам, в том числе и процессору. Когда планировщику необходимо принять решение, выбирается случайным образом лотерейный билет, и его обладатель получает доступ к ресурсу. Более важным потоком в этом случае выдается большее число билетов. Каждый поток получает количество ресурсов, пропорциональное количеству имеющихся у него билетов. Например, если всего 100 билетов, и 20 из них находятся у одного потока, то в среднем ему будет доставаться около 20% времени центрального процессора.
Лотерейное планирование характеризуется несколькими интересными свойствами. Например, при изменении у потока количества билетов, его шансы увеличиваются уже в следующем розыгрыше, то есть лотерейное планирование обладает высоко отзывчивостью.
32 Учебно-исследовательская лаборатория «Информационные технологии»
