Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
25_Структура_оперативной_п...doc
Скачиваний:
9
Добавлен:
21.09.2019
Размер:
100.86 Кб
Скачать

Тема: Управление памятью

  1. Структура оперативной памяти DOS

  2. Эффективное использование памяти

  1. Структура оперативной памяти dos

MS-DOS создавалась для микропроцессора Intel-8088, который мог работать только с одним Мбайтом памяти. Из этого Мбайта 384 Кбайта были зарезервированы для хра­нения BIOS и использования содержащимися в компьютере контроллерами. Так что для DOS, драйверов, резидентных программ и запускаемых пользователем прикладных программ можно было использовать лишь 640 Кбайт оперативной памяти, а этого ко­личества очень скоро стало не хватать.

Вскоре после появления MS - DOS были выпущены микропроцессоры, умеющие обра­щаться с гораздо большим количеством памяти (Intel-80286 — с 16 Мбайтами, Intel -80386 — с 4 Гбайтами). Но заложенные в MS-DOS принципиальные ограничения не позволяли DOS и DOS-программам использовать память сверх 640 Кбайт. Для обхода этих ограничений пришлось разрабатывать различные способы и трюки, которых было придумано достаточно много.

Адресное пространство IBM-совместимых ПК логически делится на три области:

  1. область стандартной памяти (CMA – Conventional Memory Area);

  2. область верхней (старшей) памяти (UMA – Upper Memory Area);

  3. область расширенной (дополнительной) памяти (XMA – eXtended Memory Area);

Логическая структура адресного пространства

Стандартная память имеет диапазон адресов от 0 до 640К-1 (где К=1024). В ней логически размещается стандартная память. Стандартная память имеется в ПК всегда, потому что она необходима всем приложениям, работающим в системе MS-DOS.

Область верхней памяти находится в диапазоне от 640К до 1М-1 (где М=1024К). Ее размер равен 384 Кбайт. В этой области содержится видеопамять и постоянная память BIOS, а также могут размещаться дополнительные модули постоянной и оперативной памяти, конструктивно находящиеся в адаптерах ПУ. Неиспользуемые участки UMA называются блоками верхней памяти. В компьютерах с процессором 8038 или выше блоки старшей памяти могут использоваться для размещения резидентных программ и драйверов устройств.

Область расширенной памяти располагается после UMA в диапазоне адресов от 1М до UB-1, где UB – количество ячеек (байтов) в адресном пространстве микропроцессора. Для процессоров 8088/86 UB=1M, для 80286 и 80386SX оно составляет 16М, а для процессоров 80386DX и выше – 4Г (где Г=1024М).

Сама DOS без дополнительных драйверов может адресовать только 1М адресное пространство. Это связано с тем, что первоначально она была разработана для МП 8088/86 и поэтому могла использовать для адресации ячеек памяти 20 разрядов. Таким образом, для ОС доступной становится лишь 220 Байт, т.е. 1 МБ.

Стандартная память

Стандартная память может использоваться DOS без каких-либо ограничений: для хранения как выполняемых программ, так и данных любой природы. Сама DOS также размещается в этой памяти.

Стандартная память распределяется блоками (сегментами).

Блоком памяти называется ее непрерывный фрагмент, выделяемый для хранения загружаемой на выполнение программы или данных во время ее выполнения. Сформированные для программы блоки необязательно должны быть смежными. Блоки памяти всегда выделяются в начале ее свободной области. Первые 16 байтов каждого блока памяти отводятся под блок управления памятью (MCB – Memory Control Block). MCM описывает размер блока памяти и указывает владельца (программу, которой выделен блок), а также обеспечивает связь со следующим блоком памяти. Таким образом, все MCB связываются в цепочку, что обеспечивает возможность управления памятью. Подробнее об MCB см. в файле glava3, с.5.

Когда DOS запускает программу, система сначала выделяет блок памяти для своего окружения (Environment), которая передается программе, а затем – весь остаток памяти для самой программы.

Программа в ходе выполнения может уменьшить размер выделенного под ее код блока, а резидентная программа просто обязана это сделать. После завершения нерезидентной программы занятые ею блоки памяти освобождаются. Поэтому если после загрузки нерезидентной программы была загружена резидентная память, то это может привести к фрагментации памяти. Поэтому установку резидентов нужно тщательно планировать.

Например, если в основную память были загружены программы в таком порядке: драйвер мыши Mouse.com, оболочка Norton Commander, а из нее был запущен русификатор Keyrus, то после выхода из NC основная память будет дефрагментирована – после выгрузки NC останется “дыра”. Причем, после повторного запуска NC, MS-DOS не разместит его в этой области, а поместит после русификатора. Это происходит потому, что MS-DOS запоминает лишь адрес начала свободной области.