Восьмий урок захищеного режиму.
Попередні :
- "Уроки захищеного режиму x86. Урок 0 та 1".
- "Уроки захищеного режиму x86. Урок 2".
- "Уроки захищеного режиму x86. Урок 3".
- "Уроки захищеного режиму x86. Урок 4".
- "Уроки захищеного режиму x86. Урок 5".
- "Уроки захищеного режиму x86. Урок 6".
- "Уроки захищеного режиму x86. Урок 7".
Базою для цих матеріалів служать уроки уроки захищеного режиму
Алексея Фрунзе.
Ліцензія на код -- GPL2+, ліцензія на тексти -- GFDL.
Довідкова інформація взята з відкритих джерел на просторах Інтернету, зокрема з офіційних мануалів Intel.
Традиційне і очевидне -- жодних гарантій.
Урок номер 8
Демонстрація роботи трансляції сторінок. У графічному режимі на екран виводиться 16 кольорових смужок, послідовно:
- Трансляція сторінок заборонена, послідовність кольорів -- чорний, блакитний, ..., жовтий, білий.
- Трансляцію ввімкнено, трансляція тотожна, послідовність кольорів та ж -- чорний, блакитний, ..., жовтий, білий.
- Трансляцію ввімкнено, сторінки перетасовано, послідовність кольорів протилежна -- білий, жовтий, ..., блакитний, чорний.
Використано режим 0x13 VGA, в якому кожному пікселю відповідає рівно один байт. В ньому роздільна здатність 320x200, тому відеопам'ять, яка виводиться на екран, займає 64000 байти, майже 64Кб. Заповнивши різні сторінки байтами, що задають різні кольори ми фактично і безпосередньо візуалізуємо ї
х :-)
А візуалізувавши, показуємо, як зміниться зображення, якщо ввімкнути трансляцію, яка лінійним тотожно ставить у відповідність фізичні (не зміниться) та коли лінійні адреси сторінок відеопам'яті розташовано у зворотному порядку (так як контролер відеоадаптера читає за фізичними адресами, порядок кольорів смужок теж стане зворотнім).
Описано (болдом виділено теми, що безпосередньо стосуються захищеного режиму):
- Принципи сторінкової організації пам'яті.
- Її реалізація, директорії та каталоги сторінок. Робота із записами в них. TLB, CR3.
- Засоби процесора для заміщення сторінок, виключення Page Fault.
- Розширення механізму сторінкової організації. Регістр CR4, великі сторінки (PSE), доступ до пам'яті за межами 4Гб - 1 (PAE), доступ до пам'яті за межами 4Гб - 2 (PSE-36).
- Відеорежим 0x13 VGA-сумісних адаптерів.
Сторінкова організація в 64-бітному режимі поки не розглядалася. Якщо буде цікаво - пишіть ;-)
Реалізація поки тільки змішана, C-asm. Якщо буде зацікавленість, можна написати і чисто асемблерну.
Архів з файлами уроку:
pm_08.zip.
Незначні зміни, доповнення та виправлення будуть вноситися прямо в цей файл, про що я старатимуся повідомляти.
На сьогодні все. Наступний урок буде присвячений багатозадачності без використання апаратного переключення задач та TSS.
Дякую за увагу
Якщо є запитання, виправлення, пропозиції - пишіть! Багато часу цьому приділяти, на жаль, не можу, але якщо з того буде комусь користь - спробуємо щось придумати.