пʼятницю, 22 липня 2011 р.

Уроки захищеного режиму x86. Урок 8

Восьмий урок захищеного режиму. 

Попередні : 
  1. "Уроки захищеного режиму x86. Урок 0 та 1". 
  2. "Уроки захищеного режиму x86. Урок 2". 
  3. "Уроки захищеного режиму x86. Урок 3". 
  4. "Уроки захищеного режиму x86. Урок 4".
  5.  "Уроки захищеного режиму x86. Урок 5".
  6.  "Уроки захищеного режиму x86. Урок 6". 
  7.  "Уроки захищеного режиму 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.

Дякую за увагу

Якщо є запитання, виправлення, пропозиції - пишіть! Багато часу цьому приділяти, на жаль, не можу, але якщо з того буде комусь користь - спробуємо щось придумати.