меняет другую, чем в реальном режиме, схему адресации, позволяющую программам использовать всю имеющуюся в ПК оперативную память. В дальнейшем я буду описывать особенности защищенного режима применительно к современным процессорам 80386, 80486 и Pentium и при необходимости упоминать об устаревших процессорах 80286, чьи возможности гораздо скромнее.
К сожалению, MS-DOS не поддерживает защищенный режим. Однако прикладные программы, стартующие под ее управлением, могут перевести процессор в этот режим и использовать все его возможности, в том числе:
• адресацию памяти до 4 Гбайт (для 80286 — до 16 Мбайт);
• аппаратную поддержку параллельно выполняемых программ (многозадачность);
• аппаратную поддержку так называемой виртуальной памяти, которая используется подобно оперативной памяти, но может существенно ее превышать (эта возможность отсутствует у процессора 80286).
8.2.1. Адресация памяти
Для адресации памяти в реальном режиме процессор использует два регистра, в одном из которых хранится сегмент, а в другом — смещение. Их совокупность определяет логический адрес памяти, физический адрес получается сдвигом содержимого регистра сегмента на 4 разряда влево и сложением полученного с содержимым регистра смещения. Такая схема реализуется аппаратно и дает 20—разрядный физический адрес в пределах первого мегабайта оперативной памяти.
В защищенном режиме также используются два регистра для логического адреса: селектор и смещение. Регистр селектора не сдвигается влево, как в реальном режиме, а указывает на один из элементов так называемой таблицы дескрипторов. В отличие от реального режима регистр смещения содержит 32 разряда, т.к. в защищенном режиме сегмент может быть любого размера вплоть до 4 Гбайт (в процессоре 80286 используется 16-разрядный регистр смещения и поэтому размер используемых в нем сегментов по—прежнему составляет 64 Кбайт). Совместное использование выбираемого селектором дескриптора и смещения в конечном счете формирует физический адрес (см. рис.8.1).
Важную роль в этой схеме играет таблица дескрипторов, 8—байтные элементы которой хранят три поля: базовый адрес, предел и поле доступа. Базовый адрес используется для получения физического адреса, предел содержит размер сегмента в байтах или страницах по 4096 байт, а поле доступа — ряд признаков, определяющих способ использования сегмента. В защищенном режиме сегменты могут быть либо сегментами кода, либо сегментами данных. В сегмент кода нельзя записывать информацию, а в сегменте данных нельзя исполнять программу или какую-либо ее часть. Тип сегмента хранится в поле доступа и, если программа нарушила правила доступа к сегменту (например, попыталась изменить собственный код), возникает аппаратное прерывание, которое обычно приводит к выгрузке программы из памяти. Другим признакоМг хранящимся в поле доступа, является уровень привилегий, которыми обладает владеющая