프로그래밍[Univ]/운영체제

[OS] Virtual Memory part 2 (Kernel)

Cloud Travel 2012. 6. 21. 00:31

* Allocation Kernel Memory

 - Kernel : PCB와 같이 Resource에 해당하는 structure에 관련된 request를 실시한다.

               (structure memory allocation)

 - Process와 다르게 Kernel이 하는 것은 알 수 있다.

 - 때때로 contiguous memory allocation을 실시한다 > I/O buffer 용도

 - Allocation 실패가 발생하면 안되기 때문에 free Memory poll을 미리 만들어 둔다.


* Buddy System Allocation

 - Memory size가 수용 가능한 크기로 나눈다.

   (2^n allocation 방법)

 - 만약, 256 kb memory가 존재한다면, 

   128.x ~ 256 : 256 

   64.x ~ 128 : 128

   32.x ~ 64 : 64

   16.x ~ 32 : 32

   ...

  ex) 

   


* Slab Allocation

 - 계속 사용되는 Object를 Allocation&de-Allocation 하는 시간에 의해 Performance가 떨어진다.

 - 각 Object는 Allocation마다 동일한 크기를 요청한다.

 - 이러한 특징을 가진 단점을 해결하기 위해 미리 확보해두는 Memory, 이 각각의 단위를 Slab이라고 한다.

 - cache는 각각의 slab에 대한 pointer를 가지고 있다.

    (slab의 집합, object 마다 다른 slab을 가진다)

 - fragmentation이 없으며, memory allocation speed가 향상된다.