История изменений
Исправление alman, (текущая версия) :
Многие действия в Ring 3 совершать запрещено (за подробностями читай интелловские мануалы).
Да, но... привелегированные команды не нужны в драйверах устройств. Задача драйвера (в общем случае) - получить прерывание, прочитать статус устройства, обработать его, сообщить о результате ядру.
Если ты хочешь вынести все драйверы в Ring 3, то ты теряешь в скорости из-за IPC и необходимости переключения контекста.
Давай рассмотрим Mac OS X из картинки, которую я привёл выше. Файловая система исполняется не в Ring 0. Допустим, драйвер внешнего накопителя выполняется в контексте микроядра. Где профит, если после операции чтения/записи блоков, управление должно быть передано файловой системе, т.е. выход из Ring0 все же происходит?
Исходная версия alman, :
Многие действия в Ring 3 совершать запрещено (за подробностями читай интелловские мануалы).
Да, но... привелегированные команды не нужны в драйверах устройств. Задача драйвера (в общем случае) - получить прерывание, прочитать статус устройства, обработать его, сообщить о результате ядру.
Если ты хочешь вынести все драйверы в Ring 3, то ты теряешь в скорости из-за IPC и необходимости переключения контекста.
Давай рассмотрим Mac OS X из картинки, которую я привёл выше. Файловая система исполняется не в Ring 0, а как процесс. Допустим, драйвер внешнего накопителя выполняется в контексте микроядра. Где профит, если после операции чтения/записи блоков, управление должно быть передано файловой системе, т.е. выход из Ring0 все же происходит?