Skip to content

Latest commit

 

History

History
53 lines (36 loc) · 2.31 KB

Swapping.md

File metadata and controls

53 lines (36 loc) · 2.31 KB

Swapping



1) 특징

  • External fragmentation : 공간이 쪼개져있는 것들을 합하면 들어갈 수 있는 경우

    → memory compaction (밀어서 공간 합치기) : overhead가 크다 (❌)

    → extra space : 공간을 여유롭게 할당 (👍)







2) 구현방법

1. Bits Maps

  • MM의 allocation units를 설정(최소단위) → bit단위 ( 4.1 unit짜리 메모리는 5unit만큼 할당가능)
  • 이에 따라 bit map 작성 (빈부분 : 0, 찬부분 : 1) → MM에 저장되어있음
  • allocation unit 작으면 → bit map 커짐
  • allocation unit 커지면 → 낭비되는 메모리가 늘어남 (Internal fragmentation)
  • 찾는데 시간걸림



2. Linked List

  • [ P or H ] start ] size ] : 프로세스인지 홀인지 / 시작실제 주소 / 사이즈
  • double linked lists
  • internal fragmentation은 없음
  • allocation unit 필요없음
  • 홀이 붙어있는경우 따로 노드 x → 합쳐서 한 노드로





3) 새로운 자리로 할당하는 방법

  1. first fit : 매번 처음부터 빈자리 찾음 (계속 앞부분만 씀)
  2. next fit : 이전 탐색이 끝난 부분부터 탐색
  3. best fit : 가장 공간이 딱 맞는 곳으로 배정 (다 찾아야해서 오래걸림)
  4. worst fit : 가장 공간이 큰곳에 배정 (다 찾아야해서 오래걸림)
  5. quick fit : 많이 쓰이는 사이즈만 따로 빼서 관리 (유지비용든다)
  6. others : 홀과 프로세스 노드를 나눠서 저장 (유지비용든다)
  7. 홀 자체를 linked-list정보 저장소로 쓰자 (메모리를 아끼자)




4) 문제점

  • 프로그램 메모리 전체가 왔다갔다 -> 필요없는 부분들까지도 이동 -> 효율떨어짐
  • Physical 주소 영역 < 프로그램 주소 영역인 경우에는 다룰 수 없음