[Computer Science]/[운영체제(OS)]

[운영체제(OS)] 10-4) 커널 메모리의 할당

극꼼 2023. 3. 27. 10:08
반응형


<메모리 압축>

페이징의 대안은 메모리 압축입니다. 여러 프레임을 하나로 압축하여 시스템이 페이지 스와핑에 의존하지 않고 메모리 사용량을 줄일 수 있게 합니다.


<커널 메모리 할당>

: 사용자 모드에서 수행중인 프로세스가 추가 메모리를 요구하면 커널이 관리하는 가용 페이지 프레임에서 페이지가 할당됩니다.

사용자 프로페스가 단 한 바이트만 필요로 한다면 프로세스가 한 페이지 프레임을 할당받기 때문에 내부 단편화가 발생합니다.

커널 메모리는 이럴 때 보통의 사용자 모드 프로세스에 할당해 주기 위한 페이지 리스트와는 별도의 메모리 풀에서 할당해줍니다.

이유 1. 커널에 있는 자료 구조들은 페이지 크기보다 작은 크기를 가지기도 하므로, 단편화에 의한 낭비를 최소화.

이유 2. 사용자 모드 프로세스에 할당되는 페이지들은 물리 메모리 상 연속적일 필요가 없음.


<커널 프로세스에 할당되는 메모리 관리 기법>

1. 버디 시스템(Buddy System) : 외부 단편화를 해결하기 위한 시스템으로, 연속된 페이지를 할당하거나 할당을 해제할 때 사용합니다. 원하는 크기의 메모리가 나올 때까지 페이지를 반으로 자르는 과정을 반복합니다.

* Buddy : 반으로 자를 때 잘려진 다른 쪽

 

* 할당을 해제할 때

  • 자신의 buddy가 할당되어 있음 → 혼자 반환
  • 자신의 buddy가 free → buddy와 합쳐져서(합병) 하나의 chunk가 되어 반환
  • 장점 : 합병(coalescing) 과정을 통해 인접한 버디들이 하나의 큰 segment로 합쳐질 수 있음.

 

2. 슬랩 할당(Slab Allocation) : 특정 크기의 메모리 할당을 빠르게 처리할 수 있게 최적화되어 있습니다.

  • slab : 하나 이상의 연속된 페이지로 구성.
  • cache : 하나 이상의 슬랩들로 구성. 각 커널의 자료구조마다 하나의 캐시가 존재하며, 각 캐시는 커널 자료구조 인스턴스 객체들로 채워져 있습니다.
  1. 캐시가 생성 → free로 표시된 몇 개의 객체들이 캐시에 할당
  2. 캐시 내의 객체의 수는 해당 슬랩의 크기에 의해 결정
  3. 커널 자료구조를 위한 객체가 필요할 때 free 객체 중 하나를 캐시로부터 할당 → used로 표시해줌

 

반응형