
- •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Структура файловой системы на диске
- •Контрольные вопросы Литература
4Стратегия sjf
Стратегия SJF (Shortest Job – First, «кратчайшее задание – первым») – это стратегия планирования, согласно которой для выполнения выбирается задание с минимальным временем обслуживания. Эта стратегия обеспечивает уменьшение среднего времени ожидания по сравнению со стратегией FCFS.
Например, для процессов P1, P2 и P3 из приведенного выше примера среднее время ожидания равно (0 + 3 + 6) / 3 = 3 мс.
Наибольшая трудность в практической реализации стратегии SJF заключается в невозможности заранее определить величину времени обслуживания. Поэтому стратегия SJF применялась в основном в долгосрочных планировщиках, обслуживающих пакетный режим. В этом случае вместо величины времени обслуживания использовалось допустимое максимальное или оценочное время выполнения задания, которое пользователь должен был специфицировать заранее. Очевидно, что процессу выгодно иметь небольшое ожидаемое время выполнения. Пользователи могут сознательно указывать неверное ожидаемое время с целью повысить свой приоритет. С этим можно бороться, наказывая пользователей, которые занижают ожидаемое время выполнения. Например, для процессов, выходящих за пределы своей оценки, может быть увеличена цена машинного времени.
Правило SJF можно реализовать с вытеснениями или без них. Если вытеснение запрещено, то процессы всегда работают до тех пор, пока не закончатся или не заблокируются. В случае когда разрешены вытеснения, если поступает процесс с меньшим ожидаемым временем, чем у текущего процесса, то последний вытесняется и его место занимает новый процесс. Для коротких процессов стратегия с вытеснениями лучше, чем без вытеснений. Если вытеснения разрешены, то длинным процессам становится труднее удерживать процессор в своем распоряжении.
Хотя вытеснение улучшает обслуживание коротких процессов, с ним сопряжены определенные издержки. Вытеснение требует какого-то времени и тем самым задерживает всю очередь готовых процессов. Поэтому если выполняемый процесс близок к завершению своей работы, то, видимо, не стоит вытеснять его.
Поскольку рассматриваемый алгоритм минимизирует среднее оборотное время в системах пакетной обработки, хотелось бы использовать его и в интерактивных системах. В известной степени это возможно. Интерактивные процессы чаще всего следуют схеме «ожидание команды, исполнение команды, ожидание команды, исполнение команды...» Если рассматривать выполнение каждой команды как отдельную задачу, можно свести к минимуму общее среднее время отклика, запуская первой самую короткую задачу. Единственная проблема состоит в том, чтобы понять, какой из ожидающих процессов самый короткий.
Один
из методов привлекает к оценке «длину»
процесса, базируясь на предыдущем его
поведении. При этом запускается процесс,
у которого оцененное время самое
маленькое. Допустим, что предполагаемое
время исполнения команды равно
и предполагаемое время следующего
запуска равно
.
Можно улучшить оценку, взяв взвешенную
сумму этих времен
.
Выбирая соответствующее значение а,
мы можем заставить алгоритм оценки
быстро забывать о предыдущих запусках
или, наоборот, помнить о них в течение
долгого времени. Взяв а = 1/2, мы получим
серию оценок:
,
,
,
.
После трех запусков вес в оценке уменьшится до 1/8.
Метод оценки следующего значения серии через взвешенное среднее предыдущего значения и предыдущей оценки часто называют старением. Этот метод применим во многих ситуациях, где необходима оценка по предыдущим значениям. Проще всего реализовать старение при а = 1/2. На каждом шаге нужно всего лишь добавить к текущей оценке новое значение и разделить сумму пополам (со сдвигом вправо на 1 бит).
Следует отметить, что эта схема работает лишь в случае одновременного наличия задач. В качестве контрпримера можно рассмотреть пять задач, А, В, С, D и Е, причем первые две доступны сразу же, а три оставшиеся — еще через три минуты. Время выполнения этих задач составляет 2, 4, 1, 1 и 1 мин соответственно.
Вначале можно выбрать только А или В, поскольку остальные недоступны.
Если руководствоваться алгоритмом «Кратчайшая задача – первая», задачи будут запущены в следующем порядке: А, В, С, D, Е и среднее оборотное время составит 4,6 мин. Если же запустить их в порядке В, С, D, Е, А, оно будет равно 4,4 мин.
Для типичных распределений величины времени выполнения характерно преобладание коротких процессов. В таких условиях правило SJF работает вполне успешно, так как оно весьма благоприятствует коротким заданиям. Правда, длинные процессы обслуживаются плохо. Если система сильно загружена, то с длинными процессами дело обстоит особенно плохо, и это положение еще усугубляется, если разрешено вытеснение. Впрочем, если система близка к пределу своих возможностей, то любое правило планирования работает не вполне хорошо.