
- •Управление устройствами
- •Основные задачи управления устройствами
- •Классификация периферийных устройств и их архитектура
- •Прерывания
- •Архитектура подсистемы ввода/вывода
- •Способы организации ввода/вывода
- •Ввод/вывод по опросу и по прерываниям
- •Активное и пассивное ожидание
- •Синхронный и асинхронный ввод/вывод
- •Буферизация и кэширование
- •Понятие буферизации
- •Сглаживание неравномерности скоростей процессов
- •Распараллеливание ввода и обработки
- •Согласование размеров логической и физической записи
- •Редактирование при интерактивном вводе
- •Кэширование дисков
- •Опережающее чтение.
- •Драйверы устройств
- •Управление устройствами в ms-dos
- •Уровни доступа к устройствам
- •Драйверы устройств в ms-dos
- •Управление символьными устройствами
- •Управление блочными устройствами
- •Структура диска
- •Разделы и логические тома
- •Средства доступа к дискам
- •Управление устройствами в Windows
- •Драйверы устройств в Windows
- •Доступ к устройствам
- •Управление устройствами в unix
- •Драйверы устройств вUnix
- •Устройство как специальный файл
- •Управление данными
- •Основные задачи управления данными
- •Характеристики файлов и архитектура файловых систем
- •Размещение файлов
- •Защита данных
- •Разделение файлов между процессами
- •Файловая система faTи управление данными вMs-dos
- •Общая характеристика системы fat
- •Структуры данных на диске
- •Структура записи каталога файловой системы fat
- •Создание и удаление файла
- •Работа с файлами в ms-dos
- •Системные функции
- •Доступ к данным
- •Структуры данных в памяти
- •Новые версии системы fat
- •Файловые системы и управление данными в unix
- •Архитектура файловой системы unix
- •Жесткие и символические связи
- •Монтируемые тома
- •Типы и атрибуты файлов
- •Управление доступом
- •Структуры данных файловой системыUnix
- •Доступ к данным в unix
- •Развитие файловых системUnix
- •Файловая система ntfSи управление данными вWindows
- •Особенности файловой системы ntfs
- •Структуры дисковых данных
- •Главная таблица файлов
- •Атрибуты файла
- •Доступ к данным
- •Защита данных
- •Аутентификация пользователя
- •Дескриптор защиты
- •Управление процессами
- •Основные задачи управления процессами
- •Реализация многозадачного режима
- •Понятия процесса и ресурса
- •Квазипараллельное выполнение процессов
- •Состояния процесса
- •Вытесняющая и невытесняющая многозадачность
- •Дескриптор и контекст процесса
- •Реентерабельность системных функций
- •Дисциплины диспетчеризации и приоритеты процессов
- •Проблемы взаимодействия процессов
- •Изоляция процессов и их взаимодействие
- •Проблема взаимного исключения процессов
- •Двоичные семафоры Дейкстры
- •Средства взаимодействия процессов
- •Целочисленные семафоры
- •Семафоры с множественным ожиданием
- •Сигналы
- •Сообщения
- •Общая память
- •Программные каналы
- •Проблема тупиков
- •Управление процессами в ms-dos
- •Процессы в ms-dos
- •Среда программы
- •Запуск программы
- •Завершение работы программы
- •Перехват прерываний и резидентные программы
- •Управление процессами в Windows
- •Понятие объекта в Windows
- •Процессы и нити
- •ПланировщикWindows
- •Процесс и нить как объекты
- •Синхронизация нитей
- •Способы синхронизации
- •Объекты синхронизации и функции ожидания
- •Типы объектов синхронизации
- •Критические секции
- •Сообщения
- •Управление процессами в unix
- •Жизненный цикл процесса
- •Группы процессов
- •Программные каналы
- •Сигналы
- •Средства взаимодействия процессов в стандарте posix
- •Планирование процессов
- •Состояния процессов в unix
- •Приоритеты процессов
- •Интерпретатор команд shell
- •Управление памятью
- •Основные задачи управления памятью
- •Виртуальные и физические адреса
- •Распределение памяти без использования виртуальных адресов
- •Настройка адресов
- •Распределение с фиксированными разделами
- •Распределение с динамическими разделами
- •Сегментная организация памяти
- •Страничная организация памяти
- •Сравнение сегментной и страничной организации
- •Управление памятью в ms-dos
- •Управление памятью в Windows
- •Структура адресного пространства
- •Регионы
- •Отображение исполняемых файлов
- •Файлы, отображаемые на память
- •Стеки и кучи
- •Управление памятью в unix
- •Литература
Дисциплины диспетчеризации и приоритеты процессов
Когда планировщик процессов получает управление, его основной задачей является выбор следующего процесса, который должен получить управление. Алгоритмы, лежащие в основе этого выбора, определяют дисциплину диспетчеризации, принятую в данной ОС.
Одной из самых очевидных дисциплин является простая круговая диспетчеризация(roundrobinscheduling). Ее суть в следующем. Все активные процессы считаются равноправными и образуют круговую очередь. Каждый процесс получает от системы квант времени, по истечении которого планировщик выбирает для выполнения следующий процесс из очереди. Таким образом, если все процессы остаются активными, то система обеспечивает их равномерное продвижение, имитирующее параллельное выполнение всех процессов. Если текущий процесс блокируется, он выпадает из круга и попадает в список спящих процессов. Когда система активизирует один из спящих процессов, он включается в круговую очередь.
В некотором смысле противоположной дисциплиной является фоново-оперативная диспетчеризация(foreground/backgroundscheduling) – одна из самых старых форм организации многозадачной работы. В простейшем случае она включает два процесса: фоновый процесс и оперативный процесс (процесс переднего плана). Фоновый процесс выполняется только тогда, когда спит оперативный процесс. При активизации оперативного процесса происходит немедленное вытеснение фонового, т.е. оперативный процесс имеет более высокий абсолютный приоритет. Обычно при такой дисциплине предполагается, что активизация оперативного процесса не потребует много процессорного времени, так что выполнение фонового процесса будет скоро возобновлено. Одним из примеров эффективного использования фоново-оперативной диспетчеризации является так называемая «фоновая печать», которую позволяет выполнить даже однозадачнаяMS-DOS. При этом процесс вывода файла на принтер рассматривается как процесс переднего плана, а обычная диалоговая работа с ОС – как фоновый процесс. Поскольку обслуживание прерываний от принтера занимает лишь доли процента процессорного времени, пользователь не ощущает никакого замедления работы.
Между описанными двумя крайностями лежит большое разнообразие дисциплин приоритетной диспетчеризации. Все они основаны на приписывании каждому процессу при его создании некоторого числа –приоритета. Более высокий приоритет должен давать процессу определенные преимущества перед низкоприоритетными процессами при работе планировщика.
Назначение приоритетов выполняется пользователем либо администратором системы, возможно также программное изменение приоритета процесса. На выбор оптимального уровня приоритета влияют в основном два соображения:
важность, ответственность данного процесса либо привилегированное положение запускающего процесс пользователя;
количество процессорного времени, на которое будет претендовать процесс (как мы видели в примере с фоновой печатью, высокий приоритет процесса, мало загружающего процессор, почти не приводит к замедлению работы остальных процессов).
Основной алгоритм приоритетного планирования напоминает простое круговое планирование, однако круговая очередь активных процессов формируется отдельно для каждого уровня приоритета. Пока есть хоть один активный процесс в очереди с самым высоким приоритетом, процессы с более низкими приоритетами не могут получить управление. Только когда все процессы с высшим приоритетом заблокированы либо завершены, планировщик выбирает процесс из очереди с более низким приоритетом.
Приоритет, присваиваемый процессу при создании, называется статическимприоритетом. Дисциплина планирования, использующая только статические приоритеты, имеет один существенный недостаток: низкоприоритетные процессы могут надолго оказаться полностью отлученными от процессора. Иногда это приемлемо (если высокоприоритетные процессы несравнимо важнее, чем низкоприоритетные), однако чаще хотелось бы, чтобы и на низкие приоритеты хоть что-нибудь перепадало, пусть даже реже и в меньшем количестве, чем на высокие. Для решения этой задачи предложено множество разных алгоритмов планирования процессов, основанных на идеединамическогоприоритета.
Динамический приоритет процесса – это величина, автоматически рассчитываемая системой на основе двух основных факторов: статического приоритета и степени предыдущего использования процессора данным процессом. Общая идея следующая: если процесс слишком долго не получал процессорного времени, то его приоритет следует повысить, чтобы дать процессу шанс на будущее. Наоборот, если процесс слишком часто и долго работал, есть смысл временно понизить его приоритет, чтобы пропустить вперед изголодавшихся конкурентов.
Могут учитываться и другие соображения, влияющие на динамический приоритет. Например, если процесс ведет диалог с пользователем, то имеет смысл повысить его приоритет, чтобы сократить время реакции и избежать досадных задержек при нажатии клавиш. Если процесс в последнее время часто блокировался, не использовав до конца выделенный ему квант времени, то это тоже основание для повышения приоритета: вполне возможно, процесс и впредь будет так же неприхотлив.