Тема: Sysbin.com
Показать сообщение отдельно
  #13  
Старый 16.12.2011, 17:37
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

GDT - это таблица дескрипторов, в ней можно делать дескрипторы с любой базой и любым размером. Никто не запрещает, имея 32 мегабайта оперативки, сделать дескриптор с пределом в 4 гигабайта. И наоборот тоже можно.
Своп вообще относится к технологии виртуальной памяти и фактически заключается в выгрузке из памяти наименее используемых страниц. Например, на компе стоит 512 мегов оперативки. Для каждого процесса существует 4 гига виртуальной памяти. Но процесс же не использует их все одновременно. Вот те страницы (обычно по 4КБ), которые используются редко, выгружаются на диск, а те, которые не используются вовсе - вообще не существуют ни в оперативке, ни на диске (пока их не выделят чем-то типа VirtualAlloc).
А объем физической оперативки вычисляется либо варварским способом (пишем в разные места памяти число, считываем оттуда же, если совпало - значит оперативка в этом месте есть), либо одним из нормальных способов.

Количество GDT всегда равно одному. Количество дескрипторов в ней может меняться. Можно описать всю память одним дескриптором, а можно описывать по частям, причем формально никто не обязывает описывать всю память (правда в этом нет смысла). А если говорить про x64 - так там сегментные дескрипторы имеют только флаги, все остальные поля игнорируются и считается, что начало сегмента в нуле и конец в максимальном поддерживаемом процессором адресе.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием