RU/2: Форум. Общение пользователей и разработчиков OS/2 (eCS). : Ответить на сообщение
Имя:
e-mail:
FIDO:
Home page:
сохранить данные о вас
Тема:
> >> Не забывай, что драйверы в твоём проекте грузит OS/2, а привилегии сегментам раздаёт микроядро, ничего про OS/2 не знающее. Оно же понятия не имеет, что вот в этот вот кусочек памяти находится драйвер, которому к портам лазить нужно. > > > > Не самО микроядро, а некий сервер (уже получивший эти ресурсы ранее у микроядра и сервера sigma0). > > Я полагал, что сервер делает это не сам, а вызывает функцию микроядра MemoryControl. Я не прав? > Ладно, в любом случае упомянутый тобой сервер находится точно в таком же положении - он тоже понятия не имеет, кто это к порту ломится. > Поясняю мысль: есть некий кусок памяти (линейной), выделенной под исполнение виртуальной OS/2. В самОй хостовой системе есть какие-то компоненты, ответственные за этот кусок. Но гостевая OS/2 для них - чёрный ящик, а это значит, что они ничего не знают о принадлежности каждого отдельно взятого байта рассматриваемого куска памяти к тому или иному компоненту OS/2. Для них вся OS/2 - одно монолитное приложение. > > > Надо придумать, как за саму OS/2 сделать запрос этих портов и прочих ресурсов у сервера-менеджера ресурсов. > > Проблема, как мне представляется, не в том, как запросить, а в том, как позволить лазить к портам только конкретному драйверу и запретить всем остальным. > > > (OS/2 не знает, что надо запросить эти ресурсы, но (в случае L4Linux) linux-то как-то знает, что ему надо запросить ресурсы, и запрашивает. Я думаю, аналогично линуксу можно сделать и с OS/2) > > Линукс (в том числе и драйверы) патчится на уровне исходных текстов, поэтому гипервизор имеет информацию о том, какой именно модуль обращается за ресурсом. > > >>> Пейджер может решить отобразить i/o flexpages в адресное пространство приложения, и тогда доступ к порту появится, и операция in/out будет успешной. > >> > >> Но пейджер - он вне OS/2, И он не знает, осевой драйвер это к порту лезет или кто другой. Что делать? Разрешать этот доступ всем без исключения? > > > > Нет, OS/2 сама модифицируется (наверное, Afterburner'ом) так, что она запрашивает ресурсы у этого пейджера. > > А толку от модификации? Драйверы лазают к портам управляемых ими устройств, ни у кого позволения не спрашивая. > > > Как я понимаю, для каждого ресурса (область памяти или кусок пространства портов) сервер-менеджер ресурсов следует политике "серверу, первому запрашивающему ресурс, отдать этот ресурс, а остальным отказать в доступе". Ресурсы в проекте L4Ka Virtualization раздает сервер marzipan resource monitor. В случае Линукса, мы явно указываем, кроме того, сколько памяти отдать линуксу, и ограничиваем прочие ресурсы -- через команднуб строку marzipan. Аналогично можно сделать и с OS/2. > > Это ограничить можно, но обрати внимание - я говорю не о том, как не дать доступа к портам никому, кроме OS/2, а о том, как внутри OS/2 позволить лазить к портам толко тем, кому требуется, и не дать это делать никому другому. > На самом деле проблема не столь критична (можно просто считать, что никто посторонний туда не лазает - раз в настоящей OS/2 всё работает), но из того, что OS/2 для виртуализатора - чёрный ящик, вытекает ещё одна проблема, куда как более существенная, и её решения я пока не вижу. > > > Пока насчет 16-битгного кода не все ясно, но, как уже подсказали, микроядро L4/Fiasco позволяет отдавать usermode-программам некоторые селекторы в GDT. > > И? У нас ведь проблема: для отдельных частей уже выделенного микроядром большого 32-разрядного сегмента наплодить 16-разрядных алиасов. Это совсем не то же самое, что править дескриптор того большого сегмента. >
__, _,_ __, _,_ _,
|_) | | | \ | / /_\
| \ | | |_/ |/ | |
~ ~ `~' ~ ~ ~ ~
Programmed by
Dmitri Maximovich
,
Dmitry I. Platonoff
,
Eugen Kuleshov
.
25.09.99 (c) 1999,
RU/2
. All rights reserved.
Rewritten by
Dmitry Ban
. All rights ignored.