|
ncloader
0.1
|
Page allocator 는 Page frame 을 관리한다. Buddy allocator 를 나름대로(독자적으로) 이해해서, 구현 하였다. 더 자세히 ...
함수 | |
| struct page_allocator * | page_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 를 나름대로(독자적으로) 이해해서, 구현 하였다.
할당 가능 한 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] | handle | page 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 page_allocator_free | ( | struct page_allocator * | handle, |
| void * | addr | ||
| ) |
할당 된 page frame 을 해제한다.
| [in] | handle | page frame 관리 정보 |
| [in] | addr | 할당된 page frame 주소 |
| int page_allocator_get_region | ( | struct page_allocator * | handle, |
| unsigned int * | start, | ||
| unsigned int * | end | ||
| ) |
handle 이 관리하고 있는 Page frame 관리 영역에 대한 정보를 제공한다.
| [in] | handle | Page allocator 핸들 |
| [out] | start | 시작 주소 |
| [out] | end | 끝 주소 |
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:| unsigned int page_allocator_info_size | ( | unsigned int | size) |
page allocator 가 관리 정보를 담기 위해 필요한 information block 의 크기
| [in] | size | 할당 가능 한 페이지들의 전체 크기 (byte 단위) |
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] | info | page frame 관리를 위해 정보를 담고 관리 할 메모리 버퍼 |
| [in] | addr | 시작 주소 |
| [in] | size | 사용 가능 한 메모리 크기 |
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.: