Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Инициализация адресного пространстава для процесса

6.0K
02 ноября 2007 года
artyom-tyanutov
107 / / 10.07.2006
В общем как создать PDE + PTE для нового процесса???
PDE то проблемы нету, выделилил page и все, но ведь PTE надо монтировать для последующего монтирования страниц в них же из создаваемого процесса!!!
А вновь созданная PDE пуста, и получается что я не могу примонтировать PTE в создаваемом процессе без PTE, тоесть тут замкнутый круг получается!!!

З.Ы.: Дайте, пожалуйста, ссылку на русский мануал Intel'а!
349
03 ноября 2007 года
Phantom-84
656 / / 27.10.2005
Вновь создаваемый каталог страниц не должен быть пустым, т.к. в нем сразу нужно проинициализировать глобальные входы, благодаря которым в новом процессе сможет выполняться код ядра. Для этого страницу, выделенную для каталога страниц нового процесса, ты предварительно должен примонтировать к уже имеющемуся адресному пространству, например, к пространству родительского процесса для вновь создаваемого.
6.0K
03 ноября 2007 года
artyom-tyanutov
107 / / 10.07.2006
Да, это без проблем!
Кажется причина еще раньше - допустим такая ситуация:
Ядро загрузилось, инициализировало paging, и тут ему необходимо память выделить - 1 PTE хватает на 4 метра, а если оно заполнело всю память разом и чтобы создать еще PTE нету места в существующей чтобы в неё что-то писать!!!
Как это предотвратить???
У меня просто на случай отсутствия PTE в PDE стоит выделение страницы под неё, но как я упомянул памяти навалом, хоть завались, а примонтировать её некуда!!!
Как это делается в существующих ОС???
349
03 ноября 2007 года
Phantom-84
656 / / 27.10.2005
Не знаю, как это делается в "существующих осях", но точно знаю, что память нужно прикреплять к адресным пространствам только по мере необходимости. У меня, например, для порождения новых процессов в области локальных данных ядра зарезервирован специальный фрейм, через который я формирую участки таблицы страниц (каталог страниц у меня является частью 4-мегабайтной таблицы страниц) для вновь создаваемых процессов. После того как страницы размечаются через фрейм, я их отключаю от родительского процесса, чтобы этот фрейм можно было использовать для порождения других дочерних процессов.
349
03 ноября 2007 года
Phantom-84
656 / / 27.10.2005
По идее у отдельно взятого процесса должно быть "навалом" места, куда можно примонтировать необходимую память! А чтобы была возможность монтировать память в контексте процесса, таблица страниц для этого процесса (включая каталог) также должна отображать в его адресном пространстве! В контексте родителя формируются только необходимые на начальном этапе фрагменты таблицы страниц для нового процесса. Далее работа с таблицей страниц выполняется уже в контексте владельца этой таблицы страниц. Например, у меня во всех процессах последние 4 Мб вирт. адресного пространства зарезервированы для таблицы страниц, в которой последние 4 Кб являются одновременно каталогом страниц и транс-страницей для всей 4-мегабайтной таблицы страниц. После создания процесса все манипуляции с его адресным пространством выполняются через эту таблицу, естественно, в контексте данного процесса.
6.0K
03 ноября 2007 года
artyom-tyanutov
107 / / 10.07.2006
Тоесть у тебя у каждого процесса птешок на все 4 Гб зарезервированно?
349
03 ноября 2007 года
Phantom-84
656 / / 27.10.2005
Естественно, нет! Только место для них!
6.0K
03 ноября 2007 года
artyom-tyanutov
107 / / 10.07.2006
Цитата: Phantom-84
Естественно, нет! Только место для них!



Хм, а что!
4 последних метра да еще и с PDE+PTE шкой позволит упростить многое!
Не возражаешь, если я позаимствую эту идею???

349
03 ноября 2007 года
Phantom-84
656 / / 27.10.2005
Мне не жалко :D
6.0K
03 ноября 2007 года
artyom-tyanutov
107 / / 10.07.2006
Спасибо!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог