- •Основы построения операционных систем
- •Введение
- •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. Управление процессором
Процессы получают возможность выполнять конкретную работу, когда в их распоряжение выделяется центральный процессор. Определение, какому из готовых к выполнению процессов будет предоставляться освободившийся центральный процессор, представляет собой сложную задачу, которую решает операционная система. Выделение процессора выбранному процессу называется планированием загрузки процессора или диспетчеризацией и выполняется программой операционной системы - диспетчером.
В этом разделе будут рассмотрены критерии и виды диспетчеризации, а также алгоритмы диспетчеризации, позволяющие определить, когда и каким именно процессам следует выделять центральный процессор.
5.1. Диспетчеризация процессов
Для исполнения диспетчер выбирает процесс, находящийся в состоянии готовности. При этом диспетчер должен учитывать следующие факторы:
- лимитируется ли процесс вводом-выводом. Когда процесс получает в свое распоряжение центральный процессор, будет ли он занимать его лишь кратковременно, прежде чем сформировать запрос на ввод-вывод;
- лимитирует ли процесс центральный процессор. Когда процесс получает в свое распоряжение ЦП, будет ли он, как правило, использовать его до тех пор, пока не истечет его квант времени;
- приоритетность процессов. Для процессов более высокого приоритета должны создаваться лучшие условия выполнения, чем для процессов более низкого приоритета;
- насколько часто при выполнении процесса возникают прерывания по отсутствию нужных страниц. Можно полагать, что процессы, генерирующие малое число прерываний по отсутствию нужных страниц, уже собрали свои рабочие множества в основной памяти, тогда как процессы, для которых характерно большое количество прерываний, пока еще не сформировали свои рабочие множества. Обычно считается наиболее целесообразным оказывать предпочтение процессам, которые сформировали свои рабочие множества. Однако существует и другая точка зрения - предпочтение должно оказываться процессам с высокими частотами прерываний по отсутствию нужных страниц, поскольку они занимают ЦП лишь короткие промежутки времени перед генерацией запроса на ввод-вывод;
- насколько часто данный процесс приостанавливается из-за переключения на процесс более высокого приоритета. Часто приостанавливаемым процессам следует создавать менее благоприятные условия для продолжения работы. Это объясняется тем, что для запуска подобного процесса операционной системе каждый раз приходится идти на определенные накладные расходы, а короткое время работы процесса перед приостановкой их не оправдывает;
- сколько времени уже получил данный процесс. Некоторые разработчики операционных систем считают, что предпочтение должно оказываться процессу, который получил меньше времени, другие - что процесс, которому уже выделено много времени, должен быть ближе к завершению и поэтому ему надо оказывать предпочтение, чтобы помочь завершиться и как можно скорее покинуть систему;
- сколько еще времени требуется данному процессу для завершения. Средние времена ожидания можно уменьшить, если раньше других запускать процессы, требующие меньшего времени для своего завершения. К сожалению, лишь в редких случаях точно известно, сколько времени необходимо каждому процессу для завершения.
Если после предоставления ЦП в распоряжение некоторого процесса отобрать ЦП у этого процесса нельзя, то говорят о дисциплине диспетчеризации без переключения. Если же ЦП можно отобрать, то говорят о дисциплине диспетчеризации с переключением.
Диспетчеризация с переключением необходима в системах, в которых процессы высокого приоритета требуют немедленного внимания. Например, в системах реального времени пропажа одного важного сигнала прерывания может привести к катастрофическим последствиям. В интерактивных системах разделения времени диспетчеризация с переключением играет важную роль, поскольку позволяет гарантировать приемлемые времена ответа.
Диспетчеризация, требующая контекстных переключений, сопряжена с определенными накладными расходами. Чтобы обеспечить ее эффективность, в основной памяти должно размещаться много процессов, с тем чтобы очередной процесс был, как правило, готов для выполнения, когда освобождается ЦП. А размещение неработающих программ в основной памяти также сопряжено с накладными расходами.
В системах диспетчеризации без переключения коротким процессам приходится больше ждать из-за выполнения длительных процессов, однако для всех процессов создаются как бы равные условия. Времена ответа здесь более предсказуемы, поскольку поступающие процессы высокого приоритета не могут оттеснять уже ожидающие процессы.