본문 바로가기

잡다한 IT/운영체제

물리 메모리 관리

#물리 메모리 관리 자료구조


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