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
'Computer Science > Operating System' 카테고리의 다른 글
[OS] 19장: TLB (Translation Lookaside Buffers) (1) | 2024.07.01 |
---|---|
[OS] 18장: 메모리 가상화의 Paging (0) | 2024.06.30 |
[OS] 16장: Segmentation (0) | 2024.06.28 |
[OS] 15장: 주소 변환의 원리 (0) | 2024.06.27 |
[OS] 13장: Memory Virtualization (0) | 2024.06.26 |