ncloader  0.1
 모두 데이타 구조 파일들 함수 변수 타입정의 열거형 타입 열거형 멤버 매크로 그룹들 페이지들
Page frame 관리자

Page allocator 는 Page frame 을 관리한다. Buddy allocator 를 나름대로(독자적으로) 이해해서, 구현 하였다. 더 자세히 ...

함수

struct page_allocatorpage_allocator_init (void *info, void *addr, unsigned int size)
 page frame 관리자를 초기화 한다. 더 자세히 ...
 
int page_allocator_fini (struct page_allocator *handle)
 page frame 관리자를 종료한다. 더 자세히 ...
 
void * page_allocator_alloc (struct page_allocator *handle, unsigned int nr_of_pages)
 page frame 을 할당한다. 더 자세히 ...
 
int page_allocator_free (struct page_allocator *handle, void *addr)
 할당 된 page frame 을 해제한다. 더 자세히 ...
 
unsigned int page_allocator_info_size (unsigned int size)
 page allocator 가 관리 정보를 담기 위해 필요한 information block 의 크기 더 자세히 ...
 
int page_allocator_get_region (struct page_allocator *handle, unsigned int *start, unsigned int *end)
 handle 이 관리하고 있는 Page frame 관리 영역에 대한 정보를 제공한다. 더 자세히 ...
 

상세한 설명

Page allocator 는 Page frame 을 관리한다. Buddy allocator 를 나름대로(독자적으로) 이해해서, 구현 하였다.

작성자
Sung-jae Park nices.nosp@m.j@ni.nosp@m.cesj..nosp@m.com
날짜
2013-9-21

할당 가능 한 page frame 에 대한 정보를 담고 있는 Bitmap 블럭과 사용 중인 page frame 에 대한 정보를 담고 있는 Bitmap 블럭을 이용해서 할당과 해제를 관리한다.

할당 가능 한 bit (page frame) 을 찾을 때, 매 Bit 를 하나씩 비교 하고 있기 때문에, 추 후 개선 가능성이 있다.

함수 문서화

void* page_allocator_alloc ( struct page_allocator handle,
unsigned int  nr_of_pages 
)

page frame 을 할당한다.

매개변수
[in]handlepage frame 관리 정보
[in]nr_of_pages할당 받을 page frame 개수. 2 의 멱수.

Stage 1. Finding available bit-group.

Stage 2. Split found bit-group to requested one.

Stage 2.1 Mark splited bit-groups to be available

+ 이 함수를 호출하는 함수들에 대한 그래프입니다.:

int page_allocator_fini ( struct page_allocator handle)

page frame 관리자를 종료한다.

매개변수
[in]handle
반환값
int
int page_allocator_free ( struct page_allocator handle,
void *  addr 
)

할당 된 page frame 을 해제한다.

매개변수
[in]handlepage frame 관리 정보
[in]addr할당된 page frame 주소
반환값
int
int page_allocator_get_region ( struct page_allocator handle,
unsigned int *  start,
unsigned int *  end 
)

handle 이 관리하고 있는 Page frame 관리 영역에 대한 정보를 제공한다.

매개변수
[in]handlePage allocator 핸들
[out]start시작 주소
[out]end끝 주소
반환값
int

+ 이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

unsigned int page_allocator_info_size ( unsigned int  size)

page allocator 가 관리 정보를 담기 위해 필요한 information block 의 크기

매개변수
[in]size할당 가능 한 페이지들의 전체 크기 (byte 단위)
반환값
unsigned int

i = (((i << 1) >> 3) << 1) i = ((i >> 2) << 1) i = (i >> 1)

+ 이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

+ 이 함수를 호출하는 함수들에 대한 그래프입니다.:

struct page_allocator* page_allocator_init ( void *  info,
void *  addr,
unsigned int  size 
)

page frame 관리자를 초기화 한다.

매개변수
[in]infopage frame 관리를 위해 정보를 담고 관리 할 메모리 버퍼
[in]addr시작 주소
[in]size사용 가능 한 메모리 크기
반환값
struct page_allocator *

+ 이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

+ 이 함수를 호출하는 함수들에 대한 그래프입니다.: