Из Википедии, бесплатной энциклопедии
  (Перенаправлено из области высокой памяти )
Перейти к навигации Перейти к поиску

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

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

В реальном режиме , то сегментация архитектура от Intel 80286 и последующих переработчики идентифицируют ячейку памяти с 16-битным сегментом и 16-битовое смещением, который разрешен в физический адрес с помощью (сегмента) × 16 + (смещение). Несмотря на то, что он предназначен для адресации только 1  мегабайта (МБ) (2 20 байтов) памяти, сегмент: смещение адресует в 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 PC AT , IBM добавила на материнскую плату специальную схему для имитации обертывания. Эта схема представляла собой простой логический вентиль, который мог отключать 21-ю адресную линию микропроцессора, A20 , от остальной материнской платы. Первоначально этим шлюзом можно было управлять с помощью контроллера клавиатуры , чтобы позволить запущенным программам получить доступ ко всей оперативной памяти. [1]

Так называемые обработчики A20 могут управлять режимом адресации динамически [1], тем самым позволяя программам загружаться в область 1024–1088 КБ и работать в реальном режиме. [1] Первым пользователем HMA среди продуктов Microsoft была Windows / 286  2.1 в 1988 году, которая представила драйвер устройства HIMEM.SYS . Начиная в 1990 году с Digital Research «ы DR - DOS 5.0 [2] ( с помощью CONFIG.SYS HIDOS=ON ) и с 1991 года с MS-DOS 5.0 [2] ( с помощью DOS=HIGH), части операционной системы BIOS и ядра могут быть загружены в качестве HMA хорошо, [2][3] освобождает до 46 КБ обычной памяти . [1] Другие компоненты, такие как драйверы устройств и TSR , могут быть загружены, по крайней мере, в область верхней памяти (UMA), но не в HMA. Под DOS 5.0 и вышеDOS=HIGHсистема дополнительно пыталась переместить дисковые буферы в HMA. [3] В DR DOS 6.0 (1991) и выше, дисковые буферы (черезHIBUFFERS, а также позжеBUFFERSHIGH), части командного процессора COMMAND.COM, а также несколько специальных самоперемещающихся драйверов, таких как KEYB , NLSFUNC и SHARE.могут также загружаться в HMA (используя свою /MHопцию), тем самым освобождая еще больше обычной памяти и верхней памяти для работы с обычным программным обеспечением DOS. [1] TASKMAX, похоже, тоже переместил свои части в HMA. [4] [5] Novell «s NLCACHE из NetWare Lite и ранних версий NWCACHE от Personal NetWare и Novell DOS 7 может использовать HMA , а также. [6] [7] [5] Под MS-DOS / PC DOS, ок. Общая часть COMMAND.COM размером 2 КБ может быть перемещена в HMA, [8], а также в DISPLAY.SYSрастровые изображения для подготовленных кодовых страниц . [8] Под MS-DOS 6.2 (1993) и выше, прибл. Часть DBLSPACE.BIN / DRVSPACE.BIN размером 5 КБ может сосуществовать с DOS в HMA (если не вызывается DBLSPACE / DRVSPACE /NOHMA ). [3] [9] В соответствии с PC DOS 7.0 (1995) и 2000 , Doskey загружается в HMA (если таковая имеется), [10] и ДОЛЯ могут быть загружены в HMA , а также (если его /NOHMAне задана опция). [10] Под MS-DOS 7.0 (1995) до 8.0(2000), части HMA также используются в качестве блокнота для хранения растущей структуры данных, записывающей различные свойства загруженных драйверов реального режима. [5] [11]

См. Также [ править ]

  • Мало памяти (первые 64 КБ памяти)
  • Расширенная память (XMS)
  • Расширенная память (EMS)
  • Нереальный режим
  • Ребазинг
  • Перенос границы абзаца
  • Перенос внутрисегментного смещения
  • SHELLHIGH (директива CONFIG.SYS) SIZE = xxxx параметр для отмены предварительного выделения HMA по умолчанию (только DR-DOS 7.02 и выше) [12]
  • HMAREA (директива CONFIG.SYS) для указания сегмента HMA (только PTS-DOS), аналогично параметру DR DOS HIDOS.SYS / BDOS = xxxx

Ссылки [ править ]

  1. ^ a b c d e f Пол, Матиас Р. (02.02.2002). «Treiber Dynamisch nachladen (Внутрисегментное смещение-перемещение из загруженных TSR в HMA)» [Динамическая загрузка драйверов (перемещение внутрисегментного смещения для загрузки TSR в HMA)] (на немецком языке). Группа новостей :  de.comp.os.msdos . Архивировано 9 сентября 2017 года . Проверено 2 июля 2017 .(NB. Дается исчерпывающий обзор истории и «природы» HMA, а также неочевидных конструктивных ограничений, которые необходимо соблюдать при разработке расширений резидентной системы, загружаемых в HMA. Также описывается, как решать эти проблемы с помощью заглушек , бэкдоры и перемещение внутрисегментного смещения, метод, используемый драйверами DR-DOS, способными перемещаться в HMA, и аналогичный (более сложному) методу, используемому в качестве основы для динамического удаления мертвого кода в авторском драйвере FreeKEYB.)
  2. ^ a b c Dryfoos, Майк, изд. (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.No.2: 96CV645B Доклада истца 477. Архивировано (PDF) из оригинала 2 апреля 2019 года . Проверено 22 июля 2019 . […] Одним из наиболее важных стимулов для добавления функций было давление со стороны конкурентов со стороны DRDOS 5.0 , о котором мы впервые узнали весной 1990 года. Набор функций DRDOS побудил нас добавить Поддержка UMB , смена задач и отмена удаления. […] Значительная часть внимания руководства группы была переключена на новые функции, такие как программное обеспечение для передачи файлов, восстановление удаления и сетевая установка […] В конце июля 1990 года эта ситуация достигла критической точки, и под руководством Брэдса команда команды руководство провело серию напряженных встреч, чтобы составить график и процесс закрытия проекта […] (1 + 32 страницы)
  3. ^ a b c Шульман, Эндрю; Браун, Ральф Д .; Макси, Дэвид; Michels, Raymond J .; Кайл, Джим (1994) [ноябрь 1993]. Уильямс, Эндрю (ред.). Недокументированная DOS: Руководство программиста по зарезервированным функциям и структурам данных MS-DOS - расширено и включает MS-DOS 6, Novell DOS и Windows 3.1 . Серия программирования Эндрю Шульман (1-е издание, 2-е изд.). Ридинг, Массачусетс, США: издательство Addison Wesley Publishing Company . С. 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)» . РБИЛ . 2000. Архивировано 18 февраля 2020 года . Проверено 18 февраля 2020 .
  5. ^ a b c Пол, Маттиас Р. (10 апреля 2002 г.). "[fd-dev] Доступ к HMA от TSR" . freedos-dev . Архивировано 9 сентября 2017 года . Проверено 9 сентября 2017 . […] 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 ТМР как SHARE , KEYB, и NLSFUNC (и в некоторых частях задач TASKMGR и NWCACHE ) в HMA, как правило, все еще доступно свободное место, обычно около 10 КБ (примерно до 20 КБ при использовании оболочки стороннего производителя). Это также имеет смысл для MS-DOS 5.0 - 6.22 и PC 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, с подробным описанием, ошибками и обходными путями . MPDOSTIP . Выпуск 157 (на немецком языке) (3-е изд.). Архивировано 5 ноября 2016 года . Проверено 11 января 2012 .(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, с подробным описанием, ошибками и обходными путями . MPDOSTIP . Выпуск 183 (на немецком языке) (3-е изд.).
  8. ^ a b Чаппелл, Джефф (январь 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 февраля 2020 года . Проверено 18 февраля 2020 . 
  10. ^ a b Брукс, Вернон С. (2014). «Это подробный список изменений, которые я сделал в PC DOS 7.0» . ПК DOS Retro . Архивировано 18 февраля 2020 года . Проверено 18 февраля 2020 . […] DOSKEY.COM […] Переместить код в HMA, если он доступен. […] SHARE.EXE […] Переместить код в HMA, если он доступен, и добавлена ​​опция / NOHMA принудительно загружать низко. […]
  11. ^ Пол, Matthias R. (2002-08-13). "Suche freien Speicherbereich unterhalb von 1 MB, der nicht von OS überschrieben wird" (на немецком языке). Группа новостейde.comp.lang.assembler.x86 . Архивировано 4 сентября 2017 года . Проверено 3 сентября 2017 .
  12. ^ Пол, Матиас Р. (1997-10-02) [1997-09-29]. «Caldera OpenDOS 7.01 / 7.02 Update Alpha 3 IBMBIO.COM - README.TXT и BOOT.TXT - Краткое описание того, как загружается OpenDOS» . Архивировано из оригинала на 2003-10-04 . Проверено 29 марта 2009 . [10]

Дальнейшее чтение [ править ]

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