감동이중요해 2020. 1. 25. 00:13

메모리 관리

메모리 계층 구조

  • Block

    • 보조기억장치와 주기억 장치 사이의 데이터 전송 단위
    • OS마다 차이는 있으나, 일반적으로 1~4 kb
    • 1 Byte만 사용하더라도 Block 단위로 메모리에 올라간다.
  • Word

    • CPU(레지스터)와 주기억장치(메모리) 사이의 데이터 전송 단위
    • 16 ~ 64 bit의 크기를 갖는다.

Address Binding

  1. Compile time binding

    • 프로세스가 적재될 메모리의 위치를 100% 아는 경우(절대 위치 사용)
    • 한 번 적재되면 위치가 변하지 않는다.
    • 프로그램 전체가 메모리에 적재된다.
  2. Load time binding

    • 메모리 적재 위치를 컴파일 시간에 모르는 경우, 대처 가능한 상대 주소를 생성
      • 0번에 데이터 A가 적재된다고 가정
      • 실제로 프로그램을 실행시켰더니 400번지에 데이터 A가 적재되었음.
      • 0과 400은 400만큼 차이가 나므로 Allocation Address = 400
      • 400만큼 Re Location
    • 프로그램 전체가 메모리에 적재된다.
  3. Runtime binding

    • Address binding을 실제 수행 전까지 연기(프로세스가 수행 중 다른 위치로 이동할 수 있기 때문)
    • HW의 도움 필요(Memory Management Unit)
    • 대부분의 OS가 사용

Dynamic Loading

Address binding은 프로그램이 연속된 메모리에 적재되는 경우

일부만 적재할 필요가 있는 경우가 생긴다.

  • 모든 루틴을 교체 가능한 형태로 디스크에 저장
    • 실제 호출 전까지 적재하지 않음.
  • 메인 프로그램만 메모리에 적재
  • 루틴 호출 시점에 Address Binding 수행

메모리 공간의 효율성이 좋아진다.

Swapping

  • Swap in : Ready Queue <- Suspended ready(새롭게 시작하는 프로세스)
  • Swap out : Ready Queue -> Suspended ready(프로세스 할당이 끝난, 수행 완료 된 프로세스)