Отображение портов ввода–вывода в адресном пространстве
Каждому регистру управления назначается уникальный адрес из адресного пространства. Порты ввода - вывода могут также быть отображены в адреса физического адресного пространства (в область оперативной памяти). Процессор тогда способен связаться с устройством ввода - вывода, издавая команды ассемблера, которые работают непосредственно на памяти (например, mov, or, and, и так далее). Как правило, для регистров управления используются верхние адреса адресного пространства. Другими словами на адресное пространство процессов накладывается адресное пространство устройств. Это пространство не может быть использовано в работе процессов. Например, для управления IDE жестких дисков использует пул из 16 адресов 0xf000 –0xf00f. Это ресурсный узел. При этом определяется, что первые 8 адресов 0xf000 – 0xf007 используются для доступа к master-дискам а 8 адресов 0xf008-0xf00f для slave-дисков. Эти пулы также делятся 0xf000-0xf003 – для доступа блочных устройств(кешируемых), 0xf004-0xf007 для доступа символьных устройств (не кешируемых). (остальное разбиение касается primaryпартиций. Их может быть не более 4.) Ядро сопровождает этот пул с помощью драйвера жесткого диска. Этот драйвер имеет номер в таблице ресурсов ядра и называется мажором. Адрес, точно указывающий на устройство называется минором. Таким образом, чтобы обратится блочному устройству намастер диску к первой primary таблице нужно обратится к специальному файлу в директории /dev/hda1 c 3 номером ядра и адресом 0xf000 Управление вводом-выводом Со стороны операционной системы процесс обработки информации – это выполнение команд процессора над данными, лежащими в основной памяти. Все остальные операции – операции ввода-вывода. Проектирование операций ввода – вывода самая сложная часть проектирования ОС, поскольку должна универсально работать с большим классом устройств.не мешать им работать в параллельном режиме. Поэтому операции по вводу-выводу являются особыми операциями (привилегированными операциями), и могут выполняться только самой ОС. Для этого используют разграничение на супервизор и пользователей. Использование операция ввода-вывода пользователем «на прямую» запрещено и называет исключение, а управление передается супервизору через механизм прерываний. Устройства ввода-вывода это разделяемые устройства между несколькими процессами, поэтому с ним монопольно работает только супервизор, который выбирает очередь заданий и падает их на устройство ввода-вывода. Супервизор выполняет следующие действия: Проверяет корректность запроса пользовательского запроса. Если запрос соответсвует спецификации он принимается, если нет – выдается исключение. Инициирует операции ввода-вывода, передает управление соответствующему драйверу и в случае управления с использованием прерываний предоставляет процессор диспетчеру процессов с тем, чтобы передать управление первому процессу в очереди. При получении сигналов прерываний от устройства ввода-вывода супервизор идентифицирует прерывания и передает управление соответствующей программе обработки прерываний (секция продолжения драйвера). Передает сообщение об ошибке в центральную систему для обработки Передает сообщение об окончании процесса ввода-вывода процессу, если процесс ожидает завершения операции. Как уже отмечалось шинная архитектура современного компьютера предполагает два адресных пространства – пространство процессов, размещаемое в центральном процессоре и пространство устройств, размещенного в виде таблиц в основной памяти компьютера. Каждое устройство ввода-вывода содержит 4 магистрали – питание, данные, адреса и управление. Если учесть, что для каждой магистрали требуется как минимум 2 проводника (ввод и вывод) – получим 8 проводов. Добавим ещё сигнальную шину и получим 10 проводников. Эти проводники формирую порт, к которому можно подключить практически любое устройство. Суммарное количество портов ограничено значение счетчика 65535 (2**16). Это 8-ми битные порты. Для организации работы 16 битных устройств требуется соединить 2 порта, при этом может использоваться только 2**15 портов. Для современных 64 битных устройств остается всего 8192 порта (2**13), а для 128 битных устройств остается всего 4096 адресов. Пока это не выглядит серьезным ограничением для персональных компьютером. В системных таблицах устройств, кроме адреса, содержится информация, необходимая для перепрограммирования контролера прямого доступа в память. Эта двоичная информация содержит … Как же работать с устройством, если набор команд к портам одинаков, а устройства разные. Для этого со стороны ОС используются драйверы, а со стороны устройств – контролеры.
Драйвера Драйвера работают в двух режимах: режим обмена с опросом готовности и режим обмена с прерывания. Если управление осуществляет центральный процессор, он посылает устройству управления команду выполнить некоторое действие. Исполнительное устройство выполняет операции и транслирует ЦП понятные ему сигналы. Поскольку сигнал готовности от устройства приходится ждать очень долго, ЦП занимается другими процессами, периодически опрашивая устройства о готовности. Подавать следующую команду до готовности бессмысленно и приходится ждать, держа процесс в памяти. Загруженный драйвер как процесс опрашивает устройство в бесконечном цикле. Это синхронное управление устройством. Конечно ЦП выгоднее выдав команду ввода – вывода вообще отключиться от этой задачи. А сигналы готовности от устройств можно трактовать как прерывания и передавать их на обработку драйверу устройства. Работа с прерываниями – асинхронное управление. Драйверы – в режиме прерывания содержат секции запуска, продолжения и завершения. Чтобы не потерять с ними связи, ОС после подачи команды включает отсчет времени, за которое драйвер устройства должен ответить. Если в течении этого тайм-аута устройство драйвер не ответил, устройство считается не управляемым и процесс получает соответствующее сообщение. Секция запуска– инициирует операции ввода-вывода. Эта секция загружается в основную память, для включения устройства в состав ОС. Секция продолжения – осуществляет на основании некоего алгоритма операции передачи данных с прерываниями. Секция основной обработчик прерываний. Если секций выполнения несколько - они поочередно передают друг другу управление. Секция завершения выключает устройство вводы-вывода из состава ОС. Драйвера в режиме прерываний сложнее драйверов на основе опроса. Попытка смешивания драйверов обоих типов в одной системе приводит к зависаниям. Так в ОС WindowsNT драйвера печати работают в режиме опроса и при печати загружают систему на 100%. Закрепление устройств Многие устройства не допускают совместного использования. Прежде всего устройства с последовательным доступом. Для того, чтобы несколько процессов могли работать с такими устройствами вводится понятие виртуальных устройств. Называется spool – simultaneous peripheral operation on-line – имитацияработысустройствомврежиме On-Line).Его задача создать видимость параллельного асинхронного работы с устройством нескольких процессов. Каждому устройству предоставляется виртуальный драйвер, вывод собирается в специальных файлах. Сервис управляющий процессов чтением и записью в спул файл – спуллер. (spool-readerspool-writer) Каждая ос имеет свои таблицы ввода-вывода и их состав сильно зависит от ОС. В некоторых ОС это не таблицы а связанные списки. Такие системы могут поддерживать миллионы устройств ввода-вывода.
Популярное: Почему стероиды повышают давление?: Основных причин три... Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной... Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (520)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |