TURBO PASCAL |
Новости
|
Глава 5 ДОСТУП К ОТОБРАЖАЕМОЙ ПАМЯТИ 5.1. ЧТО ТАКОЕ ОТОБРАЖАЕМАЯ ПАМЯТЬРанние IBM— совместимые ПК типа IBM PC/XT оснащались микропроцессорами 8088 или 8086, способными работать с оперативной памятью емкостью не более 1 Мбайт. Несмотря на значительные размеры этой памяти, в некоторых прикладных программах ее оказывается недостаточно. Такие программы вынуждены интенсивно использовать диск для размещения больших объемов данных, что сильно снижает их производительность. Поэтому почти одновременно с появлением IBM PC/XT начались поиски путей повышения производительности крупных прикладных программ (табличных процессоров, систем управления базами данных и т.п.) за счет использования оперативной памяти большего, чем 1 Мбайт разме — ра. Эти поиски привели к выработке соглашения между ведущими фирмами—разработчиками программно—аппаратных средств, которое известно как EMS LIM (от Expanded Memory Specification. — спецификация отображаемой1 памяти, удовлетворяющая стандарту фирм Lotus—Intel-Microsoft). В соответствии с этим стандартом ПК оснащаются специальными EMS— платами, содержащими собственно отображаемую память и микросхемы, обеспечивающие доступ к ней. В настоящее время EMS стал промышленным стандартом, которому следуют все поставщики программно — аппаратных средств. В специальной технической литературе, используются термины «дополнительная память», «отображаемая память», «верхняя память» и т.д. Обилие терминологических определений, связанных с памятью ПК, требует пояснений. Прежде всего замечу, что операционная система MS-DOS, а следовательно, и подавляющее большинство работающих под ее управлением программ могут использовать лишь первый мегабайт памяти, который часто называют базовой памятью. Эта память в рамках ДОС поделена на две неравные части: первые 640 Кбайт отводятся для программ пользователя и самой ДОС и называются стандартной памятью, а оставшиеся 384 Кбайт зарезервированы для памяти видеоадаптеров и ПЗУ и называются верхним блоком памяти [Uper Memory Block}. В то же время в компьютерах IBM AT имеется возможность адресовать память объемом до 16 Мбайт, если в них используется микропроцессор 80286, или до 4 Гбайт, если используется микропроцессор 80386 или 804862 . * Термин expanded memory в буквальном переводе означает расширенная, дополненная память. Приблизительно такой же смысл имеет термин extended memory, которым обозначается память, лежащая за пределами первого мегабайта. Используемый в книге термин отображаемая память призван устранить часто возникающую путаницу этих понятий. 2 Объем непосредственно адресуемой оперативной памяти определяет разрядность адресной шины микропроцессора: 8088 и 8086 имеют 20-разрядную шину, поэтому адресуют Память ПК, остающаяся за вычетом первого мегабайта (т.е. за вычетом базовой памяти), называется дополнительной [Extended Memory). Эта память доступна только в специальном, так называемом защищенном, режиме работы микропроцессоров 80286/80386/80486. Поскольку защищенный режим не поддерживается в MS-DOS, его не использует и подавляющее большинство прикладных программ, работающих под управлением этой операционной системы. Таким образом, владелец современного компьютера IBM AT, оснащенного памятью, скажем, в 8 Мбайта, работая с MS — DOS — программами, часто либо вообще не использует дополнительные 7 Мбайт, либо размещает в них электронный диск или буферную кэш—память для дисков. В версии Турбо Паскаля 7.0 (точнее, в пакете Borland Pascal with Objects 7.0) введена поддержка защищенного режима микропроцессоров 80286/80386/80486, в котором используется дополнительная память (см. главы 8...10). Помимо базовой, отображаемой и дополнительной памяти, в IBM AT существует еще так называемая верхняя память (не путайте с верхним блоком памяти!). Как известно, 20—разрядный адрес на IBM AT в реальном режиме и на компьютерах IBM PC/XT образуется путем сложения двух 16-разрядных слов — сегмента и смещения. Перед сложением сегмент смещается на 4 разряда влево (умножается на 16), что и обеспечивает 20-разрядный результат сложения — адрес конкретного байта. Формальное сложение сегмента и смещения может привести к переполнению 20-разрядной адресной сетки. Действительно, если, например, сегмент Seg = $FFFF, а смещение 0/s = $0010, то сложение $FFFF*16+$O010 дает значение $100000, для представления которого требуется уже 21 разряд. Поскольку в IBM PC/XT применяется 20—разрядная шина, переполнение результата не может использоваться и «лишний» 21—и разряд просто теряется, т.е. на таких ПК адресация с сегментом Seg = $FFFF и смещением Ofs > $OOOF эквивалентна адресации с сегментом Seg = $0000 и смещением Ofs = 0/s—$0010. В адресной шине IBM AT имеется 21—и разряд, но его использование обычно запрещено. Однако в таких компьютерах предусмотрена возможность программного управления 21—м разрядом. Если этот разряд разблокировать, программе, работающей в реальном режиме процессора, станут доступны еще почти 64 Кбайта (без 16 байт). Эта часть памяти и называется верхней (High Memory Area}. MS-DOS версии 5.0 и более поздних, а также некоторые совместимые с ней операционные системы других фирм (например, DR—DOS фирмы Digital Research версии 4.0 и позже) могут размещать в верхней памяти свои резидентные части, тем самым освобождая драгоценную стандартную память для программ пользователя. Итак, существуют 4 вида оперативной памяти: • базовая — с адресам от $00000 до $FFFFF; • верхняя — с адресами от $100000 до $1OFFEF; • дополнительная ~ с адресами от $100000 до $FFFFFFFF; 220 = i 048 576 = 1 Мбайт; 80286 оснащен 24-разрядной шиной и адресует 224 = 16777216 = 16 Мбайт; 32-разряднс1Я шина 80386 и 80486 адресует 232 = 4 294 967 296 = 4 Гбайт. • отображаемая — организуется специальными аппаратными средствами на компьютерах с микропроцессорами 8088, 8086, 80286 и может программно эмулироваться на процессорах 80386 и 80486. Каким образом микропроцессоры типа 8088/8086, имеющие 20-разрядную адресную шину, получают доступ к отображаемой памяти, т.е. к памяти, лежащей за пределом 1 Мбайт? Для этого аппаратным способом реализуется '"отображение небольшого участка отображаемой памяти, называемого окном, в адресное пространство микропроцессора. Отображаемое окно занимает адреса, которые не используются в ПК. Обычно эти адреса лежат за границей 640 Кбайт, т.е. принадлежат верхнему блоку памяти (см. рис.5.1).
Рис.5.1. Память ПК Возможность отображения EMS— памяти в участок верхнего блока связана с тем, что ни видеоадаптер, ни ПЗУ не используют все адреса этого блока. Действительно, для адресации к видеопамяти адаптера VGA требуется не более 640х480/8 = 38400 байт адресного пространства1 , а адаптеров EGA и CGA — и того меньше; даже видеопамять SVGA с разрешением 1024х768 использует менее 100 Кбайт; с учетом того что для ПЗУ обычно выделяется 64 или 128 Кбайт, остается 150 Кбайт и более свободного адресного пространства. В эти адреса и отображается окно EMS— памяти. ' Речь идет об адресном пространстве, используемом для обращения к видеопамяти. Фактический объем видеопамяти VGA составляет от 64 до 256 Кбайт. Доступ к остальной части этой памяти организуется схемами контроллера. Программа может управлять аппаратными средствами EMS— платы, в частности, она может связывать окно с различными участками отображаемой памяти. Таким образом, для использования отображаемой памяти программа должна указать, какую именно часть EMS— памяти связать с окном, и затем работать с данными по адресам отображаемого окна, т.е. по адресам выше 640 Кбайт (но, разумеется, ниже 1 Мбайт): при каждом обращении к окну аппаратура EMS— платы «подставляет» вместо несуществующей базовой памяти с этими адресами нужный участок отображаемой памяти. Отображаемое окно использует EMS— память порциями по 16 Кбайт. Эти порции называются страницами. Одновременно в окне может отображаться от одной до четырех страниц. Таким образом, максимальная емкость окна не может превышать 64 Кбайт, в то время как максимальная емкость EMS— памяти составляет 32 Мбайт (2048 страниц). Еще раз подчеркну, что наличие на Вашем ПК памяти за границей 1 Мбайт (обычно это легко выявляется в ходе автотестирования сразу после включения компьютера) еще не означает, что эта память — отображаемая. Главное отличие отображаемой памяти от дополнительной заключается в том, что первая может отображаться в адресное пространство до 1 Мбайта, а вторая — не может. Отображение реализуется аппаратным способом, поэтому для доступа к EMS— памяти компьютер, использующий процессор 80286 или более ранний (8088, 8086, V20 и т.п.), должен оснащаться специальной платой. Начиная с версии 4.0, операционная система MS-DOS поставляется с драйвером отображаемой памяти XMA2EMS.SYS и эмулятором EMM386.SYS. Последний на ПК с микропроцессорами 80386/80486 обеспечивает эмуляцию отображаемой памяти, т.е. программно реализует функции EMS— платы и преобразует дополнительную память в отображаемую. |
(с)Все права защищены По всем интересующим вопросам прошу писать на электронный адрес |