OSDev

для всех
Текущее время: 25 сен 2018, 18:11

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: MMIO
СообщениеДобавлено: 29 май 2010, 22:43 

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MMIO
СообщениеДобавлено: 30 май 2010, 00:12 

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MMIO
СообщениеДобавлено: 30 май 2010, 00:35 

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MMIO
СообщениеДобавлено: 30 май 2010, 01:37 

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MMIO
СообщениеДобавлено: 30 май 2010, 03:18 

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MMIO
СообщениеДобавлено: 01 июн 2010, 16:58 

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: MMIO
СообщениеДобавлено: 01 июн 2010, 19:50 

Зарегистрирован: 25 май 2010, 20:58
Сообщения: 136
Я тож экзоядрами интересуюсь. Теории уйма, а практики нет. Вот хочу попробовать сам, как это:)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB