Jump to content

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

Области физической памяти семейства IBM PC

В компьютерах , совместимых с IBM PC , управление памятью DOS относится к программному обеспечению и методам, используемым для предоставления приложениям доступа к более чем 640 кибибайтам (640 * 1024 байта) (КиБ) «обычной памяти». Ограничение в 640 КиБ было специфичным для IBM PC и близко совместимых компьютеров; другие машины под управлением MS-DOS имели другие ограничения, например, ПК Apricot мог иметь до 768 КиБ, а Sirius Victor 9000 - 896 КиБ. Управление памятью в семействе IBM усложнялось необходимостью поддерживать обратную совместимость с исходной конструкцией ПК. [1] и DOS реального режима , позволяя пользователям компьютеров использовать большие объемы недорогой памяти и процессоры нового поколения. Поскольку DOS уступила место Microsoft Windows и другим 32-битным операционным системам, не ограниченным исходным произвольным пределом IBM PC в 640 КиБ, управление памятью персонального компьютера больше не требует от пользователя ручного управления внутренними настройками и параметрами. система.

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

Обычная память

[ редактировать ]

Процессор Intel 8088, использовавшийся в оригинальном IBM PC, имел 20 адресных линий и поэтому мог напрямую адресовать 1 МБ (2 МБ). 20 байт) памяти. Различные области этого адресного пространства были выделены для разных типов памяти, используемых для разных целей. Начиная с самого нижнего конца адресного пространства, на ПК была установлена ​​оперативная память (ОЗУ) для чтения и записи, которая использовалась DOS и прикладными программами. Первая часть этой памяти была установлена ​​на материнской плате системы (в самых ранних машинах 64 КиБ, позже измененная до 256 КиБ). Дополнительную память можно было добавить с помощью карт, вставленных в слоты расширения; каждая карта содержала ремешки или переключатели для управления тем, какая часть адресного пространства имеет доступ к памяти и устройствам на этой карте.

На IBM PC все адресное пространство до 640 КиБ было доступно для оперативной памяти. Эта часть адресного пространства называется «обычной памятью», поскольку она доступна всем версиям DOS автоматически при запуске. Сегмент 0, первые 64 КиБ обычной памяти, также называется нижней областью памяти . Обычно память расширения устанавливается в адресном пространстве смежной с памятью на материнской плате. Если бы между памятью материнской платы и памятью расширения существовал нераспределенный пробел, DOS не определила бы эту память автоматически как пригодную для использования.

Верхняя область памяти

[ редактировать ]

Верхняя область памяти (UMA) относится к адресному пространству между 640 и 1024 КиБ (0xA0000–0xFFFFF). Область размером 128 КиБ между 0xA0000 и 0xBFFFF была зарезервирована для памяти экрана VGA и устаревшего SMM. Область размером 128 КиБ между 0xC0000 и 0xDFFFF была зарезервирована для дополнительных ПЗУ устройств , включая Video BIOS . 64 КиБ адресного пространства от 0xE0000 до 0xEFFFF были зарезервированы для BIOS или дополнительных ПЗУ . IBM PC зарезервировал самые верхние 64 КиБ адресного пространства от 0xF0000 до 0xFFFFF для BIOS и Cassette BASIC (ПЗУ). постоянной памяти [2]

Например, область памяти монохромного видеоадаптера занимала от 704 до 736 КиБ (0xB0000–0xB7FFF). Если бы использовался только адаптер монохромного дисплея, адресное пространство между 0xA0000 и 0xAFFFF можно было бы использовать для оперативной памяти, которая была бы смежна с обычной памятью. [3]

ПЗУ BIOS системы должны находиться в верхнем конце адресного пространства, поскольку стартовый адрес ЦП фиксирован конструкцией процессора. Начальный адрес загружается в программный счетчик ЦП после аппаратного сброса и должен иметь определенное значение, которое сохраняется после отключения питания системы. При перезагрузке или включении питания ЦП загружает адрес из системного ПЗУ, а затем переходит в определенное место ПЗУ, чтобы начать выполнение самотестирования системы при включении питания и, в конечном итоге, загрузить операционную систему.

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

Расширенная память

[ редактировать ]

Поскольку цены на память снизились, прикладные программы, такие как электронные таблицы и компьютерное черчение, были изменены, чтобы использовать все больше и больше физической памяти в системе. Виртуальная память в 8088 и 8086 не поддерживалась аппаратным обеспечением процессора, а дисковая технология того времени делала ее слишком медленной и громоздкой, чтобы ее можно было использовать на практике. Расширенная память представляла собой систему, которая позволяла прикладным программам получать доступ к большему объему оперативной памяти, чем непосредственно видно из адресного пространства процессора. Этот процесс представлял собой форму смены банка . Когда требовалась дополнительная оперативная память, программное обеспечение драйвера временно делало часть расширенной памяти доступной для процессора; когда данные в этом фрагменте памяти обновлялись, другая часть могла быть заменена в адресное пространство процессора. Для IBM PC и IBM PC/XT , имеющих всего 20 адресных строк, были созданы специальные карты расширенной памяти, содержащие, возможно, мегабайт или более расширенной памяти с логикой на плате, делающей эту память доступной для процессора в определенные части адресного пространства 8088.

Выделение и использование расширенной памяти было непрозрачно для прикладных программ. Приложение должно было отслеживать, какой банк расширенной памяти содержит конкретный фрагмент данных, и когда требовался доступ к этим данным, приложение должно было запрашивать (через программу-драйвер) плату расширенной памяти для отображения этой части памяти в адресное пространство процессора. Хотя приложения могли использовать расширенную память с относительной свободой, многие другие программные компоненты, такие как драйверы и резидентные программы (TSR), по-прежнему обычно ограничивались размещением в области «обычной памяти» размером 640 КБ, которая вскоре стала критически дефицитной. ресурс.

80286 и область высокой памяти

[ редактировать ]

Когда IBM PC/AT был представлен , архитектура сегментированной памяти процессоров семейства Intel имела побочный продукт, позволяющий адресовать чуть более 1 МБ памяти в «реальном» режиме. Поскольку у 80286 было более 20 адресных строк, определенные комбинации сегмента и смещения могли указывать на память выше 0x0100000 (2 20 ) расположение. 80286 мог адресовать до 16 МБ системной памяти, тем самым устраняя «зацикливание» адресов памяти. Поскольку необходимая адресная строка теперь существовала, комбинация F800:8000 больше не будет указывать на физический адрес 0x0000000, а будет указывать на правильный адрес 0x00100000.

В результате некоторые программы DOS перестали работать. Для обеспечения совместимости с поведением ПК и XT в AT был включен линейный вентиль A20 (Gate A20), который заставлял адреса памяти в AT переключаться на нехватку памяти, как это было бы в процессоре 8088. Этими воротами можно было управлять, первоначально через контроллер клавиатуры , чтобы позволить запущенным программам, которые были разработаны для этого, получить доступ к дополнительным 65 520 байтам (64 КиБ) памяти в реальном режиме . Во загрузки время BIOS сначала включает A20 при подсчете и тестировании всей памяти системы и отключает его перед передачей управления операционной системе. Включение линии A20 — это один из первых шагов, которые в защищенном режиме x86 операционная система выполняет в процессе загрузки, часто до того, как управление передается ядру из начальной загрузки (например, в случае Linux).

Область верхней памяти ( HMA ) — это область ОЗУ , состоящая из первых 64 КиБ минус 16 байт расширенной памяти на IBM PC/AT или совместимом микрокомпьютере.

Первоначально логический вентиль представлял собой вентиль, подключенный к контроллеру клавиатуры Intel 8042 . Контроль над ним был относительно медленным процессом. С тех пор были добавлены другие методы, позволяющие более эффективно выполнять многозадачность программ, которым требуется такой цикл, с программами, имеющими доступ ко всей памяти системы. Поначалу существовало множество методов, но в конечном итоге отрасль остановилась на методе PS/2, в котором бит порта 92h используется для управления линией A20.

Отключение A20 не приведет к переносу всех обращений к памяти выше 1 МБ, а только тех, которые находятся в диапазонах 1 МБ, 3 МБ, 5 МБ и т. д. Программное обеспечение реального режима заботилось только об области чуть выше 1 МБ, поэтому шлюза A20 было достаточно.

Режим Virtual 8086 , представленный в Intel 80386 , позволяет моделировать циклический цикл A20 с использованием средств виртуальной памяти процессора: физическая память может быть сопоставлена ​​с несколькими виртуальными адресами, что позволяет отображать память в первом мегабайте виртуальная память может быть снова отображена во втором мегабайте виртуальной памяти. Операционная система может перехватывать изменения в шлюзе A20 и вносить соответствующие изменения в адресное пространство виртуальной памяти, что также делает несущественной эффективность переключения шлюза A20.

Первым пользователем HMA среди продуктов Microsoft была Windows 2.0 в 1987 году, которая представила драйвер устройства HIMEM.SYS . Начиная с версий 5.0 DR-DOS (1990 г.) и MS-DOS (1991 г.), части операционной системы также можно было загружать в HMA, освобождая до 46 КиБ обычной памяти . Другие компоненты, такие как драйверы устройств и TSR, можно загрузить в верхнюю область памяти (UMA).

обработчик A20

[ редактировать ]

Обработчик A20 — это программное обеспечение, управляющее доступом к области верхней памяти. Менеджеры расширенной памяти обычно предоставляют эту функциональность. В DOS менеджеры областей большой памяти, такие как HIMEM.SYS, выполняли дополнительную задачу по управлению A20 и предоставляли API для открытия/закрытия A20. Сама DOS могла бы использовать эту область для некоторых своих нужд, тем самым освобождая больше обычной памяти для программ. Эта функция была включена директивой « DOS =HIGH» в файле конфигурации CONFIG.SYS .

Gate A20 на более поздних процессорах

[ редактировать ]

В процессорах Intel 80486 и Pentium добавлен специальный вывод с именем A20M# , который при установлении низкого уровня приводит к тому, что бит 20 физического адреса становится нулевым для всех обращений к встроенному кэшу или внешней памяти. Это было необходимо, поскольку в 80486 появился встроенный кэш, и поэтому маскировать этот бит во внешней логике было уже невозможно. Программному обеспечению по-прежнему необходимо манипулировать воротами, и для этого ему по-прежнему приходится иметь дело с внешними периферийными устройствами ( набором микросхем ). [4]

80386 и последующие процессоры

[ редактировать ]

Процессоры Intel, начиная с модели 386 , допускали виртуальный режим 8086 , который упрощал аппаратное обеспечение, необходимое для реализации расширенной памяти для приложений DOS. Менеджеры расширенной памяти, такие как Quarterdeck от продукт QEMM от Microsoft, и EMM386 поддерживали стандарт расширенной памяти без необходимости использования специальных плат памяти.

В процессорах 386 и последующих менеджеры памяти, такие как QEMM, могли переместить большую часть кода драйвера или TSR в расширенную память и заменить ее небольшим фрагментом, обеспечивающим доступ к резидентному коду расширенной памяти. Они могут анализировать использование памяти, чтобы обнаружить драйверы, которым во время запуска требуется больше оперативной памяти, чем впоследствии, а также восстанавливать и повторно использовать память, которая больше не нужна после запуска. Они могут даже переназначить области памяти, обычно используемые для отображаемого в память ввода-вывода. Многие из этих уловок включали предположения о функционировании драйверов и других компонентов. По сути, менеджеры памяти могут на лету перепроектировать и модифицировать код других производителей. Как и следовало ожидать, такие уловки не всегда срабатывали. Таким образом, менеджеры памяти также включают в себя очень сложные системы настраиваемых параметров и средств восстановления, если выбранная опция приведет к невозможности загрузки ПК (частое явление).

Установка и настройка диспетчера памяти может потребовать нескольких часов экспериментирования с опциями, неоднократной перезагрузки компьютера и тестирования результатов. Но традиционная память была настолько ценной, что владельцы ПК считали, что такое время было потрачено не зря, если в результате освободилось 30 или 40 КиБ обычного пространства памяти.

Расширенная память

[ редактировать ]

В контексте IBM PC-совместимых компьютеров под расширенной памятью понимается память в адресном пространстве процессоров 80286 и последующих процессоров, выходящая за пределы ограничения в 1 мегабайт, установленного 20 адресными строками процессоров 8088 и 8086. Такая память недоступна напрямую для Приложения DOS работают в так называемом «реальном режиме» процессоров 80286 и последующих. Эта память доступна только в защищенном или виртуальном режимах процессоров 80286 и выше.

См. также

[ редактировать ]
  1. ^ Мюллер, Скотт (1994). «7». Модернизация и ремонт компьютеров (4-е изд.). Ке . ISBN  1-56529-932-9 .
  2. ^ «Карта памяти (x86) — OSDev Wiki» . wiki.osdev.org . Проверено 20 декабря 2020 г.
  3. ^ Перейти обратно: а б Мюллер, Скотт (1999). «6: Память». Модернизация и ремонт компьютеров (11-е изд.). Корпорация Que . ISBN  0-7897-1903-7 .
  4. ^ Шенли, Том (1996). Архитектура программного обеспечения защищенного режима . Тейлор и Фрэнсис . п. 60. ИСБН  0-201-55447-Х .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: fbd050a1c00f1df4f7d2d350c052498f__1701289740
URL1:https://arc.ask3.ru/arc/aa/fb/8f/fbd050a1c00f1df4f7d2d350c052498f.html
Заголовок, (Title) документа по адресу, URL1:
DOS memory management - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)