
- •Устройства ввода/вывода
- •Контроллеры устройств
- •Ввод-вывод с отображением на память
- •Прерывания
- •Обработка прерываний в защищенном режиме работы процессора
- •Классификация прерываний
- •Прямой доступ к памяти (dma)
- •Программное обеспечение ввода-вывода
- •Назначение программного обеспечения ввода-вывода
Программное обеспечение ввода-вывода
Сначала познакомимся с назначением программного обеспечения ввода-вывода, а затем изучим различные способы выполнения операция ввода-вывода с точки зрения ОС.
Назначение программного обеспечения ввода-вывода
Ключевая концепция разработки ПО ввода-вывода — независимость от устройств. Эта концепция означает возможность написания программ, способных получать доступ к любому устройству ввода-вывода без предварительного указания конкретного устройства. Соответственно, программа, читающая данные из входного файла, должна с одинаковым успехом работать с файлом на CD, HDD, Floppy, причем без каких-либо изменений в программе. Например, должна быть возможность выполнить команду вроде sort < input > output
Эта команда должна работать невзирая на то, что именно указано в качестве входного устройства.
Тесно связан с идеей независимости от устройств принцип единообразного именования. Имя файла или устройства должно быть просто текстовой строкой и никоим образом не зависеть от физического устройства.
Другим не менее важным аспектом программного обеспечения ввода-вывода является обработка ошибок. Ошибки должны обрабатываться как можно ближе к аппаратуре. Если контроллер обнаружил ошибку чтения, он должен по возможности исправить эту ошибку сам. Если он не в силах этого сделать, тогда ошибку обязан обработать драйвер устройства, например, попытавшись прочитать блок еще раз.
Программное обеспечение ввода-вывода разбивается на 4 уровня:
Обработчики прерываний.
Драйверы устройств.
Независимый от аппаратуры код ОС.
Пользовательские программы.
Компьютерный регистр – это отдельный участок памяти внутри процессора, длина которого составляет от 8 до 32 бит. Регистр нужен для временного хранения информации, обрабатываемой самим процессором.
Инкремент, инкрементирование (от англ. increment «увеличение») — операция во многих языках программирования, увеличивающая переменную. Обратную операцию называют декремент (уменьшение).