Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Оперативная память для MS-DOS



Для операционных систем реального режима (MS-DOS) оперативная память может размещаться в стандартной области (640 Кбайт), дополнительной памя­ти и в некоторых областях UMA.

Стандартная память является самой дефицитной в PC, на ее небольшой объ­ем (типовое значение — 640 Кбайт) претендуют и BIOS, и ОС реального режи­ма, а остатки отдаются прикладному ПО. Стандартная память распределяется следующим образом:

♦ 00000h-003FFh — векторы прерываний (interrupt vectors), всего 256 двой­
ных слов;

♦ 00400h-004FFh - область переменных BIOS (BIOS data area);

♦ 00500h-00xxxh - область DOS (DOS area);

♦ 00xxxh-9FFFFh — память, предоставляемая пользователю (user RAM), все­
го до 638 Кбайт (для PS/2 Mouse область 9FC00h-9FFFFh используется как
расширение области переменных BIOS, поэтому размер пользовательской
памяти меньше).

Дополнительная память и UMA могут использоваться в качестве оперативной только со специальными программными интерфейсами, для которых были раз­работаны спецификации EMS и XMS.

Спецификация на отображаемую память (Expanded Memory Specification, EMS) — это программная спецификация на использование дополнительной па­мяти DOS-программами реального режима. Спецификация ЫМ EMS — согла­шение фирм Lotus, Intel, Microsoft на применение EMS. С помощью специаль­ных аппаратных или программных средств любая область дополнительной памяти может быть отображена на небольшие страницы, расположенные в об­ласти UMA. В первоначальном варианте можно было задействовать 4 страницы по 16 Кбайт, примыкающие друг к другу, обычно начиная с адреса DOOOOh (по­ложение страниц можно менять в пределах свободных областей UMA). Обра­щение прикладных программ к памяти EMS осуществляется через диспетчер памяти, вызываемый по прерыванию Int 67h. Программа, нуждающаяся в до­полнительной памяти, должна сначала запросить выделение области, указав ее размер в 16-килобайтных страницах. В ответ на этот запрос (если имеется сво­бодная память) диспетчер сообщает программе номер дескриптора EMS (EMS handler), по которому программа в дальнейшем будет ссылаться на выделенную ей область при управлении отображением. Далее программа через диспетчер назначает отображение требуемой логической страницы из выделенной ей об­ласти дополнительной памяти на выбранную физическую страницу, располо­женную в области UMА. После этого любые программные обращения процес­сора к физической странице, расположенной в пределах первого мегабайта, будут в действительности работать с логической страницей дополнительной памяти, расположенной выше первого мегабайта, причем без переключения в защищенный режим. Для работы с иной логической страницей требуется вы­зов диспетчера для переназначения отображения. В режиме EMS 4.0, эмулируе­мом на процессорах 386+, появилась возможность увеличения числа доступных физических страниц и отображения дополнительной памяти не только на фик­сированные области UMА, но и на любые области памяти.

Для поддержки EMS поначалу требовались специальные аппаратные средства. В компьютерах на процессорах 386 и выше появилась возможность программ­ной эмуляции EMS, которую в MS-DOS 5+ выполняет драйвер EMM386.EXE.

Система EMS в основном предназначена для хранения данных — для исполняе­мого в данный момент программного кода она неудобна, поскольку требует программного переключения страниц через каждые 16 Кбайт. Ее используют для создания виртуальных дисков, хранения очередей заданий для печати, а также для хранения данных и даже программного кода некоторых резидент­ных программ (в целях экономии стандартной памяти).

Спецификация на расширенную память (extended Memory Specification, XMS) — это иная программная спецификация на использование дополнительной памя­ти DOS-программами, разработанная компаниями Lotus, Intel, Microsoft и AST для компьютеров на процессорах класса 286 и выше. Эта спецификация позво­ляет программе получить в распоряжение одну или несколько областей допол­нительной памяти, а также задействовать область НМА. Распределением об­ластей ведает диспетчер расширенной памяти — драйвер HIMEM.SYS. Диспетчер позволяет захватить или освободить область НМА (65 520 байт, начиная с lOOOOOh), а также управлять вентилем линии адреса А20. Функции собствен­но XMS позволяют программе:

♦ определить размер максимально доступного блока памяти;

♦ захватить или освободить блок памяти;

♦ копировать данные из одного блока в другой, причем участники копирова­
ния могут быть блоками как стандартной, так и дополнительной памяти
в любых сочетаниях;

♦ заблокировать блок памяти (запретить копирование) и разблокировать его;

♦ изменить размер выделенного блока.

В ответ на запрос выделения области диспетчер выдает 16-битный номер де­скриптора блока (XMS handler), по которому выполняются дальнейшие мани­пуляции с этим блоком. Размер блока может достигать 64 Мбайт. Специфика­ция XMS позволяет программам реального режима устраивать «склады» дан­ных в дополнительной памяти, которая им непосредственно недоступна, копируя в нее и из нее данные доступных областей первого мегабайта памяти. Доступ к диспетчеру XMS осуществляется через прерывание 2Fh. Заботу о пе­реключении в защищенный режим и обратно для получения доступа к допол­нительной памяти берет на себя диспетчер. По умолчанию HIMEM.SYS позволяет использовать до 32 дескрипторов блоков, но это число можно увеличить, задав параметр /NUMHANDLES=xx в строке загрузки драйвера HIMEM.SYS.

Помимо дополнительной памяти спецификация XMS определяет пару функ­ций и для работы с блоками UMB — захватить блок требуемого размера (или определить максимально доступный блок) и освободить его.

Как видно, спецификации EMS и XMS различаются по принципу действия: в режиме EMS для доступа к дополнительной памяти выполняется отображе­ние (страничная переадресация) памяти, а в режиме XMS — копирование бло­ков данных. На компьютерах с процессорами 386+ эти спецификации мирно сосуществуют при запуске драйвера HIMEM.SYS, поверх которого может быть за­гружен драйвер EMM386.EXE, пользующийся памятью XMS для эмуляции памя­ти EMS. Память, доступная EMS и XMS, может выделяться динамически из числа дополнительной. Ключ NOEMS в строке запуска EMM386 запрещает выде­ление памяти для режима EMS.

Виртуальная память

Для ОС защищенного режима (в том числе Windows) доступна вся оперативная па­мять, причем без каких-либо ухищрений вроде описанных режимов EMS и XMS. Более того, объем памяти, доступной приложениям, благодаря механизму вирту­альной памяти может быть больше размера физической оперативной памяти.

Виртуальная память (virtual memory) представляет собой программно-аппарат­ное средство расширения пространства памяти, предоставляемой программе в качестве оперативной. Как уже было сказано в главе 1, эта память физически реализуется в оперативной и дисковой памяти под управлением соответствую­щей операционной системы. Виртуальное пространство памяти разбито на страницы фиксированного размера, а в физической оперативной памяти в каж­дый момент времени присутствует только часть из них. Остальные страницы хранятся на диске, откуда операционная система может «подкачать» их в физи­ческую память, предварительно выгрузив на диск часть не используемых в дан­ный момент модифицированных страниц. Обращение процессора к ячейке вир­туальной памяти, присутствующей в физической памяти, происходит обычным способом. Если же затребованная область в данный момент не отображена в физической памяти, процессор вырабатывает исключение (внутреннее преры­вание), по которому операционная система программно организует замещение страниц, называемое свопингом (swapping). Виртуальную память поддержива­ют процессоры, работающие в защищенном режиме, начиная с 80286, но реаль­но ее широко стали применять только в операционных системах и оболочках для 32-разрядных процессоров (80386+)- Виртуальная память используется лишь при наличии дополнительной памяти.

Суммарный объем виртуальной памяти, доступной всем приложениям, опреде­ляется объемом ОЗУ и файлов подкачки (их может быть и несколько). Объем файла подкачки может быть постоянным или же изменяться динамически по мере изменения потребностей системы. Для того чтобы приложениям хватало памяти, на диске, несущем динамический файл подкачки, должно быть доста­точно свободного пространства (десятки и сотни мегабайт). В принципе, файл подкачки может располагаться и на сетевом диске, но при этом трафик сети оказывается напряженным. Конечно же, важен и объем установленной физиче­ской памяти — ее нехватка может быть принципиальным ограничением на за­пуск ряда приложений или установку операционных систем. При малом объеме ОЗУ свопинг (подкачка страниц) оказывается слишком интенсивным, в ре­зультате чего скорость работы приложений существенно снижается (обраще­ния к диску выполняются на несколько порядков медленнее, чем к ОЗУ). При­ложения реального времени (например, аудио- и видеопроигрыватели и тем более кодеры) могут стать неработоспособными именно из-за малого объема ОЗУ. Поскольку файл подкачки изменяет свой размер в процессе работы, важ­но следить за фрагментацией диска, несущего этот файл, — обращение к фраг-ментированному файлу выполняется медленнее, чем к нефрагментированному.

При выборе диска для размещения файла подкачки следует учитывать его быстро­действие — время доступа и скорость передачи данных. При использовании при­ложений реального времени, интенсивно обменивающихся с дисками (те же про­игрыватели и кодеры, а также программы, записывающие компакт-диски), файл подкачки и данные, с которыми работают эти приложения, по возможности следует размещать на разных дисках.

ВНИМАНИЕ ------------------------------------------------------------------------------------------------------

Если на компьютере под управлением ОС защищенного режима (Windows, Unix, OS/2...) перестают запускаться приложения с сообщениями о недостаточном объ­еме оперативной памяти — проверьте, есть ли свободное место на жестких дис­ках, используемых для подкачки.

Увеличение физического объема оперативной памяти в ряде случаев может привести к неожиданному снижению производительности компьютера. Это воз­можно, когда системная плата (или процессор с вторичным кэшем) не способна кэшировать весь объем ОЗУ. У многих системных плат для процессоров Pentium кэшировались только первые 64 Мбайт ОЗУ; у первых процессоров Pentium II кэшировались только 512 Мбайт. Память, выходящая за размеры кэ-шируемой области, конечно же, доступна, но ее производительность гораздо ниже производительности кэшируемой. ОС Windows 9x распределяет доступ­ную память, начиная с ее верхней границы, причем наверх попадает ее ядро, скорость работы которого существенна для многих приложений. Если после увеличения ОЗУ ядро попадает в некэшируемую область, можно наблюдать снижение производительности. Для «лечения этого недуга» можно воспользо­ваться условно бесплатной программой W2CACHE.COM, которая запускается в начале загрузки Windows и, оставаясь резидентной, «съедает» верхнюю часть памяти, заставляя ядро Windows загружаться в нижнюю, кэшируемую область. После окончания загрузки Windows программа освобождает занимаемую па­мять, и ОС отдает ее в распоряжение приложений.

Вопросы организации виртуальной памяти в основном относятся к области системного программного обеспечения (ядра операционной системы). Аппарат­ные механизмы, обеспечивающие поддержку виртуальной памяти процессором, рассмотрены в главе 7. Здесь отметим, что использование виртуальной памяти с подкачкой страниц порождает проблему согласованного видения памяти раз­нообразными активными компонентами ПК: процессором, графическим аксе­лератором и контроллерами ввода-вывода (адаптерами локальных сетей, кон­троллерами устройств хранения, шин USB и FireWire). Суть проблемы в том, что программа (и программист) оперируют виртуальными адресами, а устрой­ства на системной шине оперируют физическими адресами. Что из этого следу­ет, подробнее рассматривается в 5.1.

 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.