Организация памяти в компьютерах типа ibm pc, страница 10

В качестве примера, иллюстрирующего преимущество правильного использования верхней памяти и знания структуры памяти вообще, можно привести следующий факт. Если после загрузки DOS и необходимых драйверов устройств остаются свободными примерно 550-570 Кб ОЗУ, то при помещении ядра DOS в HMA с помощью драйвера HIMEM.SYS (или DOSHI.SYS), а также драйверов устройств в UMB посредством EMM386 или QEMM доступными для прикладных программ оказываются уже 620-635 Кб (а иногда – и больше ). Таким образом, правильное конфигурирование системы и настройка менеджеров памяти позволяет буквально из ничего выжать дополнительные 50-85 Кб (удавалось получать даже 100 Кб)!

 


Рис 3.  Структура блоков верхней памяти (UMB)

Теневая память

Теневая память (Shadow Memory) ускоряет обращение к обычно медленной постоянной памяти, такой как System BIOS или VideoROM BIOS за счет ее подмены быстрой оперативной памятью, имеющей более высокую разрядность. Теневая память подразделяется на теневую RAM (Shadow RAM) и теневую ROM (Shadow ROM). При инициализации Shadow ROM содержимое затеняемой области копируется в область теневой памяти и при дальнейшем обращении к затеняемым участкам памяти вместо реального ROM подставляется участок Shadow RAM, запись же в эту область и вовсе блокируется. Shadow ROM отличается тем, что при записи в ROM запись происходит как собственно в ROM, так и в участок затемняющей его теневой памяти. Области, используемые для затемнения постоянной памяти находятся в верхней памяти. Как правило Shadow Memory располагается в регионах C и D и представляет собой, чаще всего, копию содержимого ПЗУ различных адаптеров для убыстрения доступа к ним. Обычно включение или выключение теневой памяти осуществляется через BIOS Setup компьютера. Эту же функцию имеют и некоторые менеджеры памяти, в частности EMM386.

Особенности адресации в защищенном режиме и в среде Windows

Работа в защищенном режиме процессоров Intel, начиная с 386, имеет значительные отличия в силу используемых методов адресации памяти. Современные процессоры поддерживают концепцию т.н. виртуальных адресных пространств. Иначе говоря, все адресное пространство с точки зрения программы представляется непрерывным участком размером до 4 Гб. Эта особенность, основанная на 32-разрядной адресации памяти в этих процессорах, позволяет избежать всевозможных неудобств, связанных с сегментацией, и значительно упрощает и убыстряет обращение к памяти, поскольку требуется меньше времени для вычисления адреса (по сути дела вычисляется только смещение). Вместе с тем, указанная схема адресации имеет свои сложности. Во-первых, сам по себе виртуальный адрес в пределах 4 Гб ничего не значит, если не известно адресное пространство, которому он принадлежит (а их может быть до 16384!).  Во-вторых, поскольку объем ОЗУ на современных компьютерах, как правило, все еще сильно отстает от 4 Гб, то, даже вычислив адрес и определив его адресное пространство (контекст), необходимо определить, находится ли он в физическом ОЗУ или выгружен на диск в файл подкачки. Как правило, развитые современные операционные системы типа Windows содержат в составе своего ядра специальные компоненты, такие как, например, диспетчер защищенного режима, которые неявно обрабатывают все ситуации, связанные с вычислением адресов в защищенном режиме. Таким образом, для программ, предназначенных для работы в Windows, не существует понятия сегментации, а также описанного в предыдущих разделах распределения адресного пространства в пределах 1 Мб.