Skip to content

Latest commit

 

History

History
85 lines (64 loc) · 7.95 KB

ОС #5: Управление вводом выводом.md

File metadata and controls

85 lines (64 loc) · 7.95 KB
  • Управление устройствами ввода вывода. Интерфейс - это система связей унифицированными сигналами с аппаратурой предназначенной для обема информацией между устройствами вычислетльной системы.

    Внешнее устройство I\O состоит с точки зрения ОС: Аппаратная часть, само устройство. Некоторый контроллер, с помощью которого ОС взаимодействует с устройством.

    Устройства ввода вывода делятся на: Блок ориентированные Байт ориентированные

      Байт ориентированные устро-ва не позволяют производить операции поиска.
    

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

*** Прямой доступ к памяти *** DMA - Direct Memory Access

Процессор не умеет работать с данными вне оперативной памяти(CD-Rom, USB flash...).

DMa - это контроллере, который программирует процессор.

*** Организация программного обеспечения I\O *** Это разбиение ПО на несколько уровней, при этом нижние уровни обеспечивают экранирвоаине особенностей аппаратуры от верхней, а верхнии обеспечивают удобныйы интерфейс для пользователя. При этом, верхний уровень должен выполнять функцию независимости от устройства. Изходя из этого следует принцип единообразия именования.

ПО на всех уровнях должна обрабатывать ошибки. 
Ошибки необходимо обрабатывать как можно ближе к аппаратуре, либо к месту их обнаружения.

Использования синхронных и асинхронных передач(блокирующих\неблокирующих).

1) Проблема для ОС это представить асинхронные операции ввода вывода, как синхронные.
2) Использования разделяемых и выделяемых устройств.
Spooling - пример решения для работы с выделенными устройствами. Для каждого выделенного устройства заводится процесс, который обслуживает это устройство, которое называется монитором. Этот монитор все запросы на использования ставит в очередь. 

ПО ввода вывода делится на 4 слоя:
    1) Обработка прерываний
        
    2) Драйверы устройств
    3) Независимый от устройств слой ОС
    4) Пользовательский слой ПО

Прерывание бывает:
    * Асинхронное(внешнее) - это событие которое происходит от внешних устройст, и могут произойти в любой произвольный момент времени.
    * Внутренний - это событие произошедшее в самом процессоре, как результат нарушений каких то условий при выполнении машинного кода(деление на ноль, переполнение, ...).
    * Программные прерывания - иницируются исполнением специальных инструкций в коде программы.

Для каждого прерывания, устанавливается в памяти обработчик этого прерывания. Которому передастся управление при возникновении этого прерывания. Обработка прерываний должно занимать минимум времени. 

Драйверы устройств:
    Драйвер - это компьютерная программа с помощью которой другая программа(обычно ОС) получает доступ к аппаратному обеспечению некого устройства. 
    Весь зависимый от устройства код помещается в драйвер устройства. 

    Интерфейс между ОС и драйвером давно стандартизирован.
    Драйвер состоит из нескольких функций которые обрабатывают определенные события ОС.

    Функции(7):
        1) Загрузка драйвера
            Регистрируется в системе, инициализируется в системе, проверяет наличие устройства.
        2) Выгрузка драйвера
            Освобождает все захваченные ресурсы.
        3) Открытие драйвера.
            Начало работы
        4) Чтение и запись
            Закрытие драйвера
        5) Управление вводом выводом.
            Набор команд которыми мы получаем состояние о нашем устройстве.

    Необходимо помнить, что драйвера бывают низкоуровневыми и высокоуровневыми
    1. Работает напрямую с устройством. 
    2. Некоторый сервис который предоставляет некоторые услуги. Пример высокоуровнего драйвера - ФС

Независимый от устройств слой ОС:
    Основные функции для этого слоя:
        1) обеспечение общего интерфейса драйвера устройств
        2) Защита устройств
        3) Обеспечение независимого размера блока
        4) Распределение памяти для блок-ориентированных устройств
        5) Обработка и уведомление об ошибках

Пользовательский слой программного обеспечения:
    Большая часть - это бибилиотеки, которые необходимы для работы этих интерфейсов.