ЗНАЕТЕ ЛИ ВЫ?

Розподіл адресного простору пам'яті



Межа адресного простору фізичної пам'яті визначається шириною адресної шини і складає:

– для МП 8088/8086 – 1 Мбайт при 20-ти розрядній шині;

– для МП 80286 – 16 Мбайт при 24-х розрядній шині;

– для МП 80386/80486і вище – може досягати 4 Гбайт.

Слід відзначити, що тільки мінімально необхідна частина пам'яті знаходиться на системній платі (як правило, 512 Кбайт, 640 Кбайт або 1 Мбайт), а інша нарощується на додаткових платах, що підключаються до системної шини комп'ютера. Розподіл адресного простору пам'яті показаний на рис. 3.2.

Перші 640Кбайт пам'яті утворюють основну пам'ять (conventional memory), що доступна MS-DOS в реальному режимі.

Пам'ять в адресному просторі від А000h до BFFFh займає буфер відеоадаптерів (називається ще відеопам’яттю) та розміщена на платах відеоадаптерів, є двопортовою, тобто вона має доступ як з боку МП для запису і читання, так і з боку відеоадаптера для читання при відображенні інформації на екран монітора.

Пам'ять в адресному просторі від C000h до FFFFh, тобто до кінця 1Мбайтного кордону, потрібна в загальному випадку для розміщення BIOS (як системного, так і розширеного, додаткових приладів - EGA, VGA) на мікросхемах ПЗП. Але ще цей адресний простір використовується для організації "Тіньової пам'яті" (Shadow Memory), а його частина для організації відображаємої (або додаткової) пам'яті (Expanded Memory).

 

Рис. 3.2 – Розподіл пам'яті

 

Пам'ять понад мегабайтного кордону утворює розширену пам'ять (Extended Memory).

Адресний простір основної пам'яті в реальному режимі адресації розподілений наступним чином:

0000h-003Fh займають 256 4-хбайтних вектора переривань, кожний вектор є повною початковою адресою (2 байта – сегмент, 2 байта – зміщення) програми обробки відповідного переривання (як апаратного, так і програмного). Тому щоб визначити точку входу в програму обробки переривання (інакше оброблювач переривань) з номером N, необхідно помножити значення номера переривання N на 4 і прочитати чотири байта.

0040h-004Fh (ROM Bios Data area) використовується операційною системою для зберігання інформації про конфігурацію системи, про інші установки і для організації буферу клавіатури. Дана ділянка пам'яті заповнюється процедурою POST при самотестуванні комп'ютера після включення живлення. Після цього аналізу BIOS записує в свою ділянку пам’яті за адресою 0040:0010h слово (два байти) конфігурації. Призначення бітів цього слова наступні:

0:1 – є НГМД, 0 – нема НГМД;

1:1 – є арифметичний сопроцесор, нема сопроцесора;

2:1 – є миша (PS/2), нема миші;

4-5: тип дисплея: 00 – EGA або VGA, 01 – CGA (40х25), 10 – CGA (80х25), 11 – монохромний;

6-7: кількість НГМД: 00 – 1 НГМД, 01 – 2 НГМД, 10 – 3 НГМД, 11 – 4 НГМД;

9-11: кількість послідовних портів;

12:1 – є ігровий адаптер (джойстик), 0 – нема адаптера;

13: 1 – вбудований модем, 0 – нема модему;

14-15: кількість паралельних портів.

0050h-006Fh (DOS Data area) – ділянка даних BIOS, що використовується для власних потреб.

Кордони інших модулів, що починаються з адреси 0070h, залежать від версії DOS, тому нижче наводиться тільки перелік блоків:

– модуль розширення вводу/виводу (io.sys);

– програма обробки функцій 21h переривання DOS (модуль IBMDOS.com);

– буферна область DOS;

– резидентна частина командного процесора (COMMAND.com);

– програми обробки переривань DOS 22h, 23h і 24h;

– резидентні (TSR) програми, тобто програми, що залишаються в пам'яті після першопочаткового до них звернення. У вигляді TSR програм оформлюються додаткові драйвери зовнішніх приладів (наприклад, драйвер підтримки кирилиці, екрану і клавіатури RK) або драйвери контролеру маніпулятора типу "миша".

– пам'ять, що розподіляється DOS для програм користувачів, що складається з сегментів коду, даних і стека.

Остання частина 640 Кбайтної області пам'яті займає транзитна частина командного процесора COMMAND.com, що може тимчасово займатися прикладними програмами, а при переході в DOS транзитна частина відновлюється з диску.

Системна BIOS, як це видно з рис. 2.2., розміщена в адресному просторі від F000h до FFFFh і містить процедуру самотестування при вмиканні живлення і перезавантаженні POST, коди і дані програм обробки переривань BOIS, деяку довідкову інформацію. Точки входу в конкретну програму обробки можна визначити, прочитавши і розшифрувавши вектори переривань, описані раніше. Слід відзначити, що в оригінальних IBM PC комп'ютерах за адресою F600h знаходиться вбудований інтерпретатор BASIC'а.

Точка входу в процедуру POST, тобто початкова адреса, що завантажується в регістр мікропроцесора при включенні живлення або при рестарті, розміщена за адресою FFFFh.

ПЗП BIOS містить за адресою F000:FFFEh байт що дозволить ідентифікувати тип ПЕОМ:

FFh – Оригінальний IBM PC;

FEh – XT, Portable PC;

FDh – PCjr;

FCh – AT;

FBh – XT з пам'яттю 640 К на системній платі;

FAh – PS/2 модель 25 або 30;

F9h – Convertible PC;

F8h – PS/2 моделі 55SX, 70,80;

9Ah – Compaq XT, Compaq Plus;

30h – Sperry PC;

2Dh – Compaq PC, Compaq Deskpro.

Дата створення BIOS займає в ПЗП BIOS 8 байтів починаючи з адреси F000: FFF5h і зберігається в форматі ASCII в вигляді мм/дд/рр, де мм - номер місяця; дд - день; рр - рік. Дата створення BIOS використовується часто програмістами для ідентифікації комп'ютера і прив’язки свого програмного забезпечення (ПЗ) до даного комп'ютера (один з варіантів захисту від копіювання ПЗ).

Розширена пам'ять

Як вказувалося вище, розширена пам'ять (Extended Memory) розташовується в адресному просторі понад 1 Мбайтного кордону до межі фізичної пам'яті. Доступ до розширеної пам'яті можливий тільки для МП 80286 і вище. Повноцінне використання extended memory виконується в захищеному режимі. Однак MS-DOS, що використовує процесори 80286, 80386 і 80486 в реальному режимі, не має повноцінного доступу до цієї пам'яті. Те ж саме відноситься і до програм, розроблених для виконання в середовищі MS-DOS. Єдине, що MS-DOS версій більш ранніх, ніж 4.0, могла зробити з розширеною пам'яттю – це розмістити там швидкодіючий електронний диск, або Кеш-накопичувачі на магнітному диску.

Однак в складі MS-DOS версії 4.0 і більш пізніх з'явився драйвер розширеної пам'яті HIMEM.SYS. Цей драйвер розширює основний простір 640 Кбайт ще приблизно на 64 Кбайта і надає відносно зручний засіб для зберігання в розширеній пам'яті масивів даних.

Будучи встановленим в операційній системі, драйвер HIMEM.SYS представляє інтерфейс в відповідності зі специфікацією XMS (Extended Memory Specification), розробленою корпораціями Lotus, Intel, Microsoft, AST Research. Для управління такою пам'яттю використовуються апаратні засоби, що підтримують специфікацію розширеної пам'яті.

Перші 64 Kбайт розширеної пам'яті (пам'яті, фізичні адреси якої перевищують 1 Mбайт) утворюють HMA (High Memory Area). Доступ до НМА вимагає управління контролером клавіатури – мікросхемою 8042 в IBM PC AT, розташованій на системній платі. 21-й розряд фізичної адреси (лінія А20) проходить через контролер клавіатури, і лінія може бути їм блокована (розрив лінії) або розблокована (йде передача адреси по лінії). Якщо лінія A20 розблокована, НМА доступна для будь-якої програми, працюючої в реальному режимі. В цьому випадку перенос, що виникає при формуванні 20-розрядного фізичної адреси, не буде ігноруватися, як це має місце в процесорі 8086. По цій причині адресі пам'яті, сегментна частина якої містить значення FFFFh, а зміщення перевищує 000Fh, буде відповідати 21-розрядна фізична адреса, що перевищує кордон в 1 Mбайт. Однак якщо лінія A20 блокована, перенос буде ігноруватися і в 80286/386.

Починаючи з версії 4.0 MS-DOS, НМА може використовуватися для розміщення ядра операційної системи або прикладних програм. В цьому випадку в файл конфігурації системи поміщується рядок DOS=HIGH

Обробляючи дану команду, MS-DOS повністю захоплює всю НМА, і в подальшому ця область розширеної пам'яті використовується MS-DOS. Сюди переноситься резидентна частина ядра і при необхідності інші резидентні програми. При цьому припускається, що в системі інстальований драйвер HIMEM.SYS, що розблокував лінію A20.

Пам'ять EMB (Extended Memory Block) утворює один або декілька блоків, розташованих в адресному просторі вище НМА. Для доступу до них XMS-драйвер переключає процесор в захищений режим. Тому програми реального режиму можуть використати ЕМВ тільки для зберігання даних.

XMS-драйвери включають в каскад переривань 2Fh власну “ехо-секцію”. Вона, отримавши управління, перевіряє значення регістру АН: якщо АН=43h, драйвер повідомляє про свою присутність (AL=80h) або передає в регістрах ES:BX адреси точки входу в функцію управління (AL=0h). Адреса точки входу, що вертається, використовується в подальшому для безпосереднього звернення до XMS-драйверу. Номер функції в цьому зверненні задається драйверу в регістрі AH. В випадку успіху XMS-драйвер вертає AX=0. При виникненні помилки AX=1, а код помилки передається в регістрі BL.

Перша функція, що повинна виконуватися програмою, яка використовує розширену пам'ять – визначення присутності в системі XMS-драйвера. Стандартний рекомендований засіб складається з наступних кроків:

– в регістр AH записується 43h, в AL записується 00h і видається переривання 2Fh;

– аналізується повернення в регістрі AL: якщо XMS-драйвер інстальований, то AL=80h. Це, однак, не означає, що розширена пам'ять доступна для прикладної програми;

– визначається адреса точки входу в функції XMS-драйвера. Для цього в регістр AH записується 43h, в AL записується 10h і видається переривання 2Fh;

– адреса точки входу в функції XMS-драйвера вертається в регістрах ES:BX.

Після того, як виявлений XMS-драйвер і визначена точка входу в його функції управління, прикладна програма може управляти розширеною пам'яттю. Номер функції задається в регістрі AH, при необхідності інші параметри знаходяться в регістрах DX (індекс і розмір блоку пам'яті), DX:SI (покажчик на структуру) і викликати переривання 2Fh.

Відображаєма (додаткова) пам'ять

На відміну від розширеної пам'яті, відображаєма (або додаткова) пам'ять з допомогою спеціальної апаратури і програмного забезпечення дозволяє МП здійснювати доступ до фізичної пам'яті, розташованої вище 1 Мбайтного кордону, через спеціально організовані вікна (фрейми) пам'яті, що лежать нижче кордону 1 Мбайт, тобто відображає додаткову, понад 1 Мбайта, пам'ять через вікна в діапазоні адрес, що лежать нижче кордону 1 Мбайт. Такий засіб придатний і для комп'ютерів, що використовують процесор Intel 8086, не що володіє можливістю адресації розширеної пам'яті (є тільки 20 ліній адресної шини).

Відображаєма пам'ять (Expanded Memory) реалізується спеціальною апаратною платою. Для побудови таких плат і організації інтерфейсу прикладної програми по управлінню відображаємою пам'яттю вироблені спеціальні стандарти (специфікації), що називаються EMS (Expаnded Memory Specification). Найбільш відомим з них є стандарт, запропонований спільно компаніями Lotus, Intel і Microsoft, - специфікація LIM EMS. Специфікації постійно розширюються і вдосконалюються.

Ідея EMS-пам'яті полягає в наступному. Адресний простір в 1 Мбайт розподіляється в IBM PC при роботі під управлінням MS-DOS. Таким чином, прикладні програми можуть використати не більш 640 Кбайт оперативної пам'яті. Однак, якщо в системі встановлена EMS-плата на якій розміщені мікросхеми додаткової пам'яті і схеми відображення цієї пам'яті в вікна шляхом зміни фізичних адрес, з'являється можливість використати до 4 Гбайт додаткової пам'яті плати. Область адрес, зарезервована для BIOSа, зайнята повністю програмами ПЗП тільки в PS/2, а для IBM PC XT і IBM PC AT в цьому діапазоні є вільне вікно розміром не менше 64 Кбайт. Початковий кордон вікна (сегмент адреси) задається регістрами конфігураторами плати, а в деяких реалізаціях EMS може встановлюватися прикладною програмою. Це вікно в специфікації називається page frame. Вікно розбивається на чотири сегменти по 16 Кбайт. Вся додаткова пам'ять розбивається на логічні сторінки (logical page) розміром по 16 Кбайт. Будь-яка логічна сторінка може бути відображена на будь-який сегмент вікна доступу. Таким чином, використовуючи чотири сегменти, програма може адресуватися водночас до будь-яких чотирьох логічних сторінок додаткової пам'яті.

Відображаєма пам'ять має до 8 Мбайт (EMS версії 3.2) або до 32 Мбайт (EMS версії 4.0) і до 4 Гбайт (версії старше) на одній або декількох платах адаптера відображаємої пам'яті. Сукупність чотирьох сторінок пам'яті в адресному просторі 1 Мбайт називають фреймом сторінок. Ці 64 Кбайта пам'яті належать EMS-платі. Запит читання або запису до адрес фрейма сторінок апаратно переадресовується на логічну сторінку. Закріплення фізичних сторінок за логічними називають картою відображення. Карта може змінюватися програмно. Фізичні сторінки мають номери 0, 1, 2 і 3. Будь-яка з чотирьох фізичних сторінок може бути відображена на будь-яку з логічних сторінок.

Логічні сторінки перед використанням повинні бути розподілені. В ході операції розподілу EMS-пам'яті програма запрошує потрібне їй число логічних сторінок. В подальшому для посилання на виділені сторінки використовується ціле число, що називається EMM-префіксом (EMM-handle). Логічні сторінки, закріплені за префіксом, нумеруються від 0 до N-1, де N - число сторінок, закріплених операцією розподілу за даним префіксом. Іншими словами, логічна сторінка в групі закріплених за префіксом сторінок має відносний номер, а не абсолютний.

Для використання додаткової пам'яті в комп'ютер повинна бути вставлена плата додаткової пам'яті і в файлі CONFIG.SYS підключений спеціальний драйвер, що звичайно поставляється разом з платою пам'яті. Драйвер виконує управління додатковою пам'яттю і називається EMM (Expanded Memory Manager). Для взаємодії прикладної програми з EMM-драйвером використовуються функції переривання 67h.

Перш ніж програма почне використовувати будь-яку функцію EMS, необхідно визначити наявність EMM-драйвера в системі. Якщо драйвер підчас початкового завантаження системи був інстальований, видавання переривання 67h буде безпечним.

В противному випадку імовірна ситуація звернення до переривання 67h, для якого буде відсутній вектор в таблиці векторів переривань, і, як результат, - "зависання" системи.

Один з двох LIM EMS засобів, що рекомендуються для визначення типу драйвера, обслуговуючого відображаєму пам'ять, полягає в наступному. По EMS версії 3.2 вектор переривання 67h після установки EMM – драйвера повинен дорівнювати покажчику на заголовку інсталюємого драйвера. Оскільки драйвери встановлюються в пам'яті з вирівнюванням на кордоні параграфу, поле зміщення в векторі 67h буде рівно нулю. В заголовку драйвера, як це визначене технічною документацією MS-DOS, по зміщенню 0Ah розташується ASCII-рядок імені драйвера (не більш 8 символів). Встановлене для EMS ім'я повинно бути "EMMXXXX\0".

Для виклику функцій драйвера додаткової пам'яті програма повинна завантажити код функції в регістр AH, код подфункції (звичайно 0) - в регістр AL і після цього викликати переривання INT 67h.

Системна або "тіньова" пам'ять

В сучасних комп'ютерах швидкість фізичного доступу до оперативної пам'яті набагато вище швидкості доступу до ПЗП. Тому процедури обробки переривань BIOS (зберігаються в ПЗП) виконуються набагато повільніше інших програм, розташованих в ОЗП.

Для усунення даного дисбалансу деякі комп'ютери оснащуються спеціальною платою системної або "тіньової" пам'яті (System або Shadow Memory), що в ході початкового завантаження після виконання процедури самотесування POST переписує вміст ПЗП адресного простору C000h-FFFFh, тобто системне BIOS з ПЗП системної плати, BIOS відеоадаптера з ПЗП відповідних адаптерів в оперативну пам'ять плати "тіньової" пам'яті обсягом 256 Кбайт.

Після копіювання інформації з ПЗП встановлюється відповідний розряд в регістрі управління пам'яті ПЗП, а схеми управління плати "тіньової" пам'яті замінюють це звернення зверненням до "тіньової" пам'яті за більш короткий час.

Але як було вказано раніше, не весь адресний простір C000h-FFFFh зайнятий BIOS. "Тіньова" пам'ять, що залишилася вільною, називається також UMB-блоком (Upper Memory Block) і може включатися в адресний простір MS-DOS і використовуватися нею як основна і НМА-пам’ять. Таким чином, UMB розширює загальний обсяг пам'яті, доступної MS-DOS для зберігання ядра і резидентних програм, залишаючи в розпорядженні прикладних програм практично всю основну пам'ять в 640 Kбайт.

Механізм "тіньової" пам'яті підтримується вбудованими функціями BIOS і його дозвіл здійснюється через встановлення конфігуратора системи, що зберігається в CMOS пам'яті.





Последнее изменение этой страницы: 2016-06-23; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 35.153.39.7 (0.009 с.)