리눅스 커널 스터디 3주차

이동욱

2022/05/28

메모리 관리 (4장)


메모리 관리 기법과 가상 메모리


물리 메모리 관리 자료 구조


Zone


페이지 프레임


struct page {
    page_flags_t flags;
    union {
        struct address_space *mapping;
        void *s_mem;
    }
    struct {
        union {
            pgoff_t index;
            void *freelist;
            bool pfmemalloc
        };
        union {
            ...
        }
    }
    union {
        struct list_head lru;
        struct {
            struct page *next;
            int pages; pobjects;
        }
        struct slab *slab_page;
        struct rcu_head rcu_head;
    }
    ...
#if defined(WANT_PAGE_VIRTUAL)
    void *virtual;
#endif /* WANT_PAGE_VIRTUAL */
};

버디와 슬랩


버디 할당자 (Buddy Allocator)


// ~/include/linux/mmzone.h

#define MAX_ORDER 10

struct zone {
    ...
    struct free_area free_area[MAX_ORDER];
    ...
};

struct free_area {
    struct list_head free_list;
    unsigned long *map;
}

슬랩 할당자 (Slab Allocator)


가상 메모리 관리 기법


가상 메모리와 물리 메모리의 연결 및 변환


참고 문헌


>> Home