* 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가 향상된다.