Зворотний зв'язок

Як Uniux працює з пам'яттю

page_dir = pgd_offset(vma->vm_mm, address);

if (pgd_none(*page_dir))

return;

if (pgd_bad(*page_dir)) {

printk("bad page table directory entry %p:[%lx]\n", page_dir, pgd_val(*page_dir));

pgd_clear(page_dir);

return;

}

page_middle = pmd_offset(page_dir, address);

if (pmd_none(*page_middle))

return;

if (pmd_bad(*page_middle)) {

printk("bad page table directory entry %p:[%lx]\n", page_dir, pgd_val(*page_dir));

pmd_clear(page_middle);

return;

}

page_table = pte_offset(page_middle, address);

Узагалі ж усі дані про використовуваний процесом пам'яті містяться в структурі mm_struct

struct mm_struct {struct vm_area_struct *mmap; /* Список відображених областей */

struct vm_area_struct *mmap_avl; /* Ті ж області але вже у виді дерева для більш швидкого пошуку*/

struct vm_area_struct *mmap_cache; /* Остання знайдена область*/

pgd_t * pgd; /*Каталог таблиць*/

atomic_t count;

int map_count; /* Кількість областей*/

struct semaphore mmap_sem;


Реферати!

У нас ви зможете знайти і ознайомитися з рефератами на будь-яку тему.







Не знайшли потрібний реферат ?

Замовте написання реферату на потрібну Вам тему

Замовити реферат