е броят на рамката = броят на страниците (linux)?

Проучвам драйвер за устройство на linux и открих, че броят на страниците е равен на броя на рамката. Всяка страница се съпоставя с всеки кадър. Казва, че когато програмата се нуждае от памет, тя ще разпредели страници.

Но в книгите за ОС открих, че виртуалният адрес се разделя на страници и тези страници се зареждат в рамки. Тогава как броят на страниците може да бъде равен на рамката?

кое от горното е правилно? как linux съхранява информация в таблицата на страниците по отношение на картографиране на виртуална страница, рамка?

Аз съм напълно объркан.


person Suri    schedule 02.08.2012    source източник


Отговори (1)


Физическите страници се наричат ​​page frames (можете да ги наричате рамки). Терминът page е запазен за страници във виртуалната памет.

Виртуалната памет е разделена на парчета с еднакъв размер от ядрото. Физическата памет също е разделена на страници (рамки на страници) с еднакъв размер.

Например, ако имаме 4GB RAM, на 32-битова архитектура, това означава: 1048576 рамки за страници с размер 4KB

Да продължим,

за всеки кадър на страница (физическа страница) ядрото поддържа структура struct page. Тази структура е дефинирана в linux/mm_types.h(https://github.com/torvalds/linux/blob/master/include/linux/mm_types.h), тази структура съдържа член с име mapping (struct address_space *mapping), който указва адресното пространство, в което се намира рамката на страницата. Има и член с име index, който представлява отместването в това картографиране.

Всички структурни страници се съхраняват в глобален mem_map масив, този масив се използва от ядрото, за да знае всички асоциации между виртуалната и физическата памет.

И накрая, за да преобразува виртуален адрес във физически, ядрото използва макроса virt_to_page(), дефиниран в asm-i386/page.h, който сочи към pfn_to_page(https://github.com/torvalds/linux/blob/master/include/asm-generic/memory_model.h).

Преди пример, нека видим оформлението на адрес в 32-битова архитектура

| 10 бита - Справочник | 10 бита - Таблица на страници | 12 бита - отместване |

Нека да видим пример за преобразуване на виртуален адрес на паметта във физически:

http://img11.imageshack.us/img11/9426/pagingexample.png

Надявам се това да помогне.

За разбирането.

person TOC    schedule 03.08.2012