Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Системы управления ввода-вывода. ⇐ ПредыдущаяСтр 7 из 7
Подсистема управления вводом-выводом ОС централизованно решает следующие основные задачи:
В однозадачных ОС, например 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 уничтожает.
Существует несколько способов управления устройствами:
Программное управление устройством используется для устройств, которые не могут вырабатывать прерывания. Суть такого управления состоит в следующем: после инициализации операции ввода-вывода в цикле начинается опрос регистра устройства для определения момента завершения операции ввода вывода. Очевидно, что при таком способе все время выполнения операции ввода- вывода процессор занят и не может быть использован для выполнения других процессов. 2й способ управления по прерыванию в основном используется всеми современными устройствами и суть его состоит в след: После запуска операции ввода-вывода, т е запись в регистр устройства, процессор переключается на выполнение другой работы, а устройство информирует о завершении операции ввода-вывода выработкой прерывания. Получив прерывание, процессор считывает результаты с устройства и записывает их в память. Т о при этом способе между запуском операции ввода вывода и ее завершением процессор свободен. Прямой доступ к памяти позволяет контроллеру устройства самому записывать результаты в память, не отвлекая для этого процессор. Однако для этого необходимы специальные контроллеры, которые могут напрямую работать с памятью.
Драйвер – специальным образом организованный исполняемый модуль, который содержит несколько процедур управления устройством и специальную структуру данных, которая называется заголовок устройства. Заголовок устройства во 1х содержит параметры устройства, с которыми работает данный драйвер, а во 2х - адреса точек входа во всех процедурах драйвера. Когда драйвер загружается в ОС, заголовок устройства подключается к списку загруженных устройств, т е для каждого устройства, для которого загружен драйвер, в списке устройств имеется его заголовок. Когда ОС-ме нужно вызвать тот или иной драйвер, она просматривает список загруженных устройств, по имени устройства находит нужный заголовок устройства, а по нему определяет точку входа нужной процедуры. В разных ОС драйверы могут иметь различное количество процедур, однако следующие 3 процедуры всегда присутствуют в драйверах, непосредственно управляющие устройствами.
1) проверяет правильность заполнения IRP. Если IRP заполнен неверно, то главная процедура записывает код ошибки в поле код возврата и возвращает IRP ОС-ме. 2) Если IRP заполнен правильно, главная процедура проверяет, а нужно ли само устройство для выполнения затребованной операции. Если устройство для операции не нужно, главная процедура выполняет операцию, результат заносит в IRP, и возвращает ОС. 3) Если же операция должна непосредственно выполняться на устройстве, главная процедура проверяет, свободно ли устройство или занято. Если устройство свободно, главная процедура запускает на нем операцию ввода-вывода и переходит в ожидание ее завершения. Если устройство занято, главная процедура ставит IRP в очередь и также переходит в ожидание завершения операции. Поскольку в многозадачной системе сразу несколько процессов могут одновременно пытаться выполнить операции на одном и том же устройстве, главная процедура, не завершившись для одной операции ввода вывода, может быть вызвана для запуска другой операции. Главная процедура должна быть повторно входимой (или реинтерабельной). Реинтерабельность обеспечивается тем, что процедура не хранит никаких данных в памяти. Она может хранить их либо в регистрах, либо в стеке. После того, как устройство завершит операцию ввода-вывода, оно обычно вырабатывает прерывание и управление передается следующей процедуре драйвера обработчику аппаратных прерываний.
3. Она анализирует сохраненные обработчиком данные о состоянии устройства и заполняет IRP результатами операции. Во 2х она разблокирует главную процедуру, связную с этим IRP, после чего главная процедура завершается и возвращает IRP ОС-ме. И в 3х она просматривает очередь к устройству, и если очередь не пуста, считывает из нее следующий IRP и запускает определенную в нем операцию ввода-вывода.
Обычно компонент ОС, управляющий вводом-выводом, создающий IRP, называется диспетчером ввода-вывода. Диспетчер ввода-вывода работает в режиме ядра(в привилегированном режиме), так же как драйвер, и схема ввода вывода имеет следующий вид: Рис 1 Драйверы устройств, т е драйверы, непосредственно работающие с устройствами, еще называют низко уровневыми драйверами. Некоторые устройства, например магнитные диски, имеют очень сложную структуру хранения данных, с которой рядовому пользователю напрямую работать практически невозможно. Поэтому на таких устройствах моделируются логическая структура данных более понятная для пользователя. Эта логическая структура называется файловая система. Файловая система содержит во 1х сами данные, хранящиеся на устройстве, во 2х процедуры, реализующие логические структуры данных на базе существующих физических.. Большинство современных файловых систем имеет иерархическую структуру, те содержит набор каталогов или папок, в которых хранятся файлы. Это связано с тем, что человеческая память не в состоянии запомнить большое количество уникальных имен файлов. Как правило, современные вычислительные системы имеют несколько устройств, на которых существует файловая система. Каким образом можно различать и использовать файловые системы разных устройств? Существует 2 способа:
рис 2 Для того чтобы использовать файловую систему такого устройства, эту файловую систему необходимо логически присоединить к общему дереву, которое называется корневой файловой системой. Такое логическое присоединение называется операцией монтирования. При этом сама присоединяемая система называется монтируемой файловой системой, а каталог, к которому она присоединяется, называется точкой монтирования. После выполнения операции монтирования, корневая файловая истема будет иметь такой вид: Рис 3 В windows файловая система реализуется в виде специального драйвера, который располагается между драйвером устройства и диспетчером ввода вывода. Этот драйвер напрямую с устройством не работает, поэтому называется высокоуровневым драйвером.
Рис 4 Во многих современных ОС для работы с блочным устройствами используется кэширование или буферизация, которая заключается в следующем: все считанные с устройства данные, помещаются в специальный буфер, называемый кэш. При каждом следующем обращении к диску специальный компонент, называемый диспетчером КЭШа, сначала просматривает буфер КЭШа и, если обнаруживает, что требуемые данные уже расположены в буфере, возвращает их, не выполняя реальной операции ввода вывода на диски. Диспетчер КЭШа реализует как высокоуровневый драйвер, расположенный между драйвером файловой системы и драйвером диска. Рис 5 При кэшировании часто оперируют такими понятиями как упреждающее чтение и отложенная запись. При упреждающем чтении драйвер КЭШа передает драйверу диска запрос не только на считывание затребованных данных, но и следующих за ними данных в надежде, что они потребуются при следующем запросе. Отложенная запись это механизм оптимизации операции ввода вывода с диска(Ом). Когда диспетчер кэша получает IRP для записи данных на диск, он помещает эти данные в свой буфер и возвращает код успешного завершения операции, т е как будто эти данные уже на них записаны. На самом же деле он произведет реальную запись данных на диск в наиболее благоприятный по каким-то критериям момент. Таким образом возникает такая ситуация: приложение считает что данные на диск записаны, на самом деле это не так.
|
||||||||
Последнее изменение этой страницы: 2017-02-06; просмотров: 227; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.139.82.23 (0.014 с.) |