Virtual Memory

happiyoung_·2026년 1월 30일

운영체제

목록 보기
8/11
  • 일부만 주기억장치에 적재되므로, 보다 많은 프로세스들이 주소공간을 활용할 수 있게 됨
  • 다중프로그래밍 정도가 높아지고, CPU와 기억장치의 활용도 상승
    → 다중 프로그래밍 정도가 높아지면, 프로세스가 프로그램 수행 시간보다 페이지 교환시간에 집중됨 : 스레싱 현상
  • 개별 프로그램의 응답시간이 빨라지는 것은 아님

동작원리

  • 가상기억공간과 실기억공간을 연결하는 주소 매핑 과정 필요
  • 논리 어드레스 공간을 블록으로 나누어 놓고 실제 주기억 용량에 맞는 블록만을 로드 이때, 어떤 블록을 가져올 것인지는 DAT (Address 변환 테이블) 사용
  • 가상주소는 프로그래머가 쓴 보조기억장치의 번지 (실행중인 프로세스가 참조하는 주소)
  • 실주소는 주기억장치에서 사용가능한 실제 주소

2. 가상기억장치의 구분

가상기억장치의 구현 방법에 따라페이징
세그멘테이션
페이징/세그멘테이션 혼용
사상표 색인을 찾는 방법에 따라직접 사상 방법
연관 사상 방법
직접/연관 사상 혼용 방법

3. 가상기억장치의 구현 방법에 따른 분류

(1) 페이징 (Paging)

블록 사이즈가 고정(동일)한 방식으로 사용자가 작성한 프로그램은 하드웨어에 의해 페이지 단위로 분해

  • 물리적 (실) 주소 공간은 가상기억장치의 페이지 크기와 같은 페이지 프레임으로 나누어 사용된다.
  • 최초, 최적, 최악 적합등 배치 기법이 필요없음

장점

  • 세그먼트 테이블과 달리 페이지 테이블은 블록의 크기를 나타낼 필요가 없다.
  • 보조기억장치의 페이지 크기와 주기억장치의 페이지 프레임의 크기가 동일 ⇒ 외부 단편화 발생 x

단점

  • 내부단편화 발생할 수 있다.
  • 세그먼트 기법에 비해 주소변환 테이블을 기억하기 위한 많은 장소 필요 (페이지 사상으로 비용이 증가하고 수행속도 감소)
  • 페이지는 프로그램에 상응하는 논리적의미를 갖지 못함 (세그먼트에 비해 공유, 보호 지원x)

(2) 세그멘테이션 (Segmentation)

블록사이즈가 가변적인 방식, 가변 사이즈 블록을 세그먼트라고 함

  • 세그먼트는 프로그램에서 서브루틴과 같은 의미
  • 세그먼트를 나누는 일은 프로그래머의 일
  • 기억장치의 사용자 관점을 지원하는 기억장치 관리 기법으로 논리주소 공간은 세그먼트의 모임 ⇒ 최초, 최적, 최악 적합 등 배치 기법이 필요
  • 세그먼트 테이블의 각 항목은 세그먼트의 기준 (base) 과 세그먼트의 한계 (limit)을 가지고 있음

장점

  • 내부단편화 발생 x
  • 세그먼트 공유와 보호 측면에서 세그먼트 시스템은 페이지 시스템보다 수행방법이 쉽고 명확
  • 페이징 시스템에 비해 세심한 액세스 제어 가능

단점

  • 외부 단편화가 발생 가능 ⇒ 세그먼트의 크기가 고정되지 않고 가변적
  • 세그먼트의 크기가 가변적이라 세그먼트 영역이 다른 세그먼트영역을 침범하지 않기 위한 특별한 하드웨어 관리 필요

(3) 페이징/세그멘테이션 혼용 기법

  • 세그먼트는 너무 가변적, 세그먼트의 크기가 너무 커질때를 해결
  • 프로그램을 논리적인 세그먼트 단위로 분할, 분할된 각 세그먼트들을 다시 각각 페이지 단위로 분할
  • 외부 단편화 제거, 내부단편화 발생, 사상표가 차지하는 공간의 오버헤드 증가
  • 각각의 세그먼트들마다 하나씩의 페이지 테이블 유지관리 필요

4. 사상표 색인을 찾는 방법에 따른 분류

(1) 직접사상방법

  • 페이지 사상표는 주기억장치에 존재
  • 프로세스의 가상기억장치를 구성하는 모든 페이지에 대한 항목이 페이지 사상표에 존재
  • 명령어 수행주기 외에 추가적인 주기억장치 수행주기 요구 → 페이지 테이블을 위해서 한번, 그 메모리 자체를 위해서 한번, 총 2번의 기억장치 접근 필요
  • 페이지 테이블의 각 엔트리에는 유효/무효 비트를 둠
    • 유효 비트라면 관련된 페이지가 프로세스의 합법적인 페이지임을 나타냄
    • 무효 비트라면 그 페이지는 프로세스의 논리 주소공간에 속하지 않는다는 것

(2) 연관사상방법

  • 빠른 주소 변환을 위해 고속의 연관기억장치를 이용하여 페이지 사상표 전체를 넣는 방법
  • 비용 많이들고, 구현하기 힘듦
  • 캐시에 비해 매우 비싸서 이용하기 힘듦

(3) 연관/직접 사상 방법

  • 보다 적당한 비용으로 연관사상의 장점을 살릴 수 있는 절충 방안
  • 연관사상표 : 국부성에 의거, 최근에 가장 많이 참조된 페이지
  • 페이지 사상표 : 연관 사상표에서 제외된 나머지 페이지

TLB (Translation Lookaside Buffer)

프로세서 내부에 있는 장치로 가상주소를 물리주소로 변환하는 속도를 높이기 위해 사용되는 캐시의 일종

5. 블록사상

(1) 페이지 크기가 작을 경우

  • 더 많은 페이지와 frame이 존재하게 되어 → 페이지 테이블도 함께 커진다.
  • 페이지 테이블 증가로 테이블 단편화 발생
  • 작은 크기의 페이지가 지역성이 향상되어 프로세스가 효과적인 working set을 확보하는데 도움
    • working set : 일정한 시간 간격사이에 프로세서가 참조하는 페이지들의 집합
    • 공간지역성 : 어떤 주소를 접근하면 그 주변 주소들도 함께 접근될 가능성이 높다는 것
    • 시간지역성 : 최근에 접근한 데이터나 명령을 곧 다시 사용할 가능성이 높다는 것

(2) 페이지 크기가 클 경우

  • 디스크로부터 입출력 전송 횟수 감소 → 입출력시간 최소화하기에 효율적 디스크에서 하나의 페이지를 메모리로 전송하는 시간은 커짐
  • 페이지 부재율 감소
  • 참조되는 정보와 무관한 정보가 주기억장치에 적재되어 기억장치 내부 단편화 증가
  • 전반적인 흐름은 페이지 크기를 크게하는 경향 존재

0개의 댓글