
- •Содержание
- •1 Начальные сведения об операционных системах
- •1.1 Назначение и функции операционных систем
- •1.2 История развития операционных систем
- •1.3 Классификация операционных систем
- •1.4 Обзор аппаратного обеспечения компьютера
- •1.5 Архитектура операционной системы
- •1.5.1 Классическая архитектура
- •1.5.2 Микроядерная архитектура
- •2 Процессы и потоки
- •2.1 Процессы
- •2.2 Потоки
- •2.3 Межпроцессное взаимодействие
- •2.3.1 Взаимное исключение с активным ожиданием
- •2.3.2 Примитивы межпроцессного взаимодействия
- •2.4 Планирование
- •2.4.1 Планирование в системах пакетной обработки данных
- •2.4.2 Планирование в интерактивных системах
- •2.4.3 Планирование в системах реального времени
- •2.5 Понятие взаимоблокировки
- •3 Управление памятью
- •3.1 Основы управления памятью
- •3.2 Методы распределения памяти без использования подкачки
- •3.2.1 Метод распределения с фиксированными разделами
- •3.2.2 Метод распределения с динамическими разделами
- •3.2.3 Метод распределения с перемещаемыми разделами
- •3.3 Методы распределения памяти с подкачкой на жесткий диск
- •3.3.1 Страничная организация памяти
- •3.3.2 Сегментная организация памяти
- •3.3.3 Сегментно-страничная организация памяти
- •3.4 Кэширование данных
- •4 Аппаратная поддержка мультипрограммирования на примере процессора Pentium
- •4.1 Регистры
- •4.2 Привилегированные команды
- •4.3 Сегментация с использованием страниц
- •4.4 Защита данных в процессоре Pentium
- •4.5 Средства вызова процедур и задач
- •4.6 Механизм прерываний
- •4.7 Кэширование в процессоре Pentium
- •5 Ввод-вывод
- •5.1 Принципы аппаратуры ввода-вывода
- •5.2 Принципы программного обеспечения ввода-вывода
- •6 Файловые системы
- •6.1 Основы файловых систем
- •6.2 Файловая система fat
- •6.3 Файловая система ntfs
- •6.4 Файловые системы Ext2, Ext3 и ufs
- •7 Безопасность операционных систем
- •7.1 Основы безопасности
- •7.2 Аутентификация пользователей
- •7.3 Атаки изнутри операционной системы
- •7.4 Атаки операционной системы снаружи
- •8 Обзор современных операционных систем
- •8.1 Операционная система Windows 2000
- •8.1.1 Структура Windows 2000
- •8.1.2 Реализация интерфейса Win32
- •8.1.3 Эмуляция ms-dos
- •8.2 Архитектура unix-образных операционных систем
- •8.3 Мультипроцессоры и мультипроцессорные операционные системы
- •8.4 Операционные системы реального времени и мобильные операционные системы
- •8.4.1 Операционная система Windows ce 5.0
- •Список использованных источников
2.4.1 Планирование в системах пакетной обработки данных
1 «Первым пришёл – первым ушёл»
Самый простой алгоритм планирования. Категория алгоритма – без переключений. Процессам предоставляется доступ к процессору в том порядке, в котором они его запрашивают. Формируется единая очередь процессов. Когда текущий процесс блокируется, запускается следующий в очереди, а когда блокировка снимается, процесс попадает в конец очереди. Недостаток в том, что если существует очередь процессов, в котором есть процессы ограниченные устройствами ввода-вывода (т.е. большую часть времени тратящие на ожидание устройств), то это ожидание будет означать простой процессора.
2 Алгоритм «Кратчайшая задача – первая»
Категория алгоритма – без переключений. Суть алгоритма заключается в следующем: если в очереди есть несколько одинаково важных задач, планировщик выбирает первой самую короткую по времени. Эта схема работает лишь в случае одновременного наличия задач и обычно неактуальна.
3 Алгоритм «Наименьшее оставшееся время выполнения»
Версия предыдущего алгоритма. В соответствии с этим алгоритмом, планировщик каждый раз выбирает процесс с наименьшим оставшимся временем выполнения. Естественно для таких алгоритмов необходимо знать, сколько времени выполняются процессы, что обычно является сложной задачей.
4 Алгоритм трехуровневого планирования
Системы пакетной обработки позволяют реализовать трехуровневое планирование, как показано на рисунке 15. По мере поступления в систему новые задачи сначала помещаются в очередь, хранящуюся на диске. Планировщик доступа выбирает задание и передает его системе. Остальные задачи остаются в очереди. Выбор заданий обуславливается установленным приоритетом – по времени выполнения или как-то по другому, например по работе с устройствами ввода-вывода.
Рисунок 15 – Трехуровневое планирование
Как только задание попало в систему, для него будет создан соответствующий процесс, который вступает в борьбу за доступ к процессору. В ситуации, когда процессов слишком много, работает второй уровень планирования (планировщик памяти), который определяет, какие процессы будут находиться в памяти, а какие можно выгрузить на диск. Естественно это не должно происходить слишком часто, т.к. дисковые операции сравнительно медленные. Количество процессов, одновременно находящихся в памяти, называется степенью многозадачности.
Третий уровень планирования отвечает за доступ процессов, находящихся в состоянии готовности, к процессору. Этим планировщиком используется любой подходящий к ситуации алгоритм, как с прерыванием, так и без.
2.4.2 Планирование в интерактивных системах
В интерактивных системах невозможно трехуровневое планирование, но двухуровневое (планировщик памяти и процессора) возможно и часто используется. Ниже рассмотрены алгоритмы для планировщика процессора. Все алгоритмы планирования для интерактивных систем могут использоваться в качестве планировщика процессора в системах пакетной обработки.
1 Алгоритм циклического планирования
Каждому процессу предоставляется некоторый интервал времени процессора, так называемый квант времени. Если к концу кванта времени процесс всё ещё работает, он прерывается, а управление передается следующему процессу, а предыдущий процесс отправляется в конец списка. Реализация циклического планирования проста. Планировщику нужно всего лишь поддерживать список процессов в состоянии готовности согласно рисунку 16, а. Когда процесс исчерпал свой лимит времени, он отправляется в конец списка (Рисунок 16, б).
Рисунок 16 – Циклическое планирование
В данном алгоритме нужно очень осторожно выбирать квант времени, т.к. слишком малый квант приведёт к частому переключению процессов и небольшой эффективности, а слишком медленный квант может привести у медленному реагированию на короткие интерактивные запросы.
2 Алгоритм с приоритетным планированием
Циклический алгоритм исходил из того, что все процессы равнозначны, но в реальности это не так – у каждого свой приоритет. Основная идея алгоритма – управление передается процессу с самым высоким приоритетом. Чтобы предотвратить бесконечную работу процессов с высоким приоритетом, планировщик может уменьшать приоритет процесса с течением времени. Если процессов с одинаковым приоритетом несколько, то применяется циклическое планирование.
3 Алгоритм «Самый короткий процесс – следующий»
Сходен с алгоритмом «Кратчайшая задача – первая». Но если в системах пакетной обработки предполагается, что примерно известно время выполнения задачи, то для оценки длины процесса в интерактивных системах используется метод оценки по предыдущим запускам программы, называемый старением.
Допустим, что предполагаемое время исполнения команды равно T0 и предполагаемое время следующего запуска равно T1,. Можно улучшить оценку времени, взяв взвешенную сумму этих времен αT0 + (1 – α) T1. Выбирая соответствующее значение α, можно заставить алгоритм оценки быстро забывать о предыдущих запусках или, наоборот, помнить о них в течение долгого времени. Взяв α = 1/2, получим серию оценок:
.
(1)
4 Гарантированное планирование
Суть данного алгоритма заключается в том, чтобы отдавать процессам реальное количество циклов процессора. Если процессором пользуются n пользователей, то одному пользователю будет предоставлено 1/n мощности процессора. Чтобы выполнить это обещание, система должна отслеживать распределение процессора между процессами с момента создания каждого процесса. Система рассчитывает количество ресурсов процессора, на которое процесс имеет право, например время с момента создания, деленное на n. Теперь можно сосчитать отношение времени, предоставленного процессу, к времени, на которое он имеет право. Полученное значение 0.5 означает, что процессу выделили только половину положенного, а 2.0 означает, что процессу досталось в два раза больше, чем положено. Затем запускается процесс, у которого это отношение наименьшее, пока оно не станет больше, чем у его ближайшего соседа.
5 Лотерейное планирование
В основе алгоритма лежит раздача процессам лотерейных билетов на доступ к различным ресурсам, в том числе и к процессору. Когда планировщику необходимо принять решение, выбирается случайным образом лотерейный билет, и его обладатель получает доступ к ресурсу. Что касается доступа к процессору, «лотерея» может происходить 50 раз в секунду, и победитель получает 20 мс времени процессора. Если всего 100 билетов и 20 из них находятся у одного процесса, то ему достанется 20 % времени процессора. В отличие от приоритетного планировщика, в котором очень трудно оценить, что означает, скажем, приоритет 40, в лотерейном планировании все очевидно. Каждый процесс получит процент ресурсов, примерно равный проценту имеющихся у него билетов.
6 Справедливое планирование
Некоторые системы обращают внимание на хозяина процесса перед планированием. В такой модели каждому пользователю достается некоторая доля процессора, и планировщик выбирает процесс в соответствии с этим фактом. Если в нашем примере каждому из пользователей было обещано по 50 % процессора, то им достанется по 50 % процессора, независимо от количества процессов.