Автор: Пользователь скрыл имя, 11 Декабря 2011 в 20:34, курс лекций
Рассмотренные в предыдущем разделе физические механизмы взаимодействия устройств ввода-вывода с вычислительной системой позволяют понять, почему разнообразные внешние устройства легко могут быть добавлены в существующие компьютеры. Все, что необходимо сделать пользователю при подключении нового устройства - это отобразить порты устройства в соответствующее адресное пространство, определить какой номер будет соответствовать прерыванию, генерируемому устройством, и, если нужно, закрепить за устройством некоторый канал DMA.
Лекция 16. Структура системы ввода-вывода. Функции базовой подсистемы ввода-вывода. 1
Логические принципы организации ввода-вывода 1
Структура системы ввода-вывода 1
Функции базовой подсистемы ввода-вывода 4
Буферизация и кэширование 5
Spooling и захват устройств. 6
Обработка прерываний и ошибок 6
Планирование запросов 7
Лекция 15. Система управления вводом-выводом. Физические принципы организации ввода-вывода. Общие сведения об архитектуре компьютера. Структура контроллера устройства. Опрос устройств и прерывания. 8
Физические принципы организации ввода-вывода 8
Общие сведения об архитектуре компьютера 8
Структура контроллера устройства 10
Опрос устройств и прерывания. Исключительные ситуации и системные вызовы 11
Для внешних прерываний характерны следующие особенности: 13
Прямой доступ к памяти (Direct Memory Access – DMA) 14
Лекция 14. Загрузка программ. Абсолютная загрузка. Относительная загрузка. Позиционно-независимый код. Загрузка ОС. Сборка программ. 15
Загрузка программ 15
Абсолютная загрузка 15
Абсолютная загрузка используется, например, в системе UNIX на 32-разрядных машинах. 16
Относительная загрузка 16
Позиционно-независимый код 17
Загрузка ОС 17
Пример: Загрузка системы MS-DOS. 20
Сборка программ 21
Объектный модуль 21
Библиотеки объектных модулей 22
Варианты построения загрузчиков 23
Лекция 13. Кэширование данных. Иерархия запоминающих устройств. Кэш память. Принцип действия кэш-памяти. Проблемы согласования данных. Проблемы отображения основной памяти в кэш. 25
Иерархия запоминающих устройств 25
Кэш-память 25
Принцип действия кэш-памяти 26
Проблема согласования данных 28
Способы отображения основной памяти на кэш 28
Схемы выполнения запросов в системах с кэш-памятью 29
Лекция 16. Структура системы ввода-вывода. Функции базовой подсистемы ввода-вывода.
Блокирующиеся, не блокирующиеся и асинхронные системные вызовы. Блокирующиеся, не блокирующиеся и асинхронные системные вызовы.
Рассмотренные
в предыдущем разделе
Если поручить неподготовленному пользователю сконструировать систему ввода-вывода, способную работать со всем множеством внешних устройств, то, скорее всего, он окажется в ситуации, в которой находились биологи и зоологи до появления трудов Линнея. Все устройства разные, отличаются по выполняемым функциям и своим характеристикам, и кажется, что принципиально невозможно создать систему, которая без больших постоянных переделок позволяла бы охватывать все многообразие видов. Вот перечень лишь несколько направлений (далеко не полный), по которым различаются устройства:
Скорость обмена
информацией может
Некоторые устройства могут быть использованы параллельно несколькими процессами (являются разделяемыми), в то время как другие требуют монопольного захвата процессом.
Устройства могут запоминать выведенную информацию для ее последующего ввода или не обладать этой функцией. Устройства, запоминающие информацию, в свою очередь, могут дифференцироваться по формам доступа к сохраненной информации: обеспечивать к ней последовательный доступ в жестко заданном порядке или уметь находить и передавать только необходимую порцию данных.
Часть устройств умеет передавать данные только по одному байту последовательно (символьные устройства), а часть устройств умеет передавать блок байт как единое целое (блочные устройства).
Существуют устройства, предназначенные только для ввода информации, устройства, предназначенные только для вывода информации, и устройства, которые могут совершать и ввод, и вывод.
В области технического
обеспечения удалось выделить несколько
основных принципов взаимодействия
внешних устройств с
Похожий подход
оказался продуктивным и в
области программного
Два нижних уровня этой слоеной системы составляет hardware: сами устройства, непосредственно выполняющие операции, и их контроллеры, служащие для организации совместной работы устройств и остальной вычислительной системы. Следующий уровень составляют драйвера устройств ввода-вывода, скрывающие от разработчиков операционных систем особенности функционирования конкретных приборов и обеспечивающие четко определенный интерфейс между hardware и вышележащим уровнем – уровнем базовой подсистемы ввода-вывода, которая, в свою очередь, предоставляет механизм взаимодействия между драйверами и программной частью вычислительной системы в целом.
В последующих
разделах мы подробнее
Систематизация
внешних устройств и интерфейс
между базовой подсистемой
Как и система
видов Линнея, система типов устройств
является далеко не полной
и не строго выдержанной.
символьные (клавиатура, модем, терминал и т.п.);
блочные (магнитные и оптические диски и ленты, и т.д.);
сетевые (сетевые карты);
все остальные (таймеры, графические дисплеи, телевизионные устройства, видеокамеры и т.п.);
Такое деление является весьма условным. В некоторых операционных системах сетевые устройства могут не выделяться в отдельную группу, в некоторых – отдельные группы составляют звуковые устройства и видеоустройства и т.д. Некоторые группы в свою очередь могут разбиваться на подгруппы: подгруппа жестких дисков, подгруппа мышек, подгруппа принтеров. Нас такие детали не интересуют. Нашей целью не является построение стройной и единственно возможной систематизации всех возможных устройств, которые могут быть подключены к вычислительной системе. Единственное, для чего нам понадобится эта классификация – так это для иллюстрации того, что устройства могут быть разделены на группы по выполняемым ими функциям, и для понимания функций драйверов и интерфейса между ними и базовой подсистемой ввода-вывода.
Для этого
мы рассмотрим только две
К символьным
устройствам обычно относятся
устройства ввода информации, которые
спонтанно, т.е. во времена
Для блочных
устройств, таких как
Драйвера
символьных и блочных
Помимо функций read, write, seek (для блочных устройств), get, put (для символьных устройств) и ioctl в состав интерфейса обычно включают еще следующие функции:
Функцию инициализации или повторной инициализации работы драйвера и устройства – open.
Функцию временного завершения работы с устройством (может, например, вызывать отключение устройства) – close.
Функцию опроса состояния устройства (если по каким-либо причинам работа с устройством производится методом опроса его состояния – например, в операционных системах Windows NT и Windows 9x так построена работа с принтерами через параллельный порт) – poll.
Функцию останова
драйвера, которая вызывается при
останове операционной системы или
выгрузке драйвера из памяти, - halt.
Существует еще ряд действий, выполнение которых может быть возложено на драйвер, но поскольку, как правило, они являются действиями базовой подсистемы ввода-вывода, мы поговорим о них в следующем разделе. Приведенные выше названия функций, конечно, являются условными и могут меняться от одной операционной системы к другой, но действия, выполняемые драйверами, характерны для большинства операционных систем, и соответствующие функции присутствуют в интерфейсах к ним.
Базовая подсистема
ввода-вывода служит
Блокирующиеся, не блокирующиеся и асинхронные системные вызовы
Все системные
вызовы, связанные с осуществлением
операций ввода-вывода, можно разбить
на три группы по способам
реализации взаимодействия
К первой, наиболее
привычной для большинства
Ко второй группе относятся не блокирующиеся системные вызовы. Их название не совсем точно отражает суть дела. В простейшем случае, процесс, применивший не блокирующийся вызов, не переводится в состояние ожидание вообще. Системный вызов возвращается немедленно, выполнив предписанные ему операции ввода-вывода полностью, частично или не выполнив совсем, в зависимости от текущей ситуации (состояния устройства, наличия данных и т.д.). В более сложных ситуациях процесс может блокироваться, но условием его разблокирования является завершение всех необходимых операций или окончание некоторого промежутка времени. Типичным случаем применения не блокирующегося системного вызова может являться периодическая проверка на поступление информации с клавиатуры при выполнении трудоемких расчетов.