Организация ввода/вывода




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

Устройства ввода/вывода условно делят на две категории: блочные устройства и символьные устройства. Блочные хранят информацию в виде блоков фиксированного объема, причем у каждого блока есть свой адрес. Каждый блок может быть прочитан независимо от остальных блоков. Наиболее распространенное блочное устройство — магнитный диск. Символьное устройство принимает поток символов без какой-либо блочной структуры. Это устройство не адресуемо и не выполняет операцию поиска. Это, например, принтеры, сетевые адаптеры, мыши и т. п.

Устройства ввода/вывода состоят из механической и электронной части. Электронная часть называется контроллером или адаптером. Эти контроллеры или вставляются в материнскую плату, или располагаются на самом устройстве ввода/вывода. Контроллер управляет информацией, поступающей от компьютера, и преобразует ее в удобную для устройства форму. Например, контроллер монитора считывает из памяти байты, содержащие символы, которые следует отобразить, и формирует сигналы, используемые для модуляции луча электронной трубки, заставляющие ее выводить изображение на экран.

Все программное обеспечение ввода/вывода подчиняется нескольким принципам.

Первый принцип — принцип независимости от устройств. Это означает, что программа способна получать доступ к любому устройству ввода/вывода без указания конкретного устройства. Все проблемы, связанные с отличиями этих устройств, решает операционная система.

Второй принцип — принцип единообразного именования. Имя устройства или файла должно быть просто текстовой строкой или целым числом и не зависеть от физического устройства.

Третий принцип — принцип обработки ошибок. Ошибки должны обрабатываться как можно ближе к аппаратуре. Если, например, контроллер обнаружил ошибку чтения, он должен эту ошибку исправить сам. Только если нижний уровень программного обеспечения не может сам справиться с ошибкой, о ней следует информировать верхний уровень программного обеспечения.

Четвертый принцип — способ передачи данных. Он может быть синхронным (блокирующим) или асинхронным (управляемый прерываниями). Большинство операций ввода/вывода на физическом уровне являются асинхронными — центральный процессор запускает перенос данных и переключается на другой процесс, пока не придет прерывание.

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

Шестой принцип — это понятие выделенных устройств и устройств коллективного использования. С некоторыми устройствами, например с дисками, может одновременно работать большое количество пользователей. При этом не должно возникать конфликта интересов пользователя. Другие устройства предоставляются в монопольное пользование, и до тех пор, пока не завершит свою работу один пользователь, устройство не может быть предоставлено другому.

Существует три способа осуществления операций ввода/вывода:

- программный ввод/вы вод. Здесь всю работу осуществляет центральный процессор, который ожидает готовности устройства во время проведения операции;

- управляемый прерываниями ввод/вывод, при котором центральный процессор начинает передачу ввода/вывода и переключается на другой процесс, пока прерывание от устройства не просигналит ему об окончании операции ввода/вывода;

- прямой доступ к памяти. При таком способе отдельная микросхема управляет переносом целого блока данных и инициирует прерывание только после окончания переноса блока.

Драйверы устройств

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

Рис. 4. Логическое расположение драйверов устройств

Операционная система классифицирует драйверы по нескольким категориям в соответствии с типами обслуживаемых ими устройств: блочными или символьными устройствами. В большинстве ОС определены два стандартных интерфейса, один из которых должен поддерживать все блочные драйверы, а другой — все символьные драйверы.

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

На персональных компьютерах эта модель не эффективна, т. к. не все пользователи могут самостоятельно перекомпилировать и собрать ядро. Поэтому ОС, начиная с MS-DOS, перешли к модели динамической подгрузки драйверов.

Драйверустройства выполняет следующие основные функции:

- обрабатывает запросы чтения и записи независимого от устройств программного обеспечения;

- инициализирует устройства;

- управляет энергопотреблением устройств и регистрацией событий;

- проверяет входные параметры при обращении к устройству. Если параметры ошибочны, драйвер возвращает ошибку в оперативную систему; если параметры правильны, управляет работой устройства;

- проверяет использование устройства в данный момент, т. е. контролирует работу устройства.

Управление устройством подразумевает выдачу ему серии команд. Именно в драйвере определяется последовательность команд в зависимости от того, что должно быть сделано. Определившись с командами, драйвер записывает их в контроллер устройства, после чего ситуация может развиваться по двум сценариям:

- драйвер ждет, пока контроллер не выполнит для него определенную работу; в ожидании он блокируется до тех пор, пока прерывание от устройства его не разблокирует;

- если работа контроллера быстрая, драйвер не блокируется, а начинает обрабатывать следующий запрос.

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

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

Файловые системы

Часть операционной системы, работающая с файлами и обеспечивающая хранение данных на диске и доступ к ним, называется файловой системой (ФС). Поддержка файловой системы — основного хранилища системной и пользовательской информации — важнейшая характеристика операционной системы.

С точки зрения пользователя наиболее важным аспектом файловой системы является ее внешнее представление, при этом пользователь не обязан знать, в каком физическом порядке и где именно находятся его данные. Файловая система, прежде всего — это система управления данными. Файловые системы ОС создают для пользователей некоторое виртуальное представление внешних запоминающих устройств ЭВМ, позволяя работать с ними не на низком уровне управления физическими устройствами, а на высоком уровне наборов и структур данных. Файловая система скрывает от пользователя картину реального расположения информации во внешней памяти, обеспечивает независимость программ от конкретной конфигурации ЭВМ, т. е. предоставляет логический уровень работы с файлами. Файловая система также обеспечивает стандартные реакции на ошибки, возникающие при обмене данными.

Пользователь, работая в контексте определенного языка программирования, обычно использует файлыкак поименованную совокупность данных, хранимых во внешней памяти и имеющих определенную структуру. Точные правила именования файлов варьируются от системы к системе, однако все ОС поддерживают использование в качестве имен 8-символьные текстовые строки. Во многих ОС имя файла может состоять из двух частей, разделенных точкой. В некоторых ОС расширения файлов являются просто соглашениями, и ОС не заставляет пользователя их строго придерживаться. Другие ОС, например Windows, используют расширения для запуска программы, создающей данное расширение.

Наиболее распространенным видом файла, внутренняя структура которого обеспечивается файловыми системами различных ОС, являются файлы с последовательной структурой. Такие файлы можно рассматривать как набор составных элементов, называемых логическими записями, длина которых может быть как постоянной, так и переменной, и доступ к которым — последовательный. В ряде файловых систем предусматривается использование более сложных логических структур, например древовидных. На физическом уровне блоки файла (обычно размером 256 или 512 байт) могут размещаться в памяти непрерывной областью или храниться несмежно. Наиболее развитый механизм несмежного распределения блоков файлов реализован в ОС UNIX, в которой размеры файлов могут динамически изменяться в пределах 1 Гбайта.

Обычно пользователю бывает необходимо логически группировать свои файлы, поэтому требуется некий гибкий способ, позволяющий объединять файлы в группы. Это делается с помощью иерархического дерева каталогов, причем пользователь может создать себе столько каталогов и подкаталогов, сколько ему нужно. Таким образом, каталог играет роль учетного механизма, позволяющего обслуживать десятки и сотни файлов.

При организации файловой системы в виде дерева каталогов требуется некоторый способ указания файла. Для этого используется абсолютное имя пути и относительное имя пути файла. Абсолютное имя пути состоит из имен всех каталогов от корневого до того, в котором содержится файл, и имени самого файла. Это имя является уникальным. Относительное имя используется вместе с понятием текущего каталога. Если пользователь назначает какой-то каталог текущим, то к файлу из этого каталога можно обратиться просто по его имени. Каждый каталог рассматривается как файл и имеет собственное имя. Развитые многопользовательские файловые системы обеспечивают также защиту и разделение данных, хранящихся в файлах, при работе с ними разных пользователей. Так, например, каждый файл и каталог может иметь владельца. Обычно это пользователь, создавший их. Владелец может назначить тип защиты файла от других пользователей.

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

- определение физического расположения частей файла;

- определение наличия свободного места и выделение его для вновь создаваемых файлов.

Разные файловые системы используют различные механизмы для реализации указанных задач и имеют свои преимущества и недостатки. Так, например, файловые системы типа FAT (File Allocation Table — таблица размещения файлов) представляют собой образ носителя (диска) с детализацией до кластерного уровня.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2022-11-01 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: