как xv6 использует прерывания для планирования запросов ввода-вывода на диск

В общем, я только начал изучать xv6 и то, как он работает. На данный момент я особенно интересуюсь прерываниями и ide.c.

Я знаю, что исходный код xv6 включает рабочий драйвер IDE в ide.c. Кроме того, этот IDE-диск представляет собой простой интерфейс к дисковой системе, состоящий из четырех типов регистров: контрольный, командный блок, статус и ошибка. Эти регистры доступны при чтении или записи по определенным адресам ввода-вывода с использованием инструкций ввода-вывода.

Что я изо всех сил пытаюсь понять, так это то, как операционная система xv6 использует прерывания для планирования запросов ввода-вывода на диск?


person Dan Murphy    schedule 05.04.2019    source источник


Ответы (1)


xv6 не использует прерывания для планирования запросов ввода-вывода, но использует прерывания для получения событий «выполненной работы» из дисковой IDE. После получения прерывания ядро ​​проверяет, успешно ли завершилась операция, и обновляет соответствующую структуру buf.

Команды сборки in и out используются ядром xv6 для управления дисковой IDE новыми инструкциями и для получения данных, когда он был уведомлен о готовности, когда IDE вызывает ЦП с помощью прерывания.

person Omer Efrat    schedule 06.04.2019