Стандартная память
🕛 28.12.2008, 20:55
Большинство читателей в основном знакомы с семейством центральных процессоров Intel 8086/8088. PC и PC-XT используют процессор8088, 8-битовый вариант 16-битового 8086. Для удобства в дальнейшем
будем ссылаться только на 8086, поскольку между ними нет принципиальных различий. В процессоре 8086 16 ножек (pin) посылают сигналы, соответствующие 16 битам текущих данных, которыми процессор обменивается с системным ОЗУ. Однако данные не имеют никакого смысла сами по
себе, если нет возможности следить за тем, что они собой представляют. Системная шина должна знать, куда направляются конкретные данные
или откуда они поступили. Для выполнения этой задачи процессор использует еще 20 из своих ножек для создания уникальных адресов памяти. Это дает возможность процессору семейства 8086/8088 адресовать 2
в степени 20 уникальных байтов - 1 Mбайт памяти. В оригинальной архитектуре персонального компьютера 640 Кбайт из
этого 1 Mбайт было зарезервировано под DOS и прикладные программы,
работающие под ее управлением, а область с 640 Кбайт по 1 Mбайт была
зарезервирована для системного пользования. Большая часть 640 Кбайт
обычной памяти действительно используется почти постоянно, но верно и
то, что существуют участки зарезервированной системной памяти, которые система не использует и которые могут быть сделаны доступными для
других целей. QEMM и 386max управляют именно этой доступной частью
участка памяти, расположенного между 640 Кбайт и 1Mбайт, и именно об
этой части памяти следует рассказать подробнее. Удобно и общепринято делить 1 Mбайт памяти на 16 последовательных участков по 64 Кбайт каждый. Эти участки, иногда называемые страницами, помечаются шестнадцатеричными целыми числами от 0 до F, т.е.,
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. (Есть старая программистская шутка, что считать в шестнадцатеричной системе легко, если
отрезать большие пальцы). Итак, DOS получает области 0 - 9 (10 участков по 64 Кбайт, всего 640 Кбайт), а система получает остальное:
участки A, B, C, D, E, F. Иногда участки по 64 Кбайт разбиваются далее каждый на 16 областей по 4 Кбайт. Области, разумеется, также помечаются шестнадцатеричными числами. Например, область А разбивается на дополнительные области от 0 до F: A0, A1, ... , AF. Как QEMM, так и 386max используют
эти шестнадцатеричные адреса. Для завершения картины обе программы
добавляют еще два числа, так что 386max ссылается на объединенную область А6 - А7 следующим образом: A600h - A800h. Последний вариант
QEMM (версия 3.0) также принял этот синтаксис, тогда как предыдущие
версии обозначили бы ту же самую область как A600h - A7FFh. Мы будем
в дальнейшем придерживаться синтаксиса 386max, поскольку он применим
теперь и к текущей версии QEMM.