Buddy System의 free_area 구조체 중 free_list
버디 시스템의 할당을 공부하는 중에, 책(Understanding the linux virtual memory manager)에서 free_area 구조체가 다음과 같이 선언되어 있었습니다.
typedef struct free_area_struct {
struct list_head free_list;
unsigned long *map;
} free_area_t;
linux cross reference 사이트에서 2.4 커널에서 include/linux/mmzone.h에 정의되었다고 나오지만
3.4 기준 커널에서 살펴보면 존재하지 않습니다. 수정된 것으로 보이는 구조체는
struct free_area {
struct list_head free_list[MIGRATE_TYPES];
unsigned long nr_free;
};
nr_free야 free page 수를 나타내는 것이라 쳐도,
free page의 double linked list를 관리하는 free_list 구조체가 왜 배열로 선언되어 관리되는지 궁금합니다.
MIGRATE_TYPES는 현 커널에서 5로 정의되어 있고, 이후에도 migratetype이라는 정수형 변수가 할당/해제 시
지속적으로 매개변수로 전달되는데, 어떤 원리로 관리되는 것인가요?
긴 글 읽어 주셔서 감사합니다~
댓글 달기