OSDev

для всех
Текущее время: 29 апр 2024, 11:55

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




Начать новую тему Ответить на тему  [ Сообщений: 38 ]  На страницу Пред.  1, 2, 3, 4
Автор Сообщение
СообщениеДобавлено: 29 окт 2010, 12:17 

Зарегистрирован: 22 окт 2010, 13:22
Сообщения: 92
Откуда: Ртищево
phantom-84, эффективнее всё же оставлять последние элементы в таблице под код ядра операционной системы?

Я вот тут мы говорим про 4 ГБ для задачи (не учитывая последние адреса под код ядра операционной системы), но я где-то читал что для задачи можно виртуально выделить 16 ГБ. Это как же?

_________________
Изучаю процессор...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 29 окт 2010, 13:18 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
s3dworld писал(а):
эффективнее всё же оставлять последние элементы в таблице под код ядра операционной системы?
Не понял вопроса. Естественно, область ядра лучше делать над областью приложения, но это не означает, что код должен быть в самом конце. У меня например код ядра находится практически в самом начале области ядра и в 2G-ядре по сути располагается в середине виртуального адресного пространства.

Цитата:
Я вот тут мы говорим про 4 ГБ для задачи (не учитывая последние адреса под код ядра операционной системы), но я где-то читал что для задачи можно виртуально выделить 16 ГБ. Это как же?
В виндах есть фишка подключать к одной и той же области вирт. пространства разные участки физической памяти, причем управлять этим на па прикладном уровне.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 29 окт 2010, 13:37 

Зарегистрирован: 22 окт 2010, 13:22
Сообщения: 92
Откуда: Ртищево
Физически код ядра операционной системы я могу расположить где угодно. А вот индекс странички, которая указывает на область физической памяти где лежит код ядра, нужно чтобы всегда был постоянным. А если этот индекс будет ближе к концу диапазона индексов (к значению 1023), то для программы будет отведено больше виртуальной памяти.

Правильно я понимаю?

_________________
Изучаю процессор...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 29 окт 2010, 13:49 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
Да. Только тогда для ядра останется меньше памяти. А ядру нужен большой запас пространства на случай большого количества загружаемых драйверов, работающих процессов и потоков, открытых файлов и т.п.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 29 окт 2010, 13:51 

Зарегистрирован: 22 окт 2010, 13:22
Сообщения: 92
Откуда: Ртищево
phantom-84
Спасибо! Получается что "быстренько" изучаем x86 и отрываемся на x64 (там то памяти хватит для всего).

_________________
Изучаю процессор...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 29 окт 2010, 14:01 

Зарегистрирован: 22 окт 2010, 13:22
Сообщения: 92
Откуда: Ртищево
phantom-84
Так это для 64-битной адресации получается как-то так:

- страничка 4 КБ = 9 бит (каталог1) + 9 бит (каталог2)+ 9 бит (каталог3)+ 9 бит (страница) + 28 бит (это смещение?)
- страничка 2 МБ = 9 бит (каталог1) + 9 бит (каталог2) + 9 бит (страница) + 37 бит (это смещение?)

Для смещения в 4 КБ, достаточно 12 бит. Для указания индекса в 512, достаточно 9 бит. Для смещения в 2 МБ, достаточно 21 бита.

Если честно, не складывается у меня. Какие-то есть нюансы?

_________________
Изучаю процессор...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 29 окт 2010, 14:30 

Зарегистрирован: 10 май 2007, 11:33
Сообщения: 1206
Вообще-то тебя умные люди к руководству Интел отправляли. Чтобы это посмотреть, знание английского не требуется. Там есть картинки. Ну, так уж и быть, отвечу...

Насколько я знаю, сейчас из линейного 64-разрядного адреса используются только младшие 48 бит. Получается:

4 кб: 9-9-9-9-12
2 мб: 9-9-9-21


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 29 окт 2010, 21:03 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
s3dworld писал(а):
phantom-84, эффективнее всё же оставлять последние элементы в таблице под код ядра операционной системы?

Ядро потеряется, если при переключении корня страниц изменится отображение ядра.
Стоит заметить, что для ускорения страничного механизма, специально для страниц ядра существует атрибут Global (0x100), делающий эти страницы сохраняемыми в страничном кэше при переключении корневого адреса в CR3.
Также в глобальной видимости делают не только ядро, но и некий объём виртуальной памяти, в которой работают драйвера, разные сервисы и библиотеки.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 38 ]  На страницу Пред.  1, 2, 3, 4

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


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

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


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

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