2.1.5 Выделение ресурсов процессам

Аппаратные ресурсы используются как ОС, так и пользовательскими приложениями, при этом активных приложений может быть много, а ресурсы всегда ограничены. Ресурсы распределяются операционной системой, но для её исполнения используются те же ресурсы, которыми она управляет. Приложения же получают доступ к ресурсам в виде процессов. Если процессор в системе один, ОС распределяет его ресурсы между процессами, а если процессоров несколько, то обеспечивает запуск процессов на любом процессоре. Другой важный ресурс, которым (вместе с аппаратным контроллером памяти) управляет ОС, это основная память. ОС также решает когда и какое из приложений получит доступ к устройствам ввода/вывода, контролирует доступ к файлам и их использование.
Политика распределения и планирования ресурсов должна учитывать следующие
факторы:
- Беспристрастность: доступ к ресурсу, которого требуют несколько процессов, следует предоставлять в равной степени каждому процессу.
- Учёт приоритета: у разных задач могут быть разные приоритеты, и ОС должна планировать и распределять ресурсы в соответствии со всеми требованиями, в том числе динамически, согласно изменяющимся обстоятельствам.
- Эффективность: ОС должна стараться обеспечивать максимальную производительность и минимизировать задержки.
ОС управляет очередью процессов, ожидающих какого-либо рерурса. Общая стратегия состоит в том, чтобы предоставить каждому процессу в очереди равное время на использование ресурса. Такая подход называется циклическим (Round-robin). Установив дополнительные приоритеты можно повлиять в ту или иную сторону на выделение ресурсов процессам.
Для использования ресурсов ввода/вывода каждому процессу выделяется своё место
в очереди, которое задаёт операционная система. Впрочем, для уменьшения
задержек порядок в этой очереди можно подкорректировать. Например, обращения к
жёсткому диску имеет смысл упорядочить таким образом, чтобы чтение данных было
по возможности последовательным, поскольку перепозиционирование головки диска
приводит к дополнительным задержкам передачи данных.
Драйверы устройств - это связующие
программы, через которые ОС получает доступ для работы с конкретным устройством.
Драйверы устройств работают в режиме ядра, и преобразуют команды операций
ввода/вывода в специфичные аппаратные запросы ввода/вывода.
Процессы получают доступ к службам ОС, как например обращение к устройству
ввода/вывода, посредством системных вызовов. Выполнив процедуру обработки
прерывания, ОС возвращается в выполнению процесса.
Ниже приведено, как приложение обращается к устройству ввода/вывода:
- Используя системный вызов, приложение посылает запрос ядру на обращение к устройству В/В
- Менеджер В/В ядра принимает этот запрос и передаёт его дальше драйверу устройства
- Драйвер устройства выделяет буфер для чтения данных и передаёт команду контроллеру устройства через адрес его регистра управления
- Контроллер устройства выполняет операцию передачи данных, непосредственно взаимодействуя с устройством
- Со стороны драйвера можно указать, как протекает операция передачи данных, принимает ли в ней участие сам драйвер или передачей занимается DMA-контроллер (контроллер прямого доступа к памяти), который по завершению передачи посылает процессору прерывание
- Процессор принимает прерывание и запускает процедуру обработки прерываний, которая сохраняет данные в буфере драйвера и сообщает об этом драйверу, после чего происходит возврат из процедуры прерывания
- Драйвер устройства передаёт информацию о передаче данных менеджеру ввода/вывода ядра
- Менеджер В/В ядра передаёт данные процессу, пославшему запрос, и выводит его из "заблокированного" состояния
- При следующем вызове процесс продолжает работу с возвращением из режима системного вызова
В ОС Microsoft Windows операции ввода/вывода управляются с применением следующих компонентов:
- Менеджер ввода/вывода (I/O Manager) - центральный компонент операций ввода/вывода, объединяющий приложения и системные компоненты в виртуальное, логическое и физическое устройство, и определяющий инфраструктуру для поддержки драйверов устройств
- Драйвер устройства (Device Driver) обеспечивает доступ к конкретному устройству. Драйвер принимает команды от менеджера В/В и докладывает ему о выполнении команд
- Менеджер PnP (Plug and Play), работая вместе с менеджером В/В, распределяет аппаратные ресурсы, распознавая и реагируя на добавление и удаление устройств
- Менеджер питания (Power Manager), работая вместе с менеджером В/В и драйвером устройств, управляют энергосберегающим режимом системы и устройств
- В реестре (Registry) хранится описание устройств, а также настройки инициализации и конфигурации драйверов
- INF-файлы - установочные файлы драйверов, содержат специфичную информацию, описывающую устройство и местонахождение драйвера устройства