Реклама:

Как вам уже известно, наборы команд на уровне архитектуры команд и на уровне микроархитектуры совершенно разные. Различаются не только сами команды, но и их форматы, а некоторые совпадения совершенно случайны.

Набор команд уровня операционной системы содержит большую часть команд уровня архитектуры команд, а также несколько новых очень важных команд. В то же время некоторые ненужные команды на уровне операционной системы не поддерживаются. Ввод-вывод - это одна из областей, в которых эти два уровня отличаются очень значительно. Причина таких различий проста. Во-первых, пользователь, способный выполнять команды ввода-вывода уровня архитектуры команд, может считать конфиденциальную информацию, хранящуюся где-нибудь в "дебрях" операционной системы, и вообще потенциально представляет для системы угрозу. Во-вторых, нормальный программист совершенно не горит желанием реализовать ввод-вывод на уровне архитектуры команд, поскольку это слишком сложно и утомительно. Вместо этого для ввода-вывода можно просто установить определенные поля и биты в ряде регистров устройств, затем подождать, пока операция закончится, и проверить, что произошло. Обычно биты регистров дисковых устройств позволяют обнаруживать следующие ошибки:

+ аппаратура диска не смогла выполнить позиционирование;

+ несуществующий элемент памяти определен как буфер;

+ процесс ввода-вывода с диска (на диск) начался до того, как закончился предыдущий;

4- ошибка синхронизации при считывании;

4- обращение к несуществующему диску;

4- обращение к несуществующему цилиндру;

4- обращение к несуществующему сектору;

4- несоответствие контрольных сумм при считывании;

4- ошибка проверки записи.

При наличии одной из этих ошибок устанавливается соответствующий бит в регистре устройства.

Виртуальная память и кэширование || Оглавление || Файлы