Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Форт-подобная машина Владимира Кладова


Страницы:   1 2

homm ©   (2007-02-17 14:05:00) 

Итак, завел отдельную ветку :)

для тех, кто все еще в танке:
http://kolmck.net/sf/architecture_contrary_to.zip

Все-же есть вопросы. Правильно ли я понимаю, что мы получаем в распоряжение ровно половину памяти от всего имеющегося объема? Остальная идет на описание правд доступа к первой половине в виде 4-х байтных дескрипторов для каждых 4-х байт в основной памяти. Но у каждого процесса должны быть свои права доступа к памяти, соответсвенно такая таблица нужна для каждого процесса? Или я чего-то не догоняю?


Vladimir Kladov   (2007-02-17 16:01:00) [21]

я так понял, что вы не поняли, что дескрипторы в теневой половине памяти - это не таблица прав доступа, а именно дескрипторы, т.е. числа. Они задают принадлежность 1, 2, 3 или 4 байт из основной памяти тому или иному множеству (остальные 3, 2, 1 или 0 недоступны вообще - так обеспечивается точность защиты до 1 байта). А в таблице прав для каждого процесса задаются для каждого из <= 2**20 дескрипторов соответствующие права, по 2 бита на дескриптор. Дескриптор можно считать неким числом, которое выделяется просто по порядку номеров, или из массива свободных дескрипторов. А вот для множества дескрипторов с 0 по N у процесса должны быть выставлены права в его таблице прав доступа. Проще, наверное, представить по аналогии в винде какой-нибудь общий ресурс типа memory mapped file. Его дескриптор - это просто число. Права на доступ от каждого процесса система хранит у себя, вместе с описанием открытого маппированного "файла". Ну или можно попробовать представить себе процедуру проверки прав доступа. Берем из теневой памяти дескриптор, из таблицы AccessT  текущего процесса смотрим на 2х-битный набор флажков с соответствующим номером, получаем 2 бита прав доступа.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо