Область высокой памяти - High memory area

Высвечивается область верхней памяти.

В Управление памятью DOS, то область высокой памяти (HMA) это баран площадь состоящая из первых 65520 байты выше одного мегабайта в IBM В или совместимый компьютер.

В реальный режим, то архитектура сегментации из Intel 80286 а последующие процессоры идентифицируют ячейки памяти с помощью 16-битного сегмента и 16-битного смещения, которые преобразуются в физический адрес через (сегмент) × 16 + (смещение). Хотя предназначен для решения только 1Мегабайт (МБ) (220 байтов) памяти, сегмент: адреса смещения в FFFF: 0010 и за пределами эталонной памяти более 1 МБ (FFFF0 + 0010 = 100000). Таким образом, этот режим может фактически адресовать первые 65520 байтов расширенной памяти как часть диапазона 64 КБ, начиная с 16 байтов до отметки 1 МБ -FFFF: 0000 (0xFFFF0) к FFFF: FFFF (0x10FFEF). Intel 8086 и 8088 процессоров, всего с 1 МБ памяти и всего 20адресные строки, завернутый в 20-й бит, так что адрес FFFF: 0010 был эквивалентен 0000:0000.[1]

Чтобы позволить запускать существующие программы DOS, которые полагались на эту функцию для доступа мало памяти на их новом IBM ПК AT компьютеров, IBM добавила специальные схема на материнская плата для имитации обертывания. Эта схема была простой логический вентиль который мог отключить 21-ю адресную линию микропроцессора, A20, от остальной материнской платы. Эти ворота можно было контролировать, сначала через контроллер клавиатуры, чтобы разрешить запуск программ, которые хотели получить доступ ко всей оперативной памяти.[1]

Так называемый Обработчики A20 может управлять режимом адресации динамически,[1] тем самым позволяя программам загружаться в область 1024–1088 КБ и работать в реальном режиме.[1] Первый пользователь HMA среди Microsoft продукты были Окна / 286 2.1 в 1988 году, который представил HIMEM.SYS драйвер устройства. Начиная с 1990 г. Цифровые исследования с DR DOS 5.0[2] (через CONFIG.SYS HIDOS = ВКЛ) и с 1991 г. MS-DOS 5.0[2] (через ДОС = ВЫСОКИЙ), части операционной системы BIOS и ядро ​​также может быть загружено в HMA,[2][3] освобождение до 46 КБ обычная память.[1] Другие компоненты, такие как драйверы устройств и TSR, можно хотя бы загрузить в верхняя область памяти (UMA), но не в HMA. Под DOS 5.0 и выше, с DOS = ВЫСОКИЙ, система дополнительно попыталась переместить дисковые буферы в HMA.[3] Под DR DOS 6.0 (1991) и выше, дисковые буферы (через HIBUFFERS, а позже и БУФЕРНЫЙ), части командного процессора COMMAND.COM а также несколько специальных самовосстанавливающийся водители как KEYB, NLSFUNC и ПОДЕЛИТЬСЯ также могут загружаться в HMA (используя свои / MH option), тем самым высвобождая еще больше обычной памяти и верхней памяти для работы с обычным программным обеспечением DOS.[1] ТАСКМАКС похоже, тоже переместила части себя в HMA.[4][5] Novell с NLCACHE из NetWare Lite и ранние версии NWCACHE из Личное NetWare и Novell DOS 7 может также использовать HMA.[6][7][5] Под MS-DOS / PC DOS ок. Совместно используемая часть COMMAND.COM размером 2 КБ может быть перемещена в HMA,[8] а также ДИСПЛЕЙ.SYS растровые изображения для подготовленных кодовые страницы.[8] Под MS-DOS 6.2 (1993) и выше, ок. 5 КБ часть DBLSPACE.BIN /DRVSPACE.BIN может сосуществовать с DOS в HMA (если только DBLSPACE /DRVSPACE / NOHMA вызывается).[3][9] Под ПК DOS 7.0 (1995) и 2000, ДОСКИ загружается в HMA (если есть),[10] и SHARE также можно загрузить в HMA (если только его / NOHMA вариант дан).[10] Под MS-DOS 7.0 (1995) до 8.0 (2000), части HMA также используются в качестве блокнота для хранения растущей структуры данных, записывающей различные свойства загруженных драйверов реального режима.[5][11]

Смотрите также

Рекомендации

  1. ^ а б c d е ж Пол, Матиас Р. (2002-02-02). "Treiber Dynamisch nachladen (Внутрисегментное смещение-перемещение с использованием TSR в HMA)" [Загрузка драйверов динамически (перемещение внутрисегментного смещения для загрузки TSR в HMA)] (на немецком языке). Группа новостейde.comp.os.msdos. В архиве из оригинала на 09.09.2017. Получено 2017-07-02. (NB. Дается исчерпывающий обзор истории и «природы» HMA, а также неочевидных конструктивных ограничений, которые необходимо соблюдать при разработке расширений резидентной системы, которые будут загружены в HMA. Также описывается, как решать эти проблемы с помощью заглушки, бэкдоры и перемещение смещения внутри сегмента, метод, используемый DR-DOS драйверы, способные перемещаться в HMA и аналогичные (более сложному) методу, используемому в качестве основы для динамическое устранение мертвого кода в авторском драйвере FreeKEYB.)
  2. ^ а б c Драйфус, Майк, изд. (1991-09-18) [1991-07-19]. «Посмертный отчет о разработке MS-DOS 5.0» (PDF) (почта как судебный документ). Microsoft. п. 10. MS-PCA1179169 (MS-PCA1179159-MS-PCA1179191). MS7020988 (MS7020978-MS7021010). Депо. Бывший. 1109. Поставляется против Microsoft Экспонат истца 3473. CA. № 2: 96CV645B Приложение истца 477. В архиве (PDF) из оригинала на 2019-04-02. Получено 2019-07-22. […] Одним из самых важных стимулов для добавления функций было давление со стороны конкурентов DRDOS 5.0, о котором мы впервые узнали весной 1990 года. Набор функций DRDOS побудил нас добавить UMB поддержка, смена задач и отмена удаления. […] Значительное количество внимания руководства группы было отвлечено на новые функции, такие как программное обеспечение для передачи файлов, восстановление удаления и сетевая установка […] В конце концов эта ситуация достигла критической точки в конце июля 1990 года, и во главе с BradS, руководство команды провело серию напряженных встреч, чтобы составить график и процесс закрытия проекта […] (1 + 32 страницы)
  3. ^ а б c Шульман, Эндрю; Браун, Ральф Д.; Макси, Дэвид; Michels, Raymond J .; Кайл, Джим (1994) [ноябрь 1993]. Уильямс, Эндрю (ред.). Недокументированная DOS: руководство программиста по зарезервированным функциям и структурам данных MS-DOS - расширено за счет включения MS-DOS 6, Novell DOS и Windows 3.1. Серия программ Эндрю Шульман (1-е издание, 2-е изд.). Ридинг, Массачусетс, США: Издательство Эддисон Уэсли. С. 42, 349–350, 437–438. ISBN  0-201-63287-X. ISBN  978-0-201-63287-3. (xviii + 856 + vi страниц, 3,5-дюймовая дискета [1] ) Исправления: [2][3]
  4. ^ «Формат блока памяти HMA (ядро DR DOS 6.0 загружено в HMA)». RBIL. 2000. В архиве из оригинала на 18.02.2020. Получено 2020-02-18.
  5. ^ а б c Пол, Маттиас Р. (10 апреля 2002 г.). "[fd-dev] Доступ к HMA от TSR". freedos-dev. В архиве из оригинала на 09.09.2017. Получено 2017-09-09. […] MS-DOS 7.0 + добавляет INT 21h / AX = 4A03h и INT 21h / AX = 4A04h. RBIL 61 INT 21h / AH = 52h содержит некоторую информацию о цепочке MCB MS-DOS 7.0+ HMA […] Перемещение HMA для TSR имеет большой смысл для DR-DOS: Хотя вы можете загружать большие части BIOS и BDOS, резидентная часть оболочки, БУФЕРЫ и DR-DOS TSR, например ПОДЕЛИТЬСЯ, KEYB, и NLSFUNC (а в некоторых выпусках части ТАСКМГР и NWCACHE ) в HMA обычно все еще остается свободное место, обычно около 10 КБ (примерно до 20 КБ при использовании оболочки стороннего производителя). Это также имеет смысл для MS-DOS 5.0 - 6.22 и ПК DOS вплоть до 2000, которые обычно оставляют неиспользованными 4-7 Кбайт памяти HMA (SHARE, KEYB и NLSFUNC не могут загружаться в HMA, но DBLSPACE и HIMEM может до некоторой степени). Доступное пространство HMA может быть довольно ограниченным с MS-DOS 7.0 +, так как эта проблема привела к появлению новой и по большей части недокументированной структуры данных RMD, обычно размещаемой в HMA. Ядро собирает и записывает данные конфигурации и драйвера реального режима во время загрузки (тип драйвера, прерывания, обработанные драйвером, CONFIG.SYS строка вызова и т. д.) и сохраняет эту информацию в […] сложной […] и […] растущей структуре данных. Предположительно, эта информация предназначена для использования ядром Windows, чтобы получить лучшее представление о загруженных драйверах реального режима, вместо того, чтобы рассматривать DOS как монолитный блок или даже […] пытаться отцепить или выгрузить некоторые из них, однако это так. используется только в очень ограниченной степени (например, вы можете видеть некоторую информацию, отраженную в файлах журнала, созданных при запуске Windows 9x, и некоторые части диспетчера конфигурации Windows также используют ее), оставляя место для предположений, выходящих далеко за рамки техническая сторона - в частности, потому что ничего интересного не задокументировано… […]
  6. ^ Пол, Матиас Р. (1997-07-30) [1994-05-01]. «II.4. Undokumentierte Eigenschaften externer Kommandos». NWDOS-TIPs - Советы и приемы для Novell DOS 7, с подробностями, исправлениями и обходными путями Blick auf undokumentierte. MPDOSTIP. Выпуск 157 (на немецком языке) (3-е изд.). В архиве из оригинала от 05.11.2016. Получено 2012-01-11. (NB. NWDOSTIP.TXT это комплексная работа над Novell DOS 7 и OpenDOS 7.01, включая описание многих недокументированных функций и внутренних компонентов. Это часть еще большего авторского MPDOSTIP.ZIP Коллекция сохранялась до 2001 г. и распространялась на многих сайтах того времени. Предоставленная ссылка указывает на старую версию файла, преобразованную в HTML.) [4]
  7. ^ Пол, Матиас Р. (2001-04-09). «II.4. Undokumentierte Eigenschaften externer Kommandos». NWDOS-TIPs - Советы и приемы для Novell DOS 7, с подробностями, исправлениями и обходными путями Blick auf undokumentierte. MPDOSTIP. Выпуск 183 (на немецком языке) (3-е изд.).
  8. ^ а б Чаппелл, Джефф (январь 1994). Шульман, Эндрю; Педерсен, Аморетта (ред.). Внутреннее устройство DOS. Серия программирования Эндрю Шульман (1-е издание, 1-е изд.). Издательство Эддисон Уэсли. С. 4, 21, 100–106, 127–129. ISBN  978-0-201-60835-9. ISBN  0-201-60835-9. (xxvi + 738 + iv страницы, 3,5-дюймовые гибкие диски [5][6] ) Исправления: [7][8][9]
  9. ^ Купер, Джим (2002). Использование MS-DOS 6.22 (специальное 3-е изд.). Que Publishing. п. 669. ISBN  0-78972573-8. ISBN  978-0-78972573-8. В архиве из оригинала на 18.02.2020. Получено 2020-02-18.
  10. ^ а б Брукс, Вернон С. (2014). «Это подробный список изменений, которые я внес в PC DOS 7.0». ПК DOS Ретро. В архиве из оригинала на 18.02.2020. Получено 2020-02-18. […] DOSKEY.COM […] Перенести код в HMA, если он доступен. […] SHARE.EXE […] Перенести код в HMA, если он доступен, и добавлена ​​опция / NOHMA принудительно загрузить низкую. […]
  11. ^ Пол, Матиас Р. (13 августа 2002 г.). "Suche freien Speicherbereich unterhalb von 1 MB, der nicht von OS überschrieben wird" (на немецком). Группа новостейde.comp.lang.assembler.x86. В архиве из оригинала на 2017-09-04. Получено 2017-09-03.
  12. ^ Пол, Матиас Р. (1997-10-02) [1997-09-29]. "Caldera OpenDOS 7.01 / 7.02 Обновление Alpha 3 IBMBIO.COM - README.TXT и BOOT.TXT - Краткое описание того, как загружается OpenDOS". Архивировано из оригинал на 2003-10-04. Получено 2009-03-29. [10]

дальнейшее чтение

  • Некасек, Михал (13 сентября 2011). "Кому вообще нужен перенос адреса?". OS / 2 музей. В архиве из оригинала на 19.02.2020. Получено 2020-02-19. […] 86-ДОС, и поэтому ПК DOS /MS-DOS, использовал хитрый трюк. Байт по смещению 5 PSP содержит код операции дальнего вызова (9Ah); слово со смещением 6 PSP содержало соответствующее значение, указывающее размер сегмента программы, а также смещение части дальнего вызова. Слово со смещением 8, которое служило сегментной частью удаленного вызова, было создано таким образом, что в сочетании со смещением оно оборачивается (хорошо понимаемая особенность 8086 CPU) и укажите адрес 0: C0h, который содержит вектор прерывания 30h. […] ЗВОНОК 5 интерфейс работает даже в эмуляции DOS под Windows NT и OS / 2, и эти системы наверняка не могут работать с Линия A20 отключен. Как тогда это работает? […] Вместо того, чтобы отсекать адресные биты, система отражает пять байтов в 0: C0h в 1000C0h. Тот же метод фактически использовался в DOS 5 и выше, работающих с ДОС = ВЫСОКИЙ. В этом случае DOS гарантирует, что линейный адрес 1000C0h содержит соответствующий удаленный вызов. […]
  • Ингеносо, Тони (1998-12-20). «Глава 13 - Ворота A20 и HMA». Как улучшить работу кода - как минимизировать размер кода 80x86, а иногда и сделать его быстрее (электронная книга). В архиве из оригинала на 18.11.2019. Получено 2019-11-18.
  • Козиерок, Чарльз М. (2001-04-17) [1997]. «Область высокой памяти (HMA)». Руководство для ПК. 2.2.0. Архивировано из оригинал на 2006-10-16. Получено 2006-10-15.