-
External fragmentation : 공간이 쪼개져있는 것들을 합하면 들어갈 수 있는 경우
→ memory compaction (밀어서 공간 합치기) : overhead가 크다 (❌)
→ extra space : 공간을 여유롭게 할당 (👍)
- MM의 allocation units를 설정(최소단위) → bit단위 ( 4.1 unit짜리 메모리는 5unit만큼 할당가능)
- 이에 따라 bit map 작성 (빈부분 : 0, 찬부분 : 1) → MM에 저장되어있음
- allocation unit 작으면 → bit map 커짐
- allocation unit 커지면 → 낭비되는 메모리가 늘어남 (Internal fragmentation)
- 찾는데 시간걸림
- [ P or H ] start ] size ] : 프로세스인지 홀인지 / 시작실제 주소 / 사이즈
- double linked lists
- internal fragmentation은 없음
- allocation unit 필요없음
- 홀이 붙어있는경우 따로 노드 x → 합쳐서 한 노드로
- first fit : 매번 처음부터 빈자리 찾음 (계속 앞부분만 씀)
- next fit : 이전 탐색이 끝난 부분부터 탐색
- best fit : 가장 공간이 딱 맞는 곳으로 배정 (다 찾아야해서 오래걸림)
- worst fit : 가장 공간이 큰곳에 배정 (다 찾아야해서 오래걸림)
- quick fit : 많이 쓰이는 사이즈만 따로 빼서 관리 (유지비용든다)
- others : 홀과 프로세스 노드를 나눠서 저장 (유지비용든다)
- 홀 자체를 linked-list정보 저장소로 쓰자 (메모리를 아끼자)
- 프로그램 메모리 전체가 왔다갔다 -> 필요없는 부분들까지도 이동 -> 효율떨어짐
- Physical 주소 영역 < 프로그램 주소 영역인 경우에는 다룰 수 없음