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

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

Як же ядро працює з найдорожчим що в нього є, з пам'яттю. Перші спроби розібратися з нальоту що і як ні до чого не привели. Не всі так просто як хотілося б. Отовсюду стирчать кінці, начебто всі ясно, але як зв'язати їх воєдино...

Виникла думка звернутися до минулого , щоб принаймні розібратися як усе це розвивалося (версія 0.1). Це допомогло зрозуміти і сучасне ядро. Надалі мова йтиме про ядра серії 2.2 про зміни в 2.4 буде повідомлено особливо.

Не буду поглиблюватися в тонкості функціонування захищеного режиму процесора про це написано цілі фоліанти. Подивимося тільки саму суть.

Отже, в овнове усього лежать сторінки пам'яті. У ядрі вони описуються структурою mem_map_t.

typedef struct page {

/* these must be first (free area handling) */

struct page *next;

struct page *prev;

struct inode *inode;

unsigned long offset;

struct page *next_hash;

atomic_t count;

unsigned long flags; /* atomic flags, some possibly updated asynchronously */

struct wait_queue *wait;

struct page **pprev_hash;

struct buffer_head * buffers;

} mem_map_t;

Вже отут спостерігається наворороченность. Безліч усяких посилань. Усі вони використовуються . Одна сторінка може знаходитися в різних списках , наприклад і всписке сторінок у сторінковому кеше й у списку сторінок стосовних до відображеного в пам'ять файлу (inode).У структурі описывающей останній можна знайти і зворотне посилання,що дуже зручно.

Усі сторінки адресуються глобальним покажчиком mem_map

mem_map_t * mem_map

Адресація сторінок порисходит дуже хитро. Якщо раніш у структурі page було окреме поле указывающее на фізичну адресу (map_nr), то тепер він обчислюється

static inline unsigned long page_address(struct page * page)


Реферати!

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







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

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

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