Лекция 15. Ввод-вывод 1.ppt
- Количество слайдов: 44
Устройства и программное обеспечение ввода-вывода
Ввод-вывод • Важнейшая функция ОС – управление всеми устройствами ввода-вывода.
Устройства ввода-вывода • Устройства ввода-вывода можно разделить на две категории: – блочные устройства – символьные устройства.
Блочные устройства • Блочными называются устройства, хранящие информацию в виде блоков фиксированного размера. • У каждого блока имеется адрес. • Каждый блок может быть прочитан независимо от остальных блоков. • Пример - диски.
Символьные устройства • Символьное устройство принимает или предоставляет поток символов без какой-либо блочной структуры. • Оно не является адресуемым и не выполняет операцию поиска. • Пример - принтеры, сетевые интерфейсные карты, мыши.
Контроллеры устройств • Устройства ввода-вывода обычно состоят из двух частей: – механической части (диск, принтер, монитор) – электронной части (контроллер или адаптер). • ОС обычно имеет дело не с устройством, а с контроллером.
Управляющие регистры • Каждый контроллер имеет несколько регистров, которые используются для взаимодействия с центральным процессором. • При помощи этих регистров ОС управляет (считывает, пишет, включает и т. д. ) и определяет состояние (готовность) устройства.
Буфер устройства • Многие устройства имеют буфер данных (напр. , видеопамять), из которого ОС может читать данные, а также писать данные в него.
Реализации доступа к управляющим регистрам и буферам
Вариант 1. • Каждому управляющему регистру назначается целое число (номер порта ввода-вывода). • Пример: – in REG, PORT – прочитать управляющий регистр устройства из порта Port в регистр процессора REG – out PORT, REG – записать содержимое регистра REG в управляющие регистр устройства через порт PORT • Адресные пространства ОЗУ и устройства ввода-вывода в этой схеме не пересекаются.
Вариант 1. Команды – IN R 0, 4 (читает содержимое порта 4 в регистр R 0) – MOV R 0, 4 (читает содержимое слова памяти по адресу 4 в регистр R 0) выполняют принципиально различные действия.
Вариант 1. • Недостатки - для чтения и записи применяются специальные команды, например: IN и OUT (использ. ассемблерные вставки) - необходим специальный механизм защиты от процессов - необходимо сначала считать регистр устройства в регистр процессора
Вариант 2. • Отображаемый на адресное пространство памяти ввод-вывод. • Все управляющие регистры устройств ввода-вывода отображаются на адресное пространство памяти.
Вариант 2. • Каждому управляющему регистру назначается уникальный адрес в памяти. • Обычно для регистров устройств отводятся адреса на вершине адресного пространства.
Вариант 2. • Недостатки - при кэшировании памяти, могут кэшироваться и регистры устройств Решение – Необходимо выборочно (по номерам страниц) запрещать кэширование. Т. о. усложняется аппаратура и ОС.
Вариант 2. • Недостатки - все устройства должны проверять все обращения к памяти, чтобы определить, на какие им реагировать.
Вариант 2. • На одной общей шине это реализуется легко Центральный процессор Память Устройство ввода-вывода Шина Все адреса (памяти и устройств ввода-вывода) выставляются на шину
Вариант 2. • На нескольких шинах будут проблемы. Обращение процессора к памяти (чтение и запись) проходят по высокоскоростной шине Центральный процессор Память Устройство ввода-вывода Этот порт памяти позволяет устройствам ввода-вывода получать доступ к памяти
Вариант 2. • Решение 1. Сначала все обращения к памяти ЦП посылает по «быстрой шине» напрямую памяти, если память не отвечает ЦП пытается сделать это еще раз по другим шинам
Вариант 2. • Решение 2. На шину памяти устанавливается следящее устройство, которое передает все адреса потенциально заинтересованным устройствам ввода-вывода.
Вариант 2. • Решение 3. Фильтрация адресов микросхемой моста PCI. • Эта микросхема содержит регистры диапазона адресов заполняемые во время загрузки компьютера. Все адреса попадающие в данный диапазон передаются не памяти а на шину PCI.
Вариант 3. Гибридная схема • На адресное пространство памяти отображаются буферы данных и отдельные порты ввода-вывода. • Например, в х86 и Pentium: – от 0 до 64 К отводится портам, – от 640 до 1 М зарезервировано под буферы данных.
Способы реализации доступа к управляющим регистрам и буферам
Прямой доступ к памяти (DMA) • Независимо от того, отображаются ли регистры или буферы ввода-вывода на память или нет, ЦП необходимо как-то адресоваться к контроллерам устройств для обмена данными с ними. • ЦП может запрашивать данные от контроллера ввода-вывода по одному байту, но подобная организация обмена данными крайне неэффективна, так как расходует огромное количество процессорного времени. • На практике часто применяется схема, называемая прямым доступом к памяти (DMA, direct memory access).
Прямой доступ к памяти • Прямой доступ к памяти реализуется с помощью DMA - контроллера. • DMA – контроллер может получить доступ к системной шине независимо от процессора. • Контроллер содержит несколько регистров: – регистр адреса памяти; – счетчик байтов; – управляющие регистры, могут содержать: - порт ввода-вывода; - чтение или запись; - единицы переноса (побайтно или пословно).
Без контроллера 1. Процессор дает команду дисковому контроллеру прочитать данные в буфер 2. Считываются данные в буфер, контроллер проверяет контрольную сумму считанных данных (проверка на ошибки). Процессор, до прерывания, переключается на другие задания. 3. Контроллер диска инициирует прерывание 4. Операционная система начинает работать и может считывать из буфера данные в память
С DMA-контроллером 1. ЦП программирует контроллер (какие данные и куда переместить) 2. ЦП дает команду дисковому контроллеру прочитать данные в буфер 3. Считываются данные в буфер, контроллер диска проверяет контрольную сумму считанных данных, (процессор, до прерывания, переключается на другие задания). 4. Контроллер DMA посылает запрос на чтение дисковому контроллеру 5. Контроллер диска поставляет данные на шину, адрес памяти уже находится на шине, происходит запись данных в память 6. Когда запись закончена, контроллер диска посылает подтверждение DMA контроллеру 7. DMA контроллер увеличивает используемый адрес и уменьшает значение счетчика байтов 8. Все повторяется с пункта 4, пока значение счетчика не станет равной нулю. 9. Контроллер DMA инициирует прерывание • ОС не нужно копировать данные в память, они уже там.
Работа DMA - контроллера
Прерывания • Алгоритм работы: – После окончания работы устройство ввода-вывода выставляет сигнал прерывания на выделенную устройству специальную линию шины – Этот сигнал распознается микросхемой контроллера прерываний. – Контроллер прерываний принимает решение о дальнейших действиях. – Процессор начинает выполнять обработку прерывания, вызывая процедуру – Эта процедура подтверждает получение прерывания контроллеру прерываний
Прерывания 1. Если необработанных прерываний нет, прерывание выполняется немедленно. 2. Если есть необработанные прерывания, контроллер игнорирует прерывание. Но устройство продолжает удерживать сигнал прерывания на шине до тех пор, пока оно не будет обработано.
Прерывания
Принципы программного обеспечения ввода-вывода
Задачи программного обеспечения ввода-вывода • Независимость от устройств - например, программа, читающая данные из файла не должна задумываться с чего она читает (CD, HDD и др. ). Все проблемы должна решать ОС. • Единообразное именование - имя файла или устройства должно быть просто текстовой строкой или целым числом и никоим образом не зависеть физического устройства. • Обработка ошибок - ошибки должны обрабатываться как можно ближе к аппаратуре
Задачи программного обеспечения ввода-вывода • Перенос данных – синхронный и асинхронный. • Большинство операций ввода-вывода на физическом уровне являются асинхронными — ЦП запускает перенос данных и переключается на другую задачу (пока не придет прерывание). • Программы пользователя легче написать, используя блокирующие операции ввода-вывода — после обращения к системному вызову read программа автоматически приостанавливается до тех пор, пока данные не появятся в буфере. • Тем, чтобы операции ввода-вывода, в действительности являющиеся асинхронными, выглядели как блокирующие в программах пользователя, занимается ОС.
Задачи программного обеспечения ввода-вывода • Буферизация. – Часто данные, поступающие с устройства, не могут быть сохранены сразу там, куда они в конечном итоге направляются. – Для многих устройств реального времени крайне важными оказываются параметры сроков поступления данных • Проблема выделенных (принтер) и устройств коллективного использования (диск) - принтер должен предоставляться только одному пользователю, а диск многим. ОС должна уметь управлять как устройствами общего доступа, так и выделенными устройствами, позволяя избегать различных потенциальных проблем.
Способы осуществления операций ввода-вывода • Программный ввод-вывод • Управляемый прерываниями вводвывод • Ввод-вывод с использованием DMA
Программный ввод-вывод • Простейший вид ввода-вывода. • Всю работу выполняет центральный процессор.
Пример. Алгоритм печати • • • Строка для печати собирается в буфере в пространстве пользователя. Обращаясь к системному вызову, процесс получает принтер. Обращаясь к системному вызову, процесс просит ОС распечатать строку на принтере. ОС копирует строку в массив, расположенный в режиме ядра. ОС копирует первый символ в регистр данных принтера, который отображен на памяти. Символ печатается на бумаге. Указатель устанавливается на следующий символ. Процессор ждет, когда бит готовности принтера выставится в готовность. Все повторяется. При использовании буфера принтера, сначала вся строка копируется в буфер, после этого начинается печать.
Пример. Алгоритм печати • Печать строки при помощи программного ввода-вывода copy_from_user(buffer. p. count); /* р - буфер ядра */ for (i=0: i<count: i++) { /* цикл символов */ while (*printer_status_reg != READY): /* цикл ожидания готовности */ * printer_data_reg = p[i]; /* печать символа */ } return_to_user(); • После печати каждого символа процессор в цикле опрашивает готовность устройства. • Такое поведение процессора называется опросом или ожиданием готовности, а также активным ожиданием.
Этапы печати строки ABCDEFGH
Программный ввод-вывод • Программный ввод-вывод легко реализуется • Недостаток - ЦП занимается на все время операции вводавывода, причем большую часть времени ЦП проведет в ожидании готовности устройства, что является неэффективным использованием процессорного времени. • Такой подход вполне допустим в примитивных встроенных системах, в которых у ЦП нет других задач; однако в более сложных, многозадачных системах такой подход неприемлем.
Управляемый прерываниями ввод-вывод • Предоставить ЦП возможность делать что-нибудь в то время, когда принтер переходит в состояние готовности, можно при помощи прерываний. • Когда выполняется системный вызов печати строки, буфер копируется в пространство ядра и первый символ строки копируется на принтер, как только принтер выставит бит готовности. После этого ЦП вызывает планировщик, который запускает какой-либо другой процесс. Процесс, попросивший распечатать строку, оказывается заблокирован на весь период печати строки. Когда принтер будет готов, он посылает прерывание процессору. Процессор переключается на печатающий процесс. • • •
Ввод-вывод с использованием DMA • Недостаток управляемого прерываниями вводавывода - прерывания происходят при печати каждого символа. • Обработка прерываний занимает определенное время, поэтому такая схема не является эффективной. • Решение - использование DMA, т. е. позволить контроллеру DMA поставлять принтеру символы по одному, не беспокоя при этом центральный процессор. • Этот метод почти не отличается от программного ввода-вывода, с той разницей, что всю работу вместо ЦП выполняет контроллер DMA.
Ввод-вывод с использованием DMA • Наибольший выигрыш от использования DMA состоит в уменьшении количества прерываний с одного на печатаемый символ до одного на печатаемый буфер. • С другой стороны, контроллер DMA обычно значительно уступает ЦП в скорости. • Если контроллер DMA не может поддерживать полную скорость ввода или вывода с внешнего устройства, либо у ЦП нет других задач во время ожидания прерывания от DMA, тогда оба предыдущих метода ввода-вывода будут предпочтительнее.
Лекция 15. Ввод-вывод 1.ppt