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/ |