Тема 9

9. Странична преадресация за 32-битов физически адрес: каталози, таблици и страници – формати за 4К и 4М.


страницата се нуждае от дописване/преглеждане


<< Тема 8 | Тема 10 >>

Основни характеристики

Тук директория използваме като синоним на каталог.
Втора фаза в адресната преадресация се явява трансформацията на линейния адрес във физически.Страничната преадресация не е задължителна. Страничната преадресация е включена само когато PG бита на CR0 е установен.

Page Frame

Когато страницирането е включено, линейните адреси са изобразени във физически адреси. Страницирането позволява да се изпълняват програми с много по-голяма памет от наличната. Паметта е разделена на последователни блокове, наречени "page frames." Всеки page frame е по 4 KB или 4MB при 32 битов физически адрес.

Линеен адрес

Линейния адрес се отнася недиректно към физическия адрес като специфицира директория, таблица в тази директория, страница в тази таблица, отместване в тази страница. Има два варианта за разглежданеот на този адрес.
Когато имаме 4KB странициране:
untitled401.JPG
Когато имаме 4MB странициране:
untitled402.JPG

4-KB страници

untitled403.JPG
x86 страничния механизъм съдържа:
  • Регистър за директорията (Page Directory Base Register (PDBR)).
  • Директория на страниците (page directory).
  • Поне една странична таблица(page table).

PDBR e CR3 и сочи към базата на страничната директория. Всички входни данни на директорията (page-directory entry (PDE)) сочат към странични таблици от по 4 MB памет. PDE съдържа управляваща информация и указателите на страничните таблици. Като PDE, всички входни данни на страничните таблици (page-table entry (PTE)) съдържат управляваща информация, но сочи към 4-KB page frame. Линейните адреси се преобразуват във физически, като се използва 20-битов указател в странична таблица и комбинирайки го с ниските 12 бита от линейния адрес за да се формира 32 битовия физически адрес. Линейния адрес е разбит на три части:

  • Високите 10 бита формират индекс във страничната директория.
  • Следващите 10 бита формират индекс в страничната таблица.
  • Останалите 12 бита са индекс във page frame.

Горните 20 бита в PTE след това се комбинират с ниските 12 бита от линейния адрес за да формират физическия адрес. Има директна връзка между размерите на тези три полета и размера на страниците. Ниските 12 бита могат да адресират 2^12 или 4 KB памет. Таке всички PTE контролират 4 KB памет. Големината на паметта контролирана от всички PDE се установява от броя адресни битове използвани като индекс със страничната таблица, плюс номера на битовете използвани като индекс на page frame-а. PTE индексът е 10 бита и page-frame индекса е 12 бита, което прави 2^22 или 4 MB памет контролирана от всички PDE. Ако разгледате подробно фигурата по-горе всичко това ще ви стане ясно.
Тук виждаме как изглеждат входните данни на катлозите и таблиците за 4 KB страници:
untitled404.JPG

4-MB страници

untitled405.JPG
С разбирането на механизма на 4-KB страницирането, не е трудно да си представим 4-MB страничен механизъм. Индексът на page-frame ще нарасне от 12 бита на 22 бита, така разрешавайки директния контрол на 4-MB-тови страници. 20-битовия указател в страничния каталог се намаля на 10-битов, сочейки директно към 4-MB page frame памет. С премахването на търсенето на странична таблица, каталогът сочи директно към 4-MB page frame.
Линейния адрес за 4-MB страница се преобразува във физически адрес по доста подобен начин на 4-KB страници. Но е премахнат достъпа до таблиците. Високите 10 бита формират индекс в каталога. Той вече не съдържа 20-битов указател към таблица, а 10-битов указател към 4-MB page frame. 10-битовият указател в каталога се комбинира с ниските 22 бита от линейния адрс и така се образува 32-битовия физически адрес.
Тук виждаме входните данни на каталозите за 4MB страници:
untitled406.JPG

Битовете при входните данни

Present бит

Този бит показва дали дадени входни данни за таблица могат да бъдат използвани в адресна преадресация. P=1 сочи, че тези входни данни могат да бъдат използвани.
Когато P=0 входните данни или не са валидни за адресна преадресация и останалата част от входа може да бъде използвана от софтуера, или никои от останалите битове във входните данни не е тестван от хардуера.

Accessed и Dirty битове

Тези битове осигуряват информация за използването на страниците при таблиците. С изключение на dirty бита във входните данни на каталозите, тези битове се слагат от хардуера и процесора не изтрива нито един от тези битове.
Процесорът слага accessed битовете при таблиците в единица преди четене или писане в дадена страница.
Процесорът слага dirty бита в единица в таблиците преди писане в адрес преобразуван от тези входни данни. dirty бита в каталога е недефиниран.

Read/Write и User/Supervisor битове

Тези битове не се използват за адресна преадресация, а се използват за защита.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License