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

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

Аппаратные ресурсы используются как ОС, так и пользовательскими приложениями, при этом активных приложений может быть много, а ресурсы всегда ограничены. Ресурсы распределяются операционной системой, но для её исполнения используются те же ресурсы, которыми она управляет. Приложения же получают доступ к ресурсам в виде процессов. Если процессор в системе один, ОС распределяет его ресурсы между процессами, а если процессоров несколько, то обеспечивает запуск процессов на любом процессоре. Другой важный ресурс, которым (вместе с аппаратным контроллером памяти) управляет ОС, это основная память. ОС также решает когда и какое из приложений получит доступ к устройствам ввода/вывода, контролирует доступ к файлам и их использование.


Политика распределения и планирования ресурсов должна учитывать следующие факторы:

  • Беспристрастность: доступ к ресурсу, которого требуют несколько процессов, следует предоставлять в равной степени каждому процессу.
  • Учёт приоритета: у разных задач могут быть разные приоритеты, и ОС должна планировать и распределять ресурсы в соответствии со всеми требованиями, в том числе динамически, согласно изменяющимся обстоятельствам.
  • Эффективность: ОС должна стараться обеспечивать максимальную производительность и минимизировать задержки.

ОС управляет очередью процессов, ожидающих какого-либо рерурса. Общая стратегия состоит в том, чтобы предоставить каждому процессу в очереди равное время на использование ресурса. Такая подход называется циклическим (Round-robin). Установив дополнительные приоритеты можно повлиять в ту или иную сторону на выделение ресурсов процессам.


Для использования ресурсов ввода/вывода каждому процессу выделяется своё место в очереди, которое задаёт операционная система. Впрочем, для уменьшения задержек порядок в этой очереди можно подкорректировать. Например, обращения к жёсткому диску имеет смысл упорядочить таким образом, чтобы чтение данных было по возможности последовательным, поскольку перепозиционирование головки диска приводит к дополнительным задержкам передачи данных.


Драйверы устройств - это связующие программы, через которые ОС получает доступ для работы с конкретным устройством. Драйверы устройств работают в режиме ядра, и преобразуют команды операций ввода/вывода в специфичные аппаратные запросы ввода/вывода.


Процессы получают доступ к службам ОС, как например обращение к устройству ввода/вывода, посредством системных вызовов. Выполнив процедуру обработки прерывания, ОС возвращается в выполнению процесса.

Ниже приведено, как приложение обращается к устройству ввода/вывода:

  • Используя системный вызов, приложение посылает запрос ядру на обращение к устройству В/В
  • Менеджер В/В ядра принимает этот запрос и передаёт его дальше драйверу устройства
  • Драйвер устройства выделяет буфер для чтения данных и передаёт команду контроллеру устройства через адрес его регистра управления
  • Контроллер устройства выполняет операцию передачи данных, непосредственно взаимодействуя с устройством
  • Со стороны драйвера можно указать, как протекает операция передачи данных, принимает ли в ней участие сам драйвер или передачей занимается DMA-контроллер (контроллер прямого доступа к памяти), который по завершению передачи посылает процессору прерывание
  • Процессор принимает прерывание и запускает процедуру обработки прерываний, которая сохраняет данные в буфере драйвера и сообщает об этом драйверу, после чего происходит возврат из процедуры прерывания
  • Драйвер устройства передаёт информацию о передаче данных менеджеру ввода/вывода ядра
  • Менеджер В/В ядра передаёт данные процессу, пославшему запрос, и выводит его из "заблокированного" состояния
  • При следующем вызове процесс продолжает работу с возвращением из режима системного вызова

В ОС Microsoft Windows операции ввода/вывода управляются с применением следующих компонентов:

  • Менеджер ввода/вывода (I/O Manager) - центральный компонент операций ввода/вывода, объединяющий приложения и системные компоненты в виртуальное, логическое и физическое устройство, и определяющий инфраструктуру для поддержки драйверов устройств
  • Драйвер устройства (Device Driver) обеспечивает доступ к конкретному устройству. Драйвер принимает команды от менеджера В/В и докладывает ему о выполнении команд
  • Менеджер PnP (Plug and Play), работая вместе с менеджером В/В, распределяет аппаратные ресурсы, распознавая и реагируя на добавление и удаление устройств
  • Менеджер питания (Power Manager), работая вместе с менеджером В/В и драйвером устройств, управляют энергосберегающим режимом системы и устройств
  • В реестре (Registry) хранится описание устройств, а также настройки инициализации и конфигурации драйверов
  • INF-файлы - установочные файлы драйверов, содержат специфичную информацию, описывающую устройство и местонахождение драйвера устройства
Слой аппаратных абстракций (HAL - Hardware Abstraction Layer), посредством интерфейса приложений, скрывающего различия между разными платформами,  изолирует драйверы устройств от специфик     и процессора и контроллера прерываний.