Computer Science/Operating System

[OS] 17장: Free-Space Management

kyxxn 2024. 6. 29. 01:29
728x90

17장: Free-Space Management

물리 메모리의 빈 공간 관리
할당과 회수를 통해 유지함

분할과 병합

물리 주소를 분할해서 사용하고, 다 쓰면 병합하는 식으로 동작

분할

메모리 요구를 하면,

만족하는 크기의 빈 공간이 있을 때 할당 가능

→ 20byte를 요구하면 안됨 (연속적이지 않아서)

1바이트 요구

주소가 20부터 시작인 노드가

21로 바뀌고, len = 9로 바뀜

병합

사용 후 반환 시, 인접한 빈 공간과 합쳐짐

가운데 10~19 사용중이던게 free 되었음

0~19가 합쳐짐

할당 공간의 크기 파악

free 메소드에는 반환될 크기에 대한 정보가 없음
Header 블록을 메모리에 두어서 정보를 받아냄

Header 블록

  • 필수 정보
    • 할당된 크기
  • 추가 정보
    • 속도 향상을 위한 추가 포인터
    • 무결성 체크

Header 블록이 있을 때,

메모리 할당 = 요구 크기 + 헤더블록 크기

메모리 회수 = 요구한 부분만 해제

실행 중 Heap이 모자르다면 ?

→ OS에게 추가 요청 (sbrk(), brk())

할당 전략 & 퀴즈

최적적합

  • 가장 작은 덩어리 선택
  • 전체 탐색 필요
  • 단편화 적음

최악적합

  • 가장 큰 덩어리 선택
  • 전체 탐색 필요
  • 단편화 심함

최초적합

  • 요구만족 첫 번째 덩어리
  • 실행시간 중간

다음적합

  • 마지막 위치 기억 후, 그 리스트부터 탐색
  • 실행시간 빠름

퀴즈

16MB 요구가 있을 때 각 전략은 어떤 선택을 할까 ?

최적적합

17MB

최악적합

36MB

최초적합

22MB

다음적합

18MB