
- •8 Взаимодействие процессов 79
- •9 Синхронизация процессов 87
- •10 Тупиковые ситуации 101
- •11 Управление памятью 114
- •12 Управление виртуальной памятью 132
- •13 Интерфейс файловой системы 138
- •14 Некоторые аспекты Реализации файловой системы 156
- •Литература 166 введение
- •Понятие операционной системы
- •Контрольные вопросы
- •Организация компьютерной системы
- •Архитектура компьютера с общей шиной
- •Структура памяти
- •Структура ввода-вывода
- •Контрольные вопросы
- •Классификация Операционных Систем
- •Поддержка многопользовательского режима.
- •Поддержка многопоточности
- •Многопроцессорная обработка
- •Особенности областей использования
- •Контрольные вопросы
- •Функциональные компоненты операционной системы
- •Управление процессами
- •Управление памятью
- •Управление файлами и внешними устройствами
- •Безопасность и защита данных
- •Интерфейс прикладного программирования
- •Пользовательский интерфейс
- •Контрольные вопросы
- •Структура операционной системы
- •Монолитные системы
- •Многоуровневые системы
- •Виртуальные машины
- •Экзоядро
- •Модель клиент-сервер
- •Контрольные вопросы
- •Процессы и потоки
- •Концепция процесса
- •Состояния процесса
- •Реализация процессов
- •Операции над процессами
- •1Создание процессов
- •2Завершение процессов
- •Контрольные вопросы
- •Планирование процессора
- •Планирование процессов. Очереди
- •Планировщики
- •Моменты перепланировки. Вытеснение
- •Переключение контекста
- •Диспетчеризация
- •Критерии планирования процессора
- •Стратегии планирования процессора
- •3Планирование в порядке поступления
- •Пример.
- •4Стратегия sjf
- •5Приоритетное планирование
- •6Карусельная стратегия планирования
- •7Очереди с обратной связью
- •8Гарантированное планирование
- •9Лотерейное планирование
- •10Планирование в системах реального времени
- •Планирование потоков
- •Оценка алгоритмов планирования
- •11Детерминированное моделирование
- •12Моделирование очередей
- •13Имитация
- •Контрольные вопросы
- •Взаимодействие процессов
- •Разделяемая память. Проблема производителя и потребителя
- •Взаимодействие путем передачи сообщений
- •14Буферизация
- •15Исключительные ситуации
- •Потерянные сообщения
- •Вызов удаленных процедур (rpc)
- •Контрольные вопросы
- •Синхронизация процессов
- •Взаимное исключение и критические участки
- •Синхронизация с помощью элементарных приемов нижнего уровня
- •16Запрещение прерываний
- •17Переменные блокировки
- •18Операция проверки и установки
- •Семафоры
- •19Использование семафоров
- •20Реализация семафоров
- •21Тупики и зависания
- •Классические проблемы синхронизации
- •22Проблема ограниченного буфера
- •23Проблема читателей и писателей
- •24Задача об обедающих философах
- •Двоичные семафоры
- •Сигналы
- •Контрольные вопросы
- •Тупиковые ситуации
- •Необходимые условия возникновения тупиков
- •Граф выделения и закрепления ресурсов
- •Методы решения проблемы тупиков
- •25Предотвращение тупиков
- •Взаимное исключение
- •Захват и ожидание
- •Отсутствие перераспределения
- •Условие кругового ожидания
- •26Обход тупиков
- •27Простейший алгоритм обхода тупика
- •28Алгоритм банкира
- •29Обнаружение тупиков
- •30Восстановление после тупика
- •Контрольные вопросы
- •Управление памятью
- •Функции операционной системы по управлению памятью
- •Типы адресов
- •Физическое и логическое адресное пространство
- •Связывание адресов
- •Динамическая загрузка
- •Динамическое связывание
- •Перекрытие программ в памяти
- •Свопинг
- •Смежное размещение процессов
- •31Простое непрерывное распределение
- •32Распределение с несколькими непрерывными разделами
- •Фрагментация
- •Страничная организация памяти
- •Сегментная организация памяти
- •Защита и совместное использование
- •Фрагментация
- •Сегментация в сочетании со страничной памятью
- •Контрольные вопросы
- •Управление виртуальной памятью
- •Подкачка страниц
- •Алгоритмы вытеснения страниц
- •33Случайный выбор (Random)
- •34«Первым пришел первым ушел» (fifo)
- •35Вытеснение по давности использования (lru)
- •36Вытеснение редко используемых страниц (lfu)
- •37Оптимальный алгоритм (opt)
- •Аномалии в алгоритмах страничной реализации
- •38«Толкотня» в памяти
- •39Аномалия Биледи
- •Эффективность и применимость виртуальной памяти
- •Пример.
- •Контрольные вопросы
- •Интерфейс файловой системы
- •Понятие файла. Атрибуты файла и операции с файлами
- •Операции над файлами
- •Типы файлов
- •Структура файлов
- •Методы доступа
- •40Последовательный метод доступа
- •41 Прямой метод доступа
- •42Другие методы доступа
- •Каталоги
- •Логическая структура каталога
- •43Одноуровневая структура каталога
- •44Двухуровневая структура каталога
- •45 Древовидная структура каталога
- •46Организация каталога в виде графа без циклов
- •47Организация каталога в виде произвольного (простого) графа
- •Проблемы защиты файлов
- •48Типы доступа
- •49Списки прав доступа
- •50Другие подходы к защите
- •Контрольные вопросы
- •Некоторые аспекты Реализации файловой системы
- •Общая структура файловой системы
- •Методы выделения дискового пространства
- •51Выделение непрерывной последовательностью блоков
- •52Связный список
- •53Таблица отображения файлов
- •54Индексные узлы
- •Управление свободным и занятым дисковым пространством
- •55Учет при помощи организации битового вектора
- •56Учет при помощи организации связного списка
- •57Размер блока
- •58Структура файловой системы на диске
- •Контрольные вопросы Литература
5Приоритетное планирование
Один из простых методов планирования очереди готовых процессов состоит в том, что процессор предоставляется тому процессу, который имеет наивысший приоритет (правило HPF – highest priority first, «наивысший приоритет – первым».). Эта стратегия предполагает, что каждому процессу приписывают приоритет, определяющий очередность предоставления ему процессора. Каждый раз, когда процессор освобождается, из очереди готовых процессов должно быть извлечено задание с наивысшим приоритетом. Если таких заданий несколько, то извлекается ранее поступившее. Если вытеснение не допускается, то процесс с наивысшим приоритетом выполняется до тех пор, пока не кончится или не заблокирует сам себя. Если в очередь поступает процесс с более высоким приоритетом, чем у текущего процесса, то он должен ждать, пока текущий процесс не освободит процессор. Если вытеснение разрешено, то при появлении процесса с более высоким приоритетом текущий процесс прерывается и управление переходит к вновь прибывшему процессу. Вытесненный процесс возвращается в очередь готовых процессов.
В правиле наивысшего приоритета компоненты приоритета, применение вытеснения и организация очереди являются свободными параметрами реализации.
Приоритет – это положительное число (обычно целое), находящееся в некотором диапазоне, например 0 – 7 или 0 – 4095 . Будем считать далее, что чем меньше число, тем выше приоритет.
Пример
Рассмотрим множество процессов P1, P2, P3, P4, и P5, поступивших в момент времени 0. Значения приоритетов и величина времени обработки приведены в таблице.
Процессы |
Время обслуживания |
Приоритеты |
P1 |
10 |
3 |
P2 |
1 |
1 |
P3 |
2 |
3 |
P4 |
1 |
4 |
P5 |
5 |
2 |
На Рис.7.5 приведена диаграмма Ганта для нашего примера.
P2 |
P5 |
P1 |
P3 |
P4 |
|
0 |
1 |
6 |
16 |
18 |
19 |
Рисунок 7.16 - Диаграмма Ганта для случая HPF стратегии планирования
Легко подсчитать, что среднее время ожидания равно 8,2 мс.
Приоритеты определяются исходя из совокупности внутренних и внешних факторов (по отношению к определённой системе).
Внутренние факторы – это, например, требование к памяти, количество открытых файлов, отношение среднего времени вводавывода к среднему времени работы центрального процессора и т.д. Внешние факторы – важность процесса, тип и величина фондов используемых для оплаты, отделение, спонсирующее работу и т.д. Внутренние факторы могут использоваться для автоматического назначения приоритетов самой операционной системы, а внешние – для принудительной с помощью администратораоператора.
Каждый раз, когда процессор освобождается, из очереди готовых процессов должно быть извлечено задание с наивысшим приоритетом. Если очередь упорядочена, то извлечь первый элемент просто. Но чтобы поставить процесс в такую очередь, требуется много времени: для каждой операции вставления нужно перебрать в среднем половину очереди, если считать, что элементы связаны в двусторонний список, то есть с указателями из начала в конец и из конца в начало очереди. Если очередь не упорядочена, то ее надо просматривать каждый раз, когда нужен новый процесс, зато операция вставления тривиальна. Возможны также компромиссные стратегии. Например, очередь можно упорядочивать через каждые Т единиц времени. Когда поступает новый процесс, он ставится в начало очереди. Но при этом сохраняется ссылка Р, которая указывает на начало рассортированной части списка. Поиск процесса с наивысшим приоритетом начинается со ссылки Р и продолжается в направлении начала очереди. Количество элементов, которые приходится перебирать, меньше, чем в случае неупорядоченной очереди, а время сортировки здесь сокращено по сравнению со случаем строго упорядоченной очереди. Часто в реальных системах очередь строится как массив очередей, соответствующих одному или нескольким значениям приоритета. В этом случае добавить процесс в очередь довольно просто, а выборка осуществляется из первой непустой очереди.
Стратегию SJF можно рассматривать как частный случай приоритетного планирования, когда приоритет обратно пропорционален времени обработки.
Главный недостаток приоритетного планирования заключается в возможности блокирования на неопределенно долгое время низкоприоритетных процессов. Известен случай, когда в 1973 году в Массачусетском технологическом институте (США) при остановке компьютера IBМ 7094 в очереди готовых процессов были обнаружены процессы, представленные в 1967 году и все еще не выполненные.
Для решения отмеченной проблемы используются различные методы. Чтобы предотвратить бесконечную работу процессов с высоким приоритетом, планировщик может уменьшать приоритет процесса с каждым тактом часов (то есть при каждом прерывании по таймеру). Если в результате приоритет текущего процесса окажется ниже приоритета следующего процесса, произойдет переключение. Возможно предоставление каждому процессу максимального отрезка времени работы. Как только время кончилось, управление передается следующему по значимости процессу.
Еще один класс правил использует линейно возрастающий приоритет. Каждому процессу при входе в систему присваивается некий приоритет. Приоритет возрастает с коэффициентом а во время ожидания в очереди готовых процессов и с коэффициентом b во время выполнения. В зависимости от выбора а и b получаются разные правила планирования. Например, если 0<а<b, то очередь обслуживается в порядке поступления (FCFS). Если 0>b>а, то получается обслуживание в противоположном порядке (LCFS).
Можно придумать много вариантов правила линейно возрастающего приоритета, хотя очень немногие из них изучены. Например, коэффициенты а и b могут зависеть от внешнего приоритета, то есть от затрат, которые пользователь считает приемлемыми. Можно выбирать и нелинейные функции. Можно устроить, чтобы приоритет убывал по линейному закону с течением времени. Когда достигается некоторое максимальное время, приоритет скачком возрастает до некоторой большой величины. Это благоприятствует коротким процессам, и при этом соблюдается условие, что ни одному процессу не придется ждать обслуживания слишком долго.
Приоритеты процессам могут присваиваться статически или динамически. На военной базе процессу, запущенному генералом, присваивается приоритет 100, полковником – 90, майором – 80, капитаном – 70, лейтенантом – 60 и т. д. А в коммерческом компьютерном центре выполнение заданий с высоким приоритетом может стоить 100 долларов в час, со средним – 75, с низким – 50. В системе UNIX есть команда nice, позволяющая пользователю добровольно снизить приоритет своих процессов, чтобы быть любезным по отношению к остальным пользователям.