Системы управления ввода-вывода. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Системы управления ввода-вывода.



Подсистема управления вводом-выводом ОС централизованно решает следующие основные задачи:

  1. предоставление унифицированного интерфейса работы с переферийными устройствами.
  2. Централизованное управление буферами ввода-вывода
  3. Централизованная обработка ошибок
  4. обработка прерываний от устройств

 

В однозадачных ОС, например MSDOS, пользователи и процессы могли выполнять ввод вывод на следующих уровнях:

Рис4

1 – выполнение операций на логическом уровне – работа с файлами и каталогами

2 – работа с физическими устройствами на уровне ОС, т е вызов функции ОС, работающей с устройствами

3 – работа с устройствами на уровне BIOS

4 – ytgjchttlcndtyyfz hf,jnf c ecnhjqcndfvb? N t pfgbcm b bxntybt с командами in и out

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

Рис5

В многозадачных ОС только 1 компонент системы может работать напрямую с устройством, этот компонент называется драйвер устройства. Драйвер запускает на устройстве операции ввода-вывода и обрабатывает прерывания от устройства. Для каждого типа устройств в системе обычно имеется свой драйвер. Для того, чтобы выполнить операцию ввода-вывода, прикладные процессы вызывают специальные функции ввода-вывода. Эти функции называется API(application Program Interface). При вызове этих функций управление получает ядро ОС, которая строит на базе параметров функции ввода-вывода специальную структуру данных, называемую Input Output Request Packet. В различных ОС IRP может иметь различный формат, но структура следующая:

Рис 6

L – длина запроса в байтах

Устройство определяет, для какого устройства должна быть выполнена функция ввода-вывода.

Функция определяет выполняемую функцию: чтение, запись,…

В коде возврата возвращается код того, как была выполнена след функция.

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

Тело запроса содержит параметры, выполняемой функции вывода.

Сформировав IRP, ядро посылает его к драйверу соответствующего устройства. Если устройство свободно, то драйвер тут же запускает определенную операцию ввода-вывода, а по ее завершении помещает результаты в irp b djpdhfotn irp в ядро ОС. Если же на момент прихода IRP устройство занято, то драйвер ставит IRP в очередь устройству. Получив IRP от устройства с результатами операции ядро возвращает их прикладному процессу, а сам irp уничтожает.

Существует несколько способов управления устройствами:

  1. программное управление
  2. управление устройством по прерыванию
  3. прямой доступ к памяти

 

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

2й способ управления по прерыванию в основном используется всеми современными устройствами и суть его состоит в след:

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

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

 

Драйвер – специальным образом организованный исполняемый модуль, который содержит несколько процедур управления устройством и специальную структуру данных, которая называется заголовок устройства. Заголовок устройства во 1х содержит параметры устройства, с которыми работает данный драйвер, а во 2х - адреса точек входа во всех процедурах драйвера. Когда драйвер загружается в ОС, заголовок устройства подключается к списку загруженных устройств, т е для каждого устройства, для которого загружен драйвер, в списке устройств имеется его заголовок. Когда ОС-ме нужно вызвать тот или иной драйвер, она просматривает список загруженных устройств, по имени устройства находит нужный заголовок устройства, а по нему определяет точку входа нужной процедуры. В разных ОС драйверы могут иметь различное количество процедур, однако следующие 3 процедуры всегда присутствуют в драйверах, непосредственно управляющие устройствами.

  1. Главная процедура (инициализация ввода-вывода)
  2. Обработчик аппаратных прерываний
  3. Процедура завершения операции ввода вывода
  1. Главная процедура – та процедура, которую ОС вызывает для передачи драйверу пакета запроса ввода-вывода, т е IRP. Получив пакет запроса, главная процедура выполняет следующие действия:

1) проверяет правильность заполнения IRP. Если IRP заполнен неверно, то главная процедура записывает код ошибки в поле код возврата и возвращает IRP ОС-ме.

2) Если IRP заполнен правильно, главная процедура проверяет, а нужно ли само устройство для выполнения затребованной операции. Если устройство для операции не нужно, главная процедура выполняет операцию, результат заносит в IRP, и возвращает ОС.

3) Если же операция должна непосредственно выполняться на устройстве, главная процедура проверяет, свободно ли устройство или занято. Если устройство свободно, главная процедура запускает на нем операцию ввода-вывода и переходит в ожидание ее завершения. Если устройство занято, главная процедура ставит IRP в очередь и также переходит в ожидание завершения операции. Поскольку в многозадачной системе сразу несколько процессов могут одновременно пытаться выполнить операции на одном и том же устройстве, главная процедура, не завершившись для одной операции ввода вывода, может быть вызвана для запуска другой операции. Главная процедура должна быть повторно входимой (или реинтерабельной). Реинтерабельность обеспечивается тем, что процедура не хранит никаких данных в памяти. Она может хранить их либо в регистрах, либо в стеке. После того, как устройство завершит операцию ввода-вывода, оно обычно вырабатывает прерывание и управление передается следующей процедуре драйвера обработчику аппаратных прерываний.

  1. Обработчик аппаратных прерываний получает управление в режиме с запрещенными прерываниями; т е в момент входа в обработчик прерываний, прерывания запрещены, чтобы следующее прерывание не изменило данные текущего прерывания. Поэтому следующие прерывания временно откладываются. Однако вычислительная система может сохранить информацию в небольшом количестве отложенных прерываний, поэтому чтоб не потерять следующие прерывания, обработчик аппаратных прерываний должен работать как можно меньше времени. Поэтому обработчик выполняет следующие действия: во 1х он сохраняет состояние устройства на момент прерываний, т е содержимое регистров устройства. И во 2х вызывает следующую процедуру драйвера – процедуру завершения операции ввода вывода, которая уже в режиме с разрешенными прерываниями обработает результат операций. После этого обработчик свою работу заканчивает.

 

3. Она анализирует сохраненные обработчиком данные о состоянии устройства и заполняет IRP результатами операции. Во 2х она разблокирует главную процедуру, связную с этим IRP, после чего главная процедура завершается и возвращает IRP ОС-ме. И в 3х она просматривает очередь к устройству, и если очередь не пуста, считывает из нее следующий IRP и запускает определенную в нем операцию ввода-вывода.

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

Рис 1

Драйверы устройств, т е драйверы, непосредственно работающие с устройствами, еще называют низко уровневыми драйверами. Некоторые устройства, например магнитные диски, имеют очень сложную структуру хранения данных, с которой рядовому пользователю напрямую работать практически невозможно. Поэтому на таких устройствах моделируются логическая структура данных более понятная для пользователя. Эта логическая структура называется файловая система. Файловая система содержит во 1х сами данные, хранящиеся на устройстве, во 2х процедуры, реализующие логические структуры данных на базе существующих физических.. Большинство современных файловых систем имеет иерархическую структуру, те содержит набор каталогов или папок, в которых хранятся файлы. Это связано с тем, что человеческая память не в состоянии запомнить большое количество уникальных имен файлов. Как правило, современные вычислительные системы имеют несколько устройств, на которых существует файловая система. Каким образом можно различать и использовать файловые системы разных устройств? Существует 2 способа:

  1. (MS-DOS->Windows) на каждом устройстве имеется своя файловая система и для того, чтобы к ней обратиться, необходимо еще указать имя устройства на котором файловая система расположена.
  2. файловые системы различных устройств объединяются в одно дерево (Unix)

рис 2

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

Рис 3

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

Рис 4

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

Рис 5

При кэшировании часто оперируют такими понятиями как упреждающее чтение и отложенная запись. При упреждающем чтении драйвер КЭШа передает драйверу диска запрос не только на считывание затребованных данных, но и следующих за ними данных в надежде, что они потребуются при следующем запросе. Отложенная запись это механизм оптимизации операции ввода вывода с диска(Ом). Когда диспетчер кэша получает IRP для записи данных на диск, он помещает эти данные в свой буфер и возвращает код успешного завершения операции, т е как будто эти данные уже на них записаны. На самом же деле он произведет реальную запись данных на диск в наиболее благоприятный по каким-то критериям момент. Таким образом возникает такая ситуация: приложение считает что данные на диск записаны, на самом деле это не так.

 



Поделиться:


Последнее изменение этой страницы: 2017-02-06; просмотров: 227; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.139.82.23 (0.014 с.)