Сервис "Обмен садиками" - бесплатный инструмент поиска обмена местами в дошкольных образовательных учреждениях (ДОУ) между детьми одного возраста Mini-Soft Библиотека Assembler IBM PC 4. Сегментированная организация памяти в реальном режиме. Виды памяти в среде MS-DOS Разделы сайта: Образование Курсовые Дипломы Рефераты Словари БЭМТ БФ НГТУ Программы Soft Исходники Статьи 4. СЕГМЕНТИРОВАННАЯ ОРГАНИЗАЦИЯ ПАМЯТИ В РЕАЛЬНОМ РЕЖИМЕ. ВИДЫ ПАМЯТИ В СРЕДЕ MS-DOS В компьютерах IBM PC используются процессоры фирмы Intel серии i80x86 (i8086 в компьютерах PC/XT и Pentium 4 – условно i80886 – в последних моделях компьютеров). При этом каждый из процессоров, начиная с i80286, имеет специальный режим эмуляции (программной совместимости) базового процессора i8086 с добавлением возможности использования 32разрядных регистров, начиная с i80386. Обычно этот режим называется режимом реального адреса (Real Address Mode) или R-режим. На какие же параметры процессора i8086 была сориентирована разработка операционной системы MS-DOS, работающая в данном режиме? Данный процессор имеет 16разрядную внутреннюю архитектуру и такой же разрядности шину данных. Таким образом, диапазон представления целых чисел (данные или адрес) не превышает 216 – 1 = 65535 (или 64 К – 1). Однако адресная шина включает 20-линий, что соответствует объёму адресуемой памяти 220 = 1 Мбайт (память в компьютере состоит из однобайтовых ячеек, а порядковый номер ячейки образует её физический адрес). Для того, чтобы с помощью 16-разрядных адресов можно было обращаться в любую точку 20-разрядного адресного пространства, введён двухкомпонентный логический адрес из 16-разрядных компонент: MSDN Библиотека Инфо "Segment (сегмент) : Offset (смещение)". Ссылки Гостевая книга Поиск по сайту: 123302 Submit Добавить работу на сайт Ваше образование Два высших Неполное среднее Среднее Среднеспециальное Неполное высшее Высшее Здесь Segment – адрес сегмента, а Offset – смещение в этом сегменте. По умолчанию, в реальном режиме используется сегментная модель памяти с объёмом сегмента в 64 Кбайта, расположение объекта в котором, относительно его базового адреса, определяется смещением Offset. Расположение сегмента в адресном пространстве, а также механизм перехода от логического адреса к физическому показан на рис. 2. ? ??????? Новые поступления: Анализ и оценка эффективности использования оборотных активов организации 2011-10-11 Товарные биржи и их значение в коммерческой деятельности торговых предприятий 2011-10-11 Рис. 2. Сегментированная модель памяти реального режима Контрольная по ботанике 2011-09-04 Контрольная работа по ботанике 2011-09-04 RSS Все новинки... Проверить аттестат Рассмотрим пример с использованием 16теричной системы счисления. Пусть логический адрес равен 0040h : 0220h. Тогда соответствующий ему физический адрес равен 0040h*10h + 0220h = 00620h. Надо отметить, однако, что обратный переход – от физического адреса к логическому – неоднозначен. В общем случае, сегментация – механизм адресации, обеспечивающий несколько независимых адресных пространств как в пределах одной задачи, так и в системе в целом для защиты задач от взаимодействия друг на друга. Назначением базовых адресов сегментов занимается операционная система, а внутри каждого сегмента адреса формируются программой. Это эффективный адрес или смещение Offset. Важные замечания: DОS в зависимости от объёма кода и данных программы может так назначить базовые адреса, что они будут перекрываться; физический адрес базы сегмента кратен числу 16, поэтому сегменты начинаются на границах блоков с разницей в 16 байт (параграф); сегментная организация обеспечивает создание позиционно – независимых или динамически перемещаемых программ. Каждое исполнение программы может происходить с различными значениями базовых адресов сегментов, которые выбираются DОS, исходя из особенностей загрузки памяти. Основной недостаток реального режима заключается в малом объеме адресного пространства (всего 1Мбайт) в сочетании с малыми значениями сегментов (всего 64 Кбайт). Однако, в то время – 1981 г. – думалось иначе. Этот недостаток был устранён в старших моделях процессоров i80x86 с 32-разрядной архитектурой, использующих защищённый режим виртуального адреса Protected Virtual Address Mode (или просто защищённый режим – P-ре-жим) равный в пределе 4 Гбайтам (64 Гбайта для 36-разрядной адресной шины). Рассмотрим распределение первого мегабайта памяти компьютера. В зависимости от модификации компьютера, настройки драйверов, управляющих памятью (а также типа версии используемой Windows), структура памяти несколько меняется. Однако размещение основных компонентов памяти (табл. 1) строго унифицировано. Таблица 1 Распределение первого мегабайта памяти компьютера Номер сегмента Сегментный адрес Описание Вид памяти 220-1 Расширенная память (спецификация eXtended Memory Specification – XMS) 11 110000h 10 100000h F F000h XMS Высокая память (High Memory Area – HMA) ПЗУ BIOS E Свободные адреса D Свободные адреса Upper Memory Area C C000h ПЗУ расширений BIOS В B800h Текстовая видеопамять B000h Графический видеобуфер (UMA) А A000h 9 9000h 384 Кбайт Conventional 8 Memory Свободная память для загружаемых прикладных 1 0070h и системных (резидентных) программ Area (CMA) 640 Кбайт (~570 Кбайт) Резидентная часть COMMAND.COM Загружаемые драйверы DOS Ядро операционной системы DOS – 0 файлы IO.SYS и MSDOS.SYS 0050h Область данных DOS (512 байт) 0040h Область данных BIOS (256 байт) 0000h Таблица векторов прерываний (1 Кбайт) Первые 640 Кбайт адресного пространства называются основной или стандартной CMA-памятью и по принципу работы являются памятью с произвольным доступом, допускающей как считывание, так и запись данных (ОЗУ или в англоязычной транскрипции RAM – Random Access Memory). Это та область, которую могли адресовать первые версии DOS. Оставшаяся часть памяти объёмом 384 Кбайт (область верхней памяти – UMA) использовалась видеоадаптером и ПЗУ BIOS. Начальный килобайт памяти занят векторами прерываний (256 векторов по 4 байта). Далее, над таблицей векторов, располагается область данных BIOS, которая занимает объём в 256 байт. В этой области хранятся разнообразные данные, используемые BIOS в процессе управления периферийным оборудованием. Этими данными могут пользоваться и разработчики прикладных программ на ассемблере (см. табл. 2). Начиная с сегментного адреса 0050h, располагается область данных DOS. К некоторым данным этой области (данные не являются документированными) можно обращаться только через посредство программных прерываний. Выше резидентной части командного процессора обычно загружаются необходимые резидентные программы (русификаторы, антивирусные программы). Оставшаяся часть CMA-памяти для загрузки прикладных DOS-программ, как правило, не превышает ~ 500 Кбайт. Таблица 2 Содержание некоторых полей области данных BIOS Адрес Размер, (offset) байт Типичное значение Описание 00h, 02h 2+2 03F8h, 02F8 Базовые порты COM1 и COM2 08h 2 03BCh Базовый порт LPT1 10h 2 C463h Состав установленного оборудования 13h 2 0280h=640Кбайт Основная память 17h, 18h 1+1 – Первый и второй байты флагов клавиатуры 1Ah 2 001Eh – 003Ah Головной указатель клавиатурного буфера 1Ch 2 001Eh – 003Eh Хвостовой указатель клавиатурного буфера 49h 1 03h Текущий видеорежим 4Ah 2 50h=80 Ширина экрана 4Ch 2 1000h=4байта Размер видеостраницы 4Eh 2 50h 16 – Позиции курсора на каждой видеостранице 60h 2 0607h Форма курсора 6Ch 4 – Счётчик прерываний системного таймера, 18,2 Гц 72h 2 0000h Режим начальной загрузки: 0000h – полный цикл POST, 1234h – укороченный цикл после нажатия Ctrl-Alt-Del 80h 2 001Eh Адрес начала буфера клавиатуры F0h FFh 16 Нули Область межзадачных связей Смещение в видеобуфере текущей видеостраницы Блоки верхней памяти UMA различаются как по принципу работы – ОЗУ или ПЗУ, так и по месту расположения в компьютере. Видеопамять (тип OЗУ) – обычно находится в составе видеоадаптера, программы BIOS (тип ПЗУ) – на материнской плате компьютера. Всё, что выше первого мегабайта, получило название расширенной или XMS-памяти (см. табл. 1). Как уже отмечалось выше, доступ к расширенной памяти осуществляется в защищённом режиме и она не доступна для DOS. Однако в составе DOS имеются два драйвера, которые позволяют пользоваться XMS-памятью в ограниченном объёме. Первый драйвер Himem.sys разрешает DOS загрузить себя в первый сегмент расширенный памяти, получившей название высокой памяти – High Memory (HMA). Второй – Emm386.exeможет выполнять две альтернативные функции: – отображение расширенной памяти на свободные адреса верхней UMA-памяти (Expanded memory – EMS), – загрузку драйверов и резидентных программ DOS (системных и прикладных) из CMA-памяти на свободные адреса верхней памяти UMA. Указанные функции реализуются посредством модификации конфигурационных файлов Config.sys и Autoexec.bat. В начале файла Config.sys помещаются две строки, осуществляющие загрузку данных файлов (в начале Himem.sys, затем Emm386.exe), затем, в третьей строке, – директиву DOS с параметрами: High и UMB. Параметр High пролонгирует назначение драйвера Himem.sys, UMB – разрешает DOS управлять блоками верхней памяти через посредство драйвера Emm386.exe. Вот, к примеру, как это выглядит для Windows 9x: ........ Device=C:\Windows\Himem.sys Device=C:\Windows\Emm386.exe Noems Dos=High,Umb В конце второй строки добавляется ключевое слово Ram, если требуется реализация от драйвера функции отображения расширенной памяти в UMB, или Noems – для указанной выше альтернативной функции. В дальнейшем записываются строки, загружающие драйвера (при наличии Noems) в верхнюю память с помощью команды Devicehigh. Например: Devicehigh=C:\Windows\Command\Ansi.sys При этом загрузка резидентов выполняется в Autoexec.bat командой Loadhigh(Lh). Выполнение подобной работы позволяет освободить CMA-память для загружаемых команд до уровня ~ 600 Кбайт. Для просмотра памяти следующими командами: можно воспользоваться Mem/d/p – постраничный просмотр модулей и драйверов всей памяти; Mem/m:<filename> – вывод подробных сведений об использовании памяти заданным модулем. При установке на компьютер системы Windows 2000 функция загрузки подсистемы DOS в память HMA, через посредство драйвера Himem.sys, выполняется по умолчанию. Кроме того, драйвер Emm386.exe в этой системе уже не используется, а его функции в файле Config.nt частично выполняет команда Emm. Описание данной команды приведено в виде комментариев в файле Config.nt для Windows 2000. Рассмотренные выше строчки в Config.nt можно представить в виде: ........ device=%SystemRoot%\system32\himem.sys Emm=Ram[1] Dos=High,Umb Devicehigh=C:\Windows\Command\Ansi.sys Вообще система Windows 2000 автоматически оптимизирует использование памяти для подсистемы MS-DOS и её программ. Для резервирования за программой DOS определённых объёмов памяти различных типов щёлкните правой кнопкой на значке исполняемого файла программы и выберите из контекстного меню команду Свойства. В окне свойств откройте вкладку Память (рис. 3). Рис. 3. Окно свойств с открытой вкладкой Память В рамке Обычная память задаётся необходимый для работы программы объём памяти в Кбайтах (от 0 до 640 Кб.). В раскрывающемся списке Переменные среды задаётся объём памяти (в байтах) для интерпретатора команд Command.com (проявляет себя только при запуске Windows 9x). Установка флажка Защищённый режим препятствует изменению программой установленной структуры и объёма обычной памяти, что защищает систему от зависания в случае ошибок в программе. В рамке Отображаемая (EMS) память указывается максимальный объём физической памяти, отображаемой в диапазоне свободных адресов верхней памяти, который может быть выделен программе. В рамке Дополнительная (XMS)-память можно установить флажок Использовать HMA для загрузки программы в высокую память, однако если в HMA-память загружена DOS (что более необходимо), положение флажка не играет роли. В рамке Память DPMI для защищённого режима MS-DOS задаётся предельный объём памяти DPMI для защищённого режима DOS, который может быть выделен программе (проявляет себя только при запуске Windows 9x). Для просмотра памяти следующими командами: можно воспользоваться mem/d – выводит сведения о загруженных программах и внутренних драйверах, а также вывод других сведений о программах (при необходимости используйте постраничный вывод с помощью команды more, например, mem/d|more); mem/c – выводит сведения о программах, загруженных в обычную память и в верхнюю область памяти, а также итоговые сведения об использовании памяти. Ram указывает, что система должна распределить только 64 Кбайт из области UMB для буфера страниц EMS памяти и оставить остальное место (если таковое имеется) для использования DOS, чтобы обеспечить поддержку команд LOADHIGH и DEVICEHIGH. По умолчанию система использует всю доступную память из области UMB для буфера страниц EMS-памяти. Размер Emm указывается в PIF-файле для данного приложения, либо в файле _default.pif. Если в PIFфайле в качестве размера EMS задан нуль, то строка Emm в файле настройки DOS игнорируется. Вам помог данный материал: Да | Нет [1] Mini-Soft Библиотека Assembler IBM PC 4. Сегментированная организация памяти в реальном режиме. Виды памяти в среде MS-DOS О проекте MiniSoft.ru Рекла ма на сайте Copyright © Mini-Soft 2003-2009 [email protected]