OSDev
http://osdev.su/

MMIO
http://osdev.su/viewtopic.php?f=5&t=323
Страница 1 из 1

Автор:  Mr.McD. [ 29 май 2010, 22:43 ]
Заголовок сообщения:  MMIO

Во многих современных пособиях по теории операционных систем можно встретить метод работы с устройствами называемый "Ввод-выдод отображённый в память" (Memmory Mapped Input/Output). Имеет-ли кто нибудь опыт работы с данным методом? В частности интересен вопрос его "охвата", и пременимости. А в случае со страничной организацией памяти? -Как происходит привязка регистров устройств к физическим страницам? Поделитесь мнением...

Автор:  SII [ 30 май 2010, 00:12 ]
Заголовок сообщения:  Re: MMIO

Назначение адресов производится по правилам, определяемым спецификацией соответствующей шины (PCI/PCI Express в случае ПК). Никаких страниц памяти для устройств не существует в принципе -- для них есть лишь физические адреса, ну а как будет произведено распределение -- личное дело конфигурационного ПО (BIOS или ОС), лишь бы каждому физическому адресу соответствовало не более одного регистра одного устройства.

Автор:  Mr.McD. [ 30 май 2010, 00:35 ]
Заголовок сообщения:  Re: MMIO

Ясно. С привязкой к страницам я, конечно, загнул)) Что выравнивать по границам страниц придётся ручками, оно понятно, только вопрос в том, как выглядет процедура "привязки". Это, наверное, с контроллером устройства договорится надо? И ещё, если "физическую" страницу, с отображёнными в неё регистрами устройства включить в адресное пространство процесса пользовательского уровня, будет ли он иметь доступ к устройству?

Автор:  SII [ 30 май 2010, 01:37 ]
Заголовок сообщения:  Re: MMIO

К чему будет иметь доступ текущая выполняемая процессором программа, зависит исключительно от настройки MMU. Отобразили какие-то виртуальные адреса на физические, в которых находится устройство, дали права доступа -- значит, есть доступ, не отобразили/не дали -- нет доступа.

Что же касается настройки устройств, читайте соответствующие спецификации. Сложного там ничего нет.

Автор:  Mr.McD. [ 30 май 2010, 03:18 ]
Заголовок сообщения:  Re: MMIO

Спасибо, поищу. Я вот зачем спросил: если регистры какого-нить устройства (допустим звучки) отобразить в адресном пространстве драйвера звуковой карты, находящегося в пространстве пользователя (в микрокернеле), исключить, тем-самым необходимость в постоянном переключении в режим ядра для чтения/записи регистров. А на ядро возложить нелёгкую ношу отображения регистров в память, и включение/выключение соответствующих им страниц в пр-ва пользовательских процессов. Ну и конечно неплохо-бы синхронизировать это дело и доступ разделять. Вобщем, потехи ради:)

Автор:  Himik [ 01 июн 2010, 16:58 ]
Заголовок сообщения:  Re: MMIO

Mr.McD., это нормальная практика в так называемых ExoKernel (экзоядро). А операционные системы такой архитектуры ещё называют LibOS (библиотечная ОС), где ядро только распределяет порты, а приложения или библиотеки работают с ними напрямую. Я тоже сторонник такой архитектуры.

Автор:  Mr.McD. [ 01 июн 2010, 19:50 ]
Заголовок сообщения:  Re: MMIO

Я тож экзоядрами интересуюсь. Теории уйма, а практики нет. Вот хочу попробовать сам, как это:)

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/