4 страница може да се намира във физическата памет или във виртуалната памет. На фиг. 3 е показан начина на адресиране на 4KB страница при процесор на Intel.
Фиг. 3.
Адресиране на физическата оперативна памет при 4 KiB страници Линейният (виртуален) адрес,
който микропроцесорът генерира, се разделя на 4 части.
Старшите 2 бита са отместване в структура наречена Page Directory Pointer Table (PDPT).
Началото на тази структура се сочи от текущото съдържание на Управляващ Регистър 3
(CR3). Всеки елемент от PDPT е указател към началото на друга структура наречена Page
Directory (PD). Всеки елемент от PD е указател към структура с име PageTable (PT). Всеки елемент от PT (PTE) е дескриптор на една страница в паметта. Отместването в страницата се задава чрез младшите 12 адреса на линейния адрес.
След като се адресира страница от паметта трябва да се провери дали тя се намира във физическата оперативна памет или във виртуалната памет. За целта, в дескриптора на всяка страница има бит с име Present (P). Ако този бит е 1, то страницата е във физическа памет. За да се ускори конвертирането на линейните до физически адреси се използва асоциативна кеш памет в която се буферират последно конвертираните адреси. Тази памет се нарича Translation Lookaside Buffer (TLB). На Фиг. 4 е показано как се използва TLB при процесорите на Intel. Когато виртуален (линеен) адрес трябва да бъде преобразуван до
физически адрес, първо се проверява дали в TLB има запис за този линеен адрес. Ако се намери съвпадение (TLB hit), от TLB се извлича физическия адрес и достъпът до паметта може да продължи с кеширане на паметта. Ако обаче няма съвпадение (TLB miss), се активира търсене на физическия адрес в таблицата на страниците (Page Table) при 4KB страници или в PD при 2MB страници.
5
Фиг. 4. Преобразуване на виртуален до
физически адрес при работа с виртуална памет Ако
дадена страница се адресира, но не е налице (page not present), ще възникне събитие от тип Page Fault и операционната система трябва да го обработи. В този случай се налага страницата да бъде намерена във виртуалната памет и заредена обратно във физическата памет (виж Фиг. 5).
Фиг. 5. Събития, генерирани при работа с виртуалната памет
6
Ако физическият адрес вече е буфериран в TLB се реализира проверка дали текущият процес има права за достъп до паметта (Protection Check), която той сочи. При липса на права се генерира събитие Protection Fault, което операционната система трябва да обработи.
Следователно, операционната система се ангажира само с обработката на грешки при достъп до паметта, а всичко останало се поема от микропроцесора.
Сподели с приятели: