Смекни!
smekni.com

Организационно-методические указания по проведению занятия (стр. 6 из 7)

Вторая часть памяти отводится для размещения программных модулей самой MS-DOS и для программ пользователя. Рассмотрим их размещение чуть ниже. Здесь, однако, заметим, что эта область памяти называется Conventional Memory (основная, стандартная память).

Наконец, третья часть адресного пространства отведена для постоянных запоминающих устройств и функционирования некоторых устройств ввода/вывода. Эта область памяти получила название UMA (upper memory areas – область верхней памяти).

В младших адресах основной памяти размещается то, что можно назвать ядром этой ОС – системные переменные, основные программные модули, блоки данных для буферирования операций ввода/вывода. Для управления устройствами, драйверы которых не входят в базовую подсистему ввода/вывода, загружаются так называемые загружаемые (или инсталлируемые) драйверы. Перечень инсталлируемых драйверов определяется специальным конфигурационным файлом CONFIG.SYS. После загрузки расширения BIOS – файла IO.SYS – последний (загрузив модуль MSDOS.SYS) считывает файл CONFIG.SYS и уже в соответствии с ним подгружает в память необходимые драйверы. Кстати, в конфигурационном файле CONFIG.SYS могут иметься и операторы, указывающие на количество буферов, отводимых для ускорения операций ввода/вывода, и на количество файлов, которые могут обрабатываться (для работы с файлами необходимо зарезервировать место в памяти для хранения управляющих структур, с помощью которых выполняются операции с записями файла). В случае использования микропроцессоров i80x86 и наличия в памяти драйвера HIMEM.SYS модули IO.SYS и MSDOS.SYS могут быть размещены за пределами первого мегабайта в области, которая получила название HMA (high memory area).

Память с адресами, большими чем 10FFFFh, может быть использована в DOS-программах при выполнении их на микропроцессорах, имеющих такую возможность. Так, например, микропроцессор i80286 имел 24-разрядную шину адреса, а i80386 – уже 32-разрядную шину адреса. Но для этого с помощью специальных драйверов необходимо переключать процессор в другой режим работы, при котором он сможет использовать адреса выше 10FFFFh. Широкое распространение получили две основные спецификации: XMS (extended memory specification) и EMS (expanded memory specification). Поскольку основные утилиты, необходимые для обслуживания ПК, как правило, не используют эти спецификации, мы не будем здесь их рассматривать.

Остальные программные модули MS-DOS (в принципе, большинство из них является утилитами) оформлены как обычные исполняемые файлы. В основном они являются транзитными модулями, то есть загружаются в память только на время своей работы, хотя среди них имеются и TSR-программы.

1.6.3.3. Дополнительная и расширенная виды памяти MS DOS

В начале 80-х годов некоторые фирмы производители оборудования для компьютеров стали выпускать платы дополнительной памяти (memory extension cards). Доступ к памяти на этих платах осуществляется через специальный драйвер управления дополнительной памятью (EMM – expanded memory manager). Для обеспечения совместимости такого вида программ фирмами Lotus, Intel и Microsoft был разработан стандарт – спецификация дополнительной памяти (LIM EMS – LIM expanded memory specification). В настоящее время используется четвертая редакция этой спецификации – LIM EMS 4.0, где максимальный объем дополнительной памяти составляет 32 Мбайта.

Для обмена с EMS – памятью EMS- драйверы используют окно размером 64 Кбайта, которое расположено в верхней памяти MS DOS. Это окно, так называемый EMS-frame, разделено на 4 блока по 16 Кбайт. EMS-память также представлена в виде страниц размером в 16 Кбайт. Поэтому в EMS – окне могут быть доступны одновременно 4 страницы EMS –памяти. Для чтения или записи любой страницы EMS – памяти надо обратиться к EMS-драйверу, после чего она станет доступна программам DOS и с ней можно будет работать. Это весьма неудобно, т.к. заставляет программы самим заботиться о смене страниц в памяти.

Таблица 1.6.3.2.

Распределение оперативной памяти в MS-DOS

Адрес-длина

Содержимое

Примечание

0000-003FF 1Кб Таблица векторов прерываний
00400-005FF 512 байт Глобальные переменные BIOS Глобальные переменные DOS В ранних версиях здесь располагались глобальные переменные интерпретатора Бейсик
00600-0А000 35-60 Кб Модуль IO.SYS Модуль MSDOS.SYS: - обслуживающие функции; - буферы, рабочие и управляющие области; - инсталлирующие драйверы Резидентная часть COMMAND.COM: - обработка программных прерываний; - системная программа загрузки; - программа загрузки транзитной части COMMAND.COM Размер этой области зависит от версии MS-DOS и, главное от конфигурационного файла CONFIG.SYS
»580 Кб Область памяти для выполнения программ пользователя и утилит MS-DOS. В эту область попадают программы типа *.COM и *.EXE Объем этой области сильно зависит от объема, занимаемого ядром ОС. Программа может перекрыть транзитную область COMMAND.COM
Область расположения стека исполняющейся программы Стек «растет» снизу вверх
18 Кб Транзитная часть командного процессора COMMAND.COM Собственно командный интерпретатор
А0000-C7FFF 160 Кб Видеопамять. Область и размер используемого видеобуфера зависит от используемого режима При работе в текстовом режиме область памяти А0000-В0000 свободна и может быть использована в программе
С8000-Е0000 96 Кб Зарезервировано для расширения BIOS
F0000-FFFFF 64Кб Область ROM BIOS (System BIOS) Обычно объем этой области равен 32 Кб, но может достигать и 128 Кб, занимая и младшие адреса
100000-10FFFF High Memory Area При наличии драйвера HIMEM.SYS здесь можно расположить основные системные файлы MS-DOS, освобождая тем самым область основной памяти в первом мегабайте Может использоваться при наличии специальных драйверов. Используются спецификации XMS и EMS

Другая возможность увеличения размера доступной программам оперативной памяти появилась в 1982г., когда Intel стала выпускать микропроцессоры 80286. Эти и последующие микропроцессоры, обеспечивая совместимость с микропроцессором 8088, представляют также множество других возможностей. В частности эти микропроцессоры могут непосредственно работать с памятью большего, чем 1 Мбайт, размера (см. табл. 1.6.3.1).

Вместе с тем память с адресами свыше 1 Мбайта в этих микропроцессорах доступна только в так называемом защищенном режиме. MS DOS в этом режиме работать не может. Если же процессор работает в режиме совместимости с Intel-8088, в котором работает MS DOS – этот режим называется обычным или реальным (real mode), то программам доступна память только в пределах первого Мбайта. Исключением являются лишь первые 64 Кбайта расширенной памяти, о чем будет рассказано ниже.

Часть оперативной памяти сверх первого мегабайта, доступного в реальном режиме, называется расширенной памятью (extended memory).

В середине 80-ч годов был разработан стандарт по работе с расширенной памятью (XMS – extended memory specification) и реализующие его драйверы, например, HIMEM.SYS, которые предоставили широкие возможности для использования расширенной памяти DOS- программами.

Для обработки данных, расположенных в XMS – памяти, необходимо сначала переместить их в обычную или верхнюю память MS DOS, там выполнить обработку и затем с помощью запроса к XMS – драйверу поместить их обратно.

Более эффективное решение состоит в другом. Если сама программа выполняется в защищенном режиме процессора, то расширенная память жоступна ей непосредственно. При этом код программы и обрабатываемые данные могут располагаться в любом месте доступной XMS – памяти. Поэтому многими фирмами были созданы специальные системные программы – расширители DOS(DOS –extenders), позволяющие вызывать функции DOS из защищенного режима работы процессора. Во многих программах, требующих эффективной работы с большими объемами данных (компьютеры, базы данных и т.п.) применяются расширители DOS. Примером может служить операционная оболочка Windows/386 2.0, включающая в себя внутренний расширитель DOS.

Особую роль в расширенной памяти играют ее первые 64 Кбайта. Дело в том, что при создании микропроцессора Intel – 80286 фирма Intel допустила ошибку, из-за которой в реальном режиме оказалось возможным получить доступ к первым 64 Кбайтам расширенной памяти.

Ошибка состояла в следующем. Адрес каждого байта в процессоре Intel-286 задается с помощью двух двухбайтовых чисел: адреса сегмента Seg и смещения внутри сегмента Rel. Полный адрес A в процессоре вычисляется по формуле:

A = 16 * Seg + Rel.

Если адрес A становится больше 1 Мбайта (220), то в микропроцессоре Intel-8088 происходило отбрасывание «лишнего» 1 Мбайта, выполняемое автоматически вследствие использования в нем только 20 адресных линий. При разработке Intel-80286 об этом забыли. В результате стало возможным обращаться и к первым 64 Кбайтам расширенной памяти.

По-английски первые 64 Кбайта расширенной памяти называют Hight Memory Area – HMA.

Эта особенность была использована в MS DOS, начиная с версии 5.0, где предоставлена возможность перемещать на компьютерах с процессорами 80286 и выше ядро ЩС и драйверы в первые 64 Кбайт расширенной памяти. Тем самым возможно значительно увеличить объем обычной памяти, доступной DOS – программам.

1.6.3.4. Эффективное использование ОЗУ программами MS DOS

Многие DOS – программы научились работать с дополнительной и расширенной памятью. Однако место в первых 640 Кбайтах ОЗУ не перестало быть крайне дефицитным ресурсом. С развитием периферийных устройств, подключаемых к персональным компьютерам, количество основной памяти для размещения программ пользователя стало неуклонно сокращаться из-за размещения в ней драйверов этих периферийных устройств.