RU/2: Форум. Общение пользователей и разработчиков OS/2 (eCS). : Ответить на сообщение
Имя:
e-mail:
FIDO:
Home page:
сохранить данные о вас
Тема:
> > > MemoryControl() -- это немного из другой оперы. Вообще, микроядро не оперирует сегментами -- оно оперирует страницами памяти -- flexpages. MemoryControl() позволяет задавать атрибуты страниц памяти. Для IA32 это: Default, Uncacheable, Write Combining, Write Through, Write Protected, Write Back. -- как я понял, это относится к кешируемости. К атрибутам сегментов это не имеет отношения. > > > > Тогда я ещё меньше понимаю. Те сегменты, в которых само микроядро находится - они откуда взялись? А если GDT и таблицами трансляции логических адресов на физические ведает не микроядро, то выходит, что в них может ковыряться любой желающий? > > > > По-видимому, не каждый желающий, если системный вызов, оперирующий GDT/LDT, является привилегированным (а это наверняка так). То есть, кто попало его не вызовет, а может только rootserver по запросу других задач. Причем, rootserver уже решает, кому отказать в доступе, а кому -- нет. В случае проекта Afterburner, rootserver -- это менеджер ресурсов marzipan, а wedge (монитор виртуальной машины) может за ОС, работающую в VM, делать запросы к marzipan (например, "добавить такой-то дескриптор в GDT"). Если такой запрос сделает "левая" задача внутри ОС (которая внутри VM), то возникнет TRAP, который не обработается wedge, если это был непатченный afterburner'ом код.
__, _, __, _,_ _, _
|_ / \ |_) | | |\/|
| \ / | \ | | | |
~ ~ ~ ~ `~' ~ ~
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.