LINUX.ORG.RU

История изменений

Исправление alman, (текущая версия) :

Многие действия в Ring 3 совершать запрещено (за подробностями читай интелловские мануалы).

Да, но... привелегированные команды не нужны в драйверах устройств. Задача драйвера (в общем случае) - получить прерывание, прочитать статус устройства, обработать его, сообщить о результате ядру.

Если ты хочешь вынести все драйверы в Ring 3, то ты теряешь в скорости из-за IPC и необходимости переключения контекста.

Давай рассмотрим Mac OS X из картинки, которую я привёл выше. Файловая система исполняется не в Ring 0. Допустим, драйвер внешнего накопителя выполняется в контексте микроядра. Где профит, если после операции чтения/записи блоков, управление должно быть передано файловой системе, т.е. выход из Ring0 все же происходит?

Исходная версия alman, :

Многие действия в Ring 3 совершать запрещено (за подробностями читай интелловские мануалы).

Да, но... привелегированные команды не нужны в драйверах устройств. Задача драйвера (в общем случае) - получить прерывание, прочитать статус устройства, обработать его, сообщить о результате ядру.

Если ты хочешь вынести все драйверы в Ring 3, то ты теряешь в скорости из-за IPC и необходимости переключения контекста.

Давай рассмотрим Mac OS X из картинки, которую я привёл выше. Файловая система исполняется не в Ring 0, а как процесс. Допустим, драйвер внешнего накопителя выполняется в контексте микроядра. Где профит, если после операции чтения/записи блоков, управление должно быть передано файловой системе, т.е. выход из Ring0 все же происходит?