Сообщение
sanders » 13.10.2025,21:00
На первой фотке Other Memory 128КБ = Reserved на последней фотке. Это Shadow - копирование ПЗУ в область ОЗУ для более быстрого доступа. Вы жертвуете 128КБ ОЗУ для повышения быстродействия некоторых процедур, зашитых в BIOS и графический BIOS.
На втором экране 8448КБ - это некая общая память, в которой на самом деле есть "дыра" 384КБ под ПЗУ системных устройств. Т.е. памяти там нет, но из-за этй дыры верхняя граница смещается. Остается 8064КБ действительно используемой памяти. Это значение совпадает с первым фото Base+Other.
Сложно полностью объяснить то, о чём П.Абель и Джордейн написали книги об организации MS-DOS.
Но в двух словах, был процессор 8088, под него сделали архитектуру IBM PC, он адресовал 1024КБ памяти и своим существованием определил некие правила организации памяти:
- базовая память - это 640КБ, адресуемые DOS в реальном режиме;
- дальше дыра 384КБ, выделенная под устанавливаемые карты (EGA, VGA, MFM, SCSI...), содержащие ПЗУ. Если карт не вставлено, всё рано эта область недоступна.
--- но с помощью himem.sys 64КБ памяти свыше 1024КБ становится доступна даже в реальном режиме, но только для 286+ процессоров.
- но с помощью драйвера emm386.exe можно в этой дыре создать окна из памяти свыше 1024КБ, например, если у Вас нет MDA адаптера, Вы пишете i=A000-A7FF, и вот уже у Вас стало на 32КБ памяти больше, но только на 386+ процессорах. Т.е. процессор обращается к такому окну, а emm386 вовремя подсовывает процессору область за пределами 1024КБ.
Далее после 1092КБ идет область памяти - "Other", она же Extended. И она была бы недоступна в реальном режиме, если бы снова не emm386.exe.
- с помощью emm386.exe можно задать количество Expanded-памяти: emm386.exe RAM 4096. Она копируется блоками по 64КБ в нижнюю память. Это медленные процессы, но это всё делалось для обхода главного недостатка 8088 процессора - 1024КБ адресуемой памяти, а требовались уже бОльшие объемы.
В защищенном режиме это все было бы не нужно, там процессор адресует всю память, и даже часть винчестерной памяти может адресовать, думая, что это оперативная память. Но дело в том, что все эти процессоры 286 386, 486... стартуют в реальном режиме, поэтому приходилось соблюдать те самые устаревшие правила 70х годов для 8088 процессора, с которого пошла архитектура IBM PC.
Из DOS-овских утилит еще Dos4gw использует всю Extended-память. Поэтому, если у вас 8МБ, из которых вы объявили, например, 4МБ Expanded-памятью, то DOOM уже не пойдёт, т.к. Dos4gw останется только остаток в 4МБ. Были и другие костыли, чтобы в реальном режиме использовать Extended-память.
Мэтры, не пинайте строго, для понедельника, да еще после ужина, я вроде не плохо написал для базового понимания. Да, может, не всё точно, как по книге.
Последний раз редактировалось
sanders 13.10.2025,22:55, всего редактировалось 2 раза.