- •Основы построения операционных систем
- •Введение
- •1. Основные аспекты операционных систем
- •1.1. Программные системы
- •1.2. Ресурсы вычислительных систем
- •1.3. Функции операционных систем
- •1.3.1. Упрощение доступа к компьютеру
- •1.3.2. Повышение эффективности использования ресурсов
- •1.4. Классификация операционных систем
- •2. Управление файлами
- •2.1. Файлы
- •2.1.1. Имя файла
- •2.1.2. Типы файлов
- •2.1.3. Атрибуты файла
- •2.2. Функции системы управления файлами
- •2.3. Способы организации файлов
- •2.3.1. Последовательное размещение
- •2.3.2. Размещение с помощью сцепленных блоков
- •2.3.3. Организация файлов на основе таблиц размещения
- •2.3.4. Размещение с использованием таблицы индексов
- •2.3.5. Индексно-последовательное размещение
- •2.3.6. Библиотечная структура данных
- •2.4. Методы доступа к содержимому файлов
- •2.4.1. Последовательный доступ
- •2.4.2. Прямой доступ
- •2.4.3. Другие методы доступа
- •2.5. Способы организации файловой структуры
- •2.6. Манипулирование файловой структурой
- •3. Управление памятью
- •3.1. Простое непрерывное распределение
- •3.2. Распределение с несколькими непрерывными разделами
- •3.2.1. Мультипрограммирование и разбиение на разделы
- •3.2.2. Разделы с фиксированными границами
- •3.2.3. Разделы с подвижными границами
- •3.2.4. Своппинг
- •3.3. Организация виртуальной памяти
- •3.3.1. Основные концепции виртуальной памяти
- •3.3.2. Страничная организация памяти
- •3.3.3. Сегментная организация памяти
- •3.3.4. Сегментно-страничная организация памяти
- •3.4. Управление виртуальной памятью
- •3.4.1. Алгоритмы выталкивания страниц
- •3.4.2. Подкачка страниц по запросу
- •3.4.3. Подкачка страниц с опережением
- •3.4.4. Освобождение страниц
- •3.4.5. Размер страниц
- •4. Управление процессами
- •4.1. Концепции процесса
- •4.1.1. Понятие последовательного процесса
- •4.1.2. Состояния процесса
- •4.1.3. Блок управления процессом
- •4.1.4. Планирование процессов
- •4.1.5. Обработка прерываний
- •4.2. Синхронизация параллельных процессов
- •4.2.1. Параллельная обработка
- •4.2.2. Взаимное исключение
- •4.2.3. Алгоритм Деккера
- •4.2.4. Аппаратная реализация взаимного исключения
- •4.2.5. Семафоры
- •4.2.6. Мониторы
- •4.2.7. Передача сообщений
- •4.3. Тупиковые ситуации
- •4.3.1. Условия возникновения дедлоков
- •4.3.2. Основные направления исследований по проблеме тупиков
- •4.3.3. Предотвращение тупиков
- •4.3.4. Обход дедлоков
- •4.3.5. Алгоритм банкира
- •4.3.6. Распознавание дедлоков
- •4.3.7. Восстановление после тупиков
- •5. Управление процессором
- •5.1. Диспетчеризация процессов
- •5.2. Приоритеты
- •5.3. Алгоритмы диспетчеризации с одной очередью
- •5.3.1. Алгоритм fcfs (первый пришедший обслуживается первым)
- •5.3.2. Алгоритм spn (кратчайший процесс - следующий)
- •5.3.3. Алгоритм srt (по наименьшему остающемуся времени)
- •5.3.4. Алгоритм hrrn (по наибольшему относительному времени ответа)
- •5.3.5. Алгоритм циклической диспетчеризации rr
- •5.3.6. Сравнение алгоритмов диспетчеризации с одной очередью
- •5.4. Многоуровневые очереди с обратными связями
- •6. Управление устройствами
- •6.1. Общая организация ввода-вывода
- •6.2. Методы управления периферийными устройствами
- •6.3. Действия по вводу-выводу
- •6.3.1. Буферизация : прочитать и записать
- •6.3.2. Блокирование : получить и поместить
- •6.3.3. Подготовка : открыть и закрыть
- •6.4. Управление магнитными дисками
- •6.4.1. Физическая структура магнитного диска
- •6.4.2. Физическая структура формата данных дискеты
- •6.4.3. Логическая структура магнитного диска
- •6.4.4. Планирование работы с магнитными дисками
- •Заключение
- •Список используемых источников
- •Оглавление
5.4. Многоуровневые очереди с обратными связями
Когда процесс получает в свое распоряжение центральный процессор, диспетчер не имеет ни малейшего представления о том, какое именно количество времени процессора потребуется данному процессу.
Механизм диспетчеризации при этом должен
- оказывать предпочтение коротким процессам;
- оказывать предпочтение процессам, связанным в основном с вводом -выводом, чтобы обеспечить хороший коэффициент использования устройств ввода - вывода;
- как можно быстрее определять характер процесса и соответствующим образом планировать выполнение этого процесса.
Реализация этих целей значительно облегчается при наличии нескольких уровней очередей готовых к исполнению процессов. При этом для каждого уровня можно использовать свой алгоритм диспетчеризации и разные значения кванта времени.
Для минимизации среднего времени ожидания большинство рассмотренных ранее алгоритмов с одной очередью использовали информацию, предоставляемую пользователем (например, время выполнения процесса). Во время исполнения информация о каждом процессе может быть пополнена и использована для изменения приоритета этого процесса. Тем самым связь между процессом и очередью становится динамической. Такие очереди называются очередями с обратной связью, поскольку информация о выполнении процесса используется для его диспетчеризации.
Пример многоуровневой очереди с обратными связями приведен на рис.5.4.
Новый процесс входит в сеть очередей с конца верхней очереди. Он перемещается по этой очереди, реализующей алгоритм FCFS , пока не получит в свое распоряжение центральный процессор. Если процесс завершается или освобождает ЦП, чтобы подождать завершения операции ввода-вывода или наступления некоторого события, то этот процесс выходит из сети очередей. Если выделенный квант времени истекает до того, как процесс добровольно освободит ЦП, этот процесс помещается в конец следующей очереди более низкого уровня. Этот процесс в следующий раз получит в свое распоряжение ЦП, когда он достигнет начала данной очереди, если при этом не будет процессов, ожидающих в первой очереди. Если данный процесс будет продолжать использовать полный квант времени, предоставляемый на каждом уровне, он продолжит переход в конец очереди следующего нижележащего уровня. Обычно в системе предусматривается некоторая очередь самого нижнего уровня, которая реализует алгоритм циклического обслуживания и в которой данный процесс циркулирует до тех пор, пока не завершится.
Во многих структурах многоуровневых очередей с обратными связями квант времени, предоставляемый данному процессу при переходе в каждую очереди более низкого уровня, увеличивается. Таким образом, чем дольше находится процесс в сети очередей, тем больший квант времени выделяется ему с
Рис. 5.4. Многоуровневые очереди с обратными связями
каждым разом, когда он получает в свое распоряжение ЦП. Однако ему не удается получать ЦП слишком часто, поскольку процессы, находящиеся в очередях более высоких уровней, имеют и более высокий приоритет. Процесс, находящийся в данной очереди, может начать выполнение только в случае, если нет ожидающих во всех очередях более высоких уровней. Выполняющийся процесс прерывается, если поступает новый процесс в очередь более высокого уровня.
Рассмотрим теперь, каким образом подобный механизм реагирует на различные типы процессов. Этот механизм должен оказывать предпочтение процессам, связанным с вводом-выводом, чтобы обеспечить хорошую загрузку устройств ввода-вывода и малое время реакции на запросы интерактивных пользователей. Действительно, так и будет, поскольку процесс, связанный с вводом-выводом, будет поступать в очередь с очень высоким приоритетом и ему будет быстро предоставляться ЦП. Квант времени для первой очереди выбирается достаточно большим, с тем чтобы подавляющее большинство заданий, связанных с вводом-выводом, успевало выдать запрос ввода-вывода еще до истечения первого кванта. Когда подобный процесс выдает запрос ввода-вывода, он выходит из сети очередей, причем получив истинно приоритетное обслуживание, что и требовалось.
Если верхнюю очередь сети (очередь с очень высоким приоритетом) поступает процесс, требующий много времени центрального процессора, то он получает в свое распоряжение ЦП весьма быстро, однако после истечения выделенного ему кванта времени процесс переходит в конец очереди следующего нижележащего уровня. Теперь этот процесс будет иметь более низкий приоритет, так что вновь поступающие процессы, особенно связанные по преимуществу с вводом-выводом, будут первыми получать в свое распоряжение ЦП. Со временем данный вычислительный процесс все же получит ЦП, ему будет выделен квант времени большей величины, чем в очереди наивысшего приоритета, но он снова не успеет завершиться по истечении этого полного кванта. Затем он будет помещен в конец очереди следующего нижележащего уровня. Таким образом, данный процесс будет продолжать переходить в очереди с более низкими приоритетами и будет дольше ждать в промежутках между выделяемыми ему квантами времени и каждый раз полностью использовать свой квант, когда будет получать в свое распоряжение ЦП (если при этом не будет прерываться из-за поступления процесса с более высоким приоритетом). В конце концов этот вычислительный процесс окажется в очереди самого низкого уровня с циклическим обслуживанием, где и будет циркулировать, пока не завершится.
Многоуровневые очереди с обратными связями - это идеальный механизм, позволяющий разделять процессы на категории в соответствии с их потребностями во времени ЦП. В системе с разделением времени каждый раз, когда процесс выходит из сети очередей, он может быть помечен признаком очереди самого низкого уровня, в которой он побывал. Когда этот процесс впоследствии вновь войдет в сеть очередей, он будет направлен прямо в ту очередь, в которой он последний раз завершал свою работу.
Одним из достаточно распространенных вариантов механизма многоуровневых очередей с обратными связями является вариант, в котором процесс несколько раз циркулирует в каждой очереди, прежде чем перейти в очередь следующего нижележащего уровня. Как правило, количество подобных циклов в каждой очереди увеличивается по мере перехода процесса на нижележащие уровни.
На рис.5.5 показано выполнение ранее представленных процессов с использованием многоуровневых очередей с обратными связями для случаев как с постоянным значением кванта времени (q = 1), так и увеличивающимся в зависимости от уровня очереди (q = 2 n ). Числовые значения времени, характеризующего выполнение процессов, приведены в табл.5.3.
Рис.5.5. Сравнение алгоритмов диспетчеризации для многоуровневых очередей с обратными связями
Таблица 5.3
Алгоритм диспетче-ризации |
Процесс № Время поступления Время выполнения |
1 0 3 |
2 2 6 |
3 4 4 |
4 6 5 |
5 8 2 |
Среднее значе-ние |
FB q = 1 |
Время завершения Длительность цикла обработки Время ожидания |
4 4
1 |
20 18
12 |
16 12
8 |
19 13
8 |
11 3
1 |
10,0
6,0 |
FB q = 2 n |
Время завершения Длительность цикла обработки Время ожидания |
4 4
1 |
17 15
9 |
18 14
10 |
20 14
9 |
14 6
4 |
10,6
6,6 |
Как следует из табл.5.3, увеличение значения кванта времени при переходе процесса в очередь более низкого уровня позволяет сократить время ожидания для длинных процессов, хотя среднее время ожидания при этом может увеличиться.