#물리 메모리 관리 자료구조
Node -> Zone -> Page Frame
Node 는 여러개의 Zone 으로 구성 됨.
Zone 은 여러개의 Page Frame으로 구성됨. Page Frame 은 물리 메모리의 최소 단위.
#BUDDY ALLOCATOR 와 SLAB ALLOCATOR
Page Frame은 보통 최소 단위로 4KB를 사용한다. 이로 인해서 외부 단편화(External Fragmentation) , 내부 단편화 (Internal Fragmentation)
가 발생한다. 이러한 단편화를 해결하기 위해서 리눅스에서 Buddy allocator 와 Slab allocator 를 사용한다.
하지만 Buddy 시스템이 Page Frame 을 반복적으로 할당/해제 해야하는데 오버헤드가 많이 발생하였다. 그래서 최근에는 Lazy Buddy 가 등
장했다. Buddy 시스템에서 Page Frame을 할당해주기 위해서는 큰 Page를 쪼개서 할당을 하고, 해제시에는 큰 Page로 합쳐서 관리를 해야한
다. 이 과정에서 비트맵도 역시 수정을 해야할 필요가 있다. 하지만 Lazy Buddy 에서는 할당되었던 Page Frame을 합치는 해제 과정을 최대한
뒤로 미룸으로서 그 문제를 해결했다.
이에 반해 Slab allocator 는 내부 단편화를 줄이기 위해서 이용된다. Page Frame의 최소 단위인 4KB 보다 작은 공간을 요청 받을 때, 4KB를
할당해준다면 이는 굉장한 낭비가 되기 때문이다. 그래서 자주 할당되는 크기를 Cache로 가지고 있는 것이다. 이 크기를 32Byte 에서
128KB (혹은 그 이상) 로 유지하고, 관리하는 방식이다.
'잡다한 IT > 운영체제' 카테고리의 다른 글
pthread 관련 함수-1 (0) | 2018.08.16 |
---|---|
MMU 와 MPU 의 차이점 (0) | 2018.07.11 |
스케줄링 고려할 점 (0) | 2018.05.02 |
fork , vfork , clone (0) | 2018.05.02 |
set-associative cache (0) | 2018.04.24 |