Организация интерфейса устройств ввода-вывода с процессором, памятью и операционной системой

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

  • Как запрос пользователя на ввод-вывод превращается в команду устройства и как эта команда попадает на устройство?
  • Как фактически происходит перенос данных в определенное место в памяти или из этого места?
  • Какова роль операционной системы?
    Из ответов на эти вопросы станет понятно, что главную роль в работе с устройствами ввода-вывода играет операционная система, действующая в качестве интерфейса между оборудованием и программами, выдающими запросы на ввод-вывод. Обязанности операционной системы предопределяются тремя характеристиками систем ввода-вывода:
  1. Системы ввода-вывода совместно используются множеством программ, которые выполняются процессором.
  2. Системы ввода-вывода часто используют прерывания (исключения, генерируемые извне) для передачи информации об операциях ввода-вывода. Поскольку прерывания вызывают переход в режим ядра или супервизора, они должны обрабатываться операционной системой.
  3. Низкоуровневое управление устройством ввода-вывода является довольно сложной задачей, потому что здесь требуется управление рядом параллельных событий и потому что требования по правильному управлению устройством бывают сильно детализированными.
    Ранее перечисленные три характеристики систем ввода-вывода приводят к тому, что операционная система должна предоставлять несколько различных функций:
  • Операционная система гарантирует, что пользовательская программа имеет доступ только к той части устройств ввода-вывода, на которую у пользователя есть права. Например, операционная система должна запретить программе чтение или запись файла на диске, если владелец файла не предоставил этой программе доступ к этому файлу. В системах с общими устройствами ввода-вывода защита не может обеспечиваться в том случае, если пользовательские программы могут выполнять, непосредственный ввод-вывод.
  • Операционная система обеспечивает абстракции устройств, к которым осуществляется обращение, путем предоставления подпрограмм, управляющих низкоуровневыми операциями этих устройств.
  • Операционная система обрабатывает прерывания, сгенерированные устройствами ввода-вывода, точно так же, как она обрабатывает исключения, сгенерированные программой.
  • Операционная система старается предоставить равный доступ к общим ресурсам ввода-вывода, а также проводит диспетчеризацию доступа, чтобы улучшить пропускную способность системы.
    Для выполнения этих функций по поручению пользовательских программ операционная система должна уметь связываться с устройствами ввода-вывода и не давать пользовательской программе связываться с этими устройствами напрямую. Здесь требуются три типа информационного взаимодействия:
  • Операционная система должна уметь давать команды устройствам ввода-вывода. В числе этих команд должны быть не только операции вроде чтения и записи, но также и операции, которые должны быть осуществлены на устройстве, например поиск на диске.
  • Устройство ввода-вывода должно уметь уведомить операционную систему о том, что оно завершило операцию или обнаружило ошибку. Например, уведомить операционную систему, когда будет завершен поиск.
  • Должен быть осуществлен обмен данными между памятью и устройством ввода-вывода. Например, блок, считываемый с диска, должен быть перемещен с диска в память. Как все это делается, будет показано в нескольких следующих подразделах.


Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: