포스트

Page

Page

Page

다중 프로그래밍 환경에서 주 기억 장치를 동적 분할해 메모리 관리 작업이 필요함

Address란?

  • 논리적 주소
    • CPU가 생성하는 주소 프로레스 내부에서 사용함 0부터 시작
  • 물리적 주소
    • 실제 RAM 에 올라가는 위치
  • Address Binding
    • 어떤 프로그램이 어느 메모리의 위치에 어떤 물리적 주소에 load 될지를 결정하는 과정

실제 프로세스의 물리적 주소와 논리적 주소는 같지 않다..

그렇기에 CPU의 MMU가 이러한 주소를 서로 매핑하여 관리한다.

Swapping

  • 메모리는 크지 않다.. 그렇기에 디스크에서 꼭 필요한것만 Swap in 해야한다.
  • 스케줄러에 의해 선정해 swap in/out을 결정한다.

Allocation

**Contiguous Allocation**

  • 연속적 할당이라고 불림
  • 말 그대로 프로세스들이 연속적인 메모리 공간을 차지
  • 고정 분할 기법
    • 메모리를 일정 크기로 나누어 할당한다. → 무조건 올라갈 수 있는 프로세스의 수가 고정된다.
    • 내부 단편화
      • 정해진 사이즈에 남는 공간
  • 동적 분할 기법
    • 프로세스의 크기를 고려해서 할당
    • 외부 단편화
      • 적절한 사이즈가 없어 빈 공간으로 낭비되는 구역
    • first-fit
      • 프로세스의 크기가 맞으면 무조건 할당
    • best-fit
      • 프로세스 크기가 맞은 것 중 가장 작은 hole로 할당, 모든 메모리를 탐색해야함
      • 매우 작은 Hole들이 외부 단편화 발생
    • Wors-fit
      • 가장 큰 Hole에 집어 넣는다.
      • 매우 큰 Hole들이 외부 단편화 발생
  • 이런 단편화를 해결 하기 위해 압축이라는 기술이 있지만… 비용이 매우 많이 드는 작업

Non**Contiguous Allocation (Paging)**

  • 단편화로 인한 비 효율성을 개선하자!
  • 메모리를 Frame으로 나누고 프로세스를 page라는 조각으로 나눈다.
  • 프레임의 순서와 상관없이 각 Framepage 를 저장한다.
    • 이때 추후에 언제든이 찾아갈 수 있게 page table을 통해 주소를 저장해놓는다.
  • 외부 단편화를 해결!
  • Swap out이 간단해진다.
  • 하지만 여전히 page table로 인해 메모리 량 증가 및 접근 속도가 두배
  • 내부 단편화의 문제는 여전히 존재
  • 이를 해결하는 TLB
  • TLB
    • 고속 캐시라고 불린다!
    • 최근 참조 페이지를 TLB에 저장한다. (추후 가장 먼저 찾음)

Non**Contiguous Allocation(Segement)**

  • 각 프로세스를 여러 세그먼트로 나눈다.
    • 세그먼트로 나누는 범위는 함수 하나 일수도, 프로그램 전체 일수도?
  • segement number, offset 등으로 구성
  • paging 비용이 사라지기에 오버헤드가 감소했지만…
  • 외부 단편화는 여전히 존재
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.