КОМПЬЮТЕРНОЕ ЖЕЛЕЗО
HARDWARE FOR PC

Архитектурные компоненты IBM PC-совместимого компьютера

В реальном режиме при переопре¬делении сегментных регистров значение базового адреса берется как 16-кратное значение, загружаемое в соответствующий сегментный регистр, а лимит устанав¬ливается в 64 Кбайт. Тем не менее, если в защищенном режиме в сегментный ре¬гистр загрузить селектор дескриптора, в котором описан сегмент размером 4 Гбайт с нулевым базовым адресом и возможностью полного доступа на любом уровне привилегий, переключиться в реальный режим и не трогать этот сегментный регистр, то далее процессор будет иметь доступ ко всему этому сегменту в данной модификации реального режима. Однако такая «благодать» распространяется

472
Глава 12. Архитектурные компоненты IBM PC-совместимого компьютера
только лишь на доступ к данным через сегментные регистры F.S и GS, которые ис¬пользуются в инструкциях обращений к памяти, снабженных префиксами заме¬ны сегмента. Эти сегментные регистры появились только с 32-разрядными про¬цессорами, и никакие традиционные сервисы BIOS (и DOS) их не затрагивают. Остальные сегментные регистры настолько часто используются, что «время жизни» описания большого сегмента в их кэширующих регистрах будет слишком корот¬ким. Программный код, увы, исполняется только из сегмента, которым командует CS, поэтому для него остается лишь первый мегабайт с 64-Кбайтными сегмента¬ми. Так что большие программные модули приходится подгружать в эту область по мере надобности, но это можно выполнять довольно быстро пересылками дан¬ных из любого места «большого сегмента». Большой реальный режим широко ис¬пользуется менеджерами памяти, а также игровыми DOS-программами, всецело захватывающими ресурсы компьютера.
Итак, самые широкие возможности адресации имеются в защищенном 32-разряд¬ном режиме, наиболее естественном для современных процессоров. В этом режи¬ме может использоваться как плоская, так и сегментная модели памяти. Под плос¬кой (flat) понимается модель, в которой все сегментные регистры указывают на один и тот же сегмент памяти (как правило, начинающийся с нулевого адреса), и его лимит может достигать 4 Гбайт, что позволяет адресовать этот немалый (даже по нынешним меркам) объем памяти без манипуляций сегментными регистрами.

Hosted by uCoz