Limetime's TimeLine
article thumbnail
반응형
  • 가상 메모리(VRAM) : 보조기억장치를 주기억장치처럼 주소지정이 가능하게 만든 저장 공간 할당 체제
  • 가상 주소 : 가상 메모리의 특정 위치에 배정된 주소 → VRAM에 배정된 주소
  • 가상 주소 공간 : 특정 프로세스에 할당된 가상 주소의 영역 → VRAM의 크기
  • 주소 공간 : 특정 프로세스에 가용한 주기억장치 주소(물리적 주소)의 영역 → RAM의 크기
  • 실 주소(물리적 주소) : 주기억장치 상의 특정 위치의 주소 → RAM의 주소

하드웨어와 제어 구조


  • Paging 메모리 관리의 2가지 기본 특성
    1. 프로세스의 모든 메모리 참조 ⇒ 물리 주소
    2. → 이는 동적으로 물리 주소로 변환
    3. 한 프로세스의 주소 공간이 여러 블록으로 분할되고 수행될 때, 메모리의 연속된 영역에 위치할 필요X

But) 프로세스의 코드와 데이터 전체가 메모리에 적재되어야 함

  • 수행시간에 프로세스의 모든 블록이 주기억장치에 적재되어 있지 않아도 된다면?
    1. 프로세스의 크기를 주기억장치의 크기보다 크게 할당 가능
    2. 멀티 프로그래밍 정도를 높일 수 있다.

방안 ⇒ 부분 적재 수행

  1. OS는 초기에 수행될 코드와 참조될 데이터가 포함되도록 몇 개의 블록만 적재
  2. 주기억장치에 적재되지 않은 논리 주소가 참조될 경우 처리기(CPU)는 메모리 접근 오류 인터럽트 를 발생시킨다.
  3. OS는 해당 프로세스를 Blocking!하고 참조된 논리 주소를 포함하는 블록을 주기억장치로 반입 → I/O 요청
  4. OS는 I/O가 완료되면 Block된 프로세스를 준비 상태로 전환시킨다.

부분 적재의 이점

  1. 보다 많은 프로세스를 주기억장치에 유지→ Swapping 오버헤드 감소
  2. → 준비 상태 프로세스가 존재할 가능성이 높음
  3. 주기억장치 크기보다 큰 프로세스를 수행
  4. → 이용 가능한 주기억장치 공간 크기를 의식할 필요가 없다.

타당성

  • 단기간, 작은 영역 코드 수행, 적은 데이터
  • Swap-out 되기 전에 단지 몇 블록만 사용된다.
  • ⇒ 사용하지 않는 블록은 메모리에 적재할 필요X
  • 각 프로세스의 일부분 적재 → 많은 프로세스들을 메모리에 유지
  • 프로세스 적재 시간 절약

논점 검토

⇒ 실 메모리 전체가 프로세스 블록들로 채워져 있는 상황에서 어떤 프로세스의 참조된 논리 주소(블록)가 적재되지 않았을 경우

  1. 메모리 접근 오류 인터럽트 발생 → OS는 해당 블록을 가상 메모리에서 실메모리로 적재
  2. 새로운 블록을 실메모리로 반입하려면 실메모리에 적재되어 있는 블록 하나를 반출해야한다.
  3. 만일 특정 블록이 사용 직전에 반출되었다면 그 블록은 곧 바로 반입 → 메모리 접근 오류 인터럽트 발생

⇒ 위 과정이 반복되고 이러한 상태로 쓰레씽(Thrashing)

쓰레씽 피하기

  • 지역성의 원리 → 블록들의 최근 참조 이력을 근거로 가까운 미래에 사용될 가능성이 적은 블록을 추정하여 반출
    • 지역성 : 프로세스 내의 명령어 및 데이터에 대한 참조가 군집을 이루는 특성
    • 시간 지역성 : 반복문, 함수 호출
    • 공간 지역성 : 순차 수행, 배열 순회
  • 짧은 기간 동안 프로세스의 블록 몇 개만 필요 (가정) - 유효 근거
  • 가까운 미래에 어떤 블록이 필요할 것인지에 대한 지능적 예측도 가능
  • 지역성이 전제될 때, 가상 메모리 실용성의 필요 조건
    1. 가상 메모리 지원 H/W
    2. 실 메모리와 가상 메모리 간 블록 이동을 관리할 S/W 모듈

페이징 (Paging)


  • 가상 메모리에 있는 프로세스는 고정 크기의 페이지(Page)로 분할
  • 실 메모리는 페이지 크기의 프레임(Frame)으로 분할
  • 프로세스 당 하나의 Page Table 유지

가상 메모리 : Page ↔ 실 메모리 : Frame 크기 동일

→ PFN : Page Frame Number

  • 프로세스는 가상 주소로 구성

  • P bit : 존재 비트 (메모리에 존재하는가?)
  • M bit : 메모리에 적재된 후 내용 변경 여부
  • 페이징 시스템에서의 주소 변환
    • 페이지가 메모리의 한 워드를 접근할 때마다 주소 변환이 필요함
    • CPU -(가상 주소)-→ MMU -(물리 주소)-→ Memory

  1. 프로세스를 위한 페이지 테이블의 시작 주소가 특정 레지스터에 저장된다.
  2. 가상 주소의 페이지 번호를 테이블의 인덱스로 사용하여 페이지 테이블 항목을 선정
  3. 그 항목으로부터 페이지가 적재된 프레임 획득
  4. 프레임 번호가 가상 주소의 오프셋과 결합되어 물리 주소 획득

페이지 테이블(PT, Page Table)의 구조

2단계 계층구조를 위한 가상 주소

  • 루트 PT는 항상 메모리에 적재됨
  • 나머지 PT는 일부분만 실 메모리에 적재한채 해당 프로세스 수행 가능

  • Page Table의 단점
    • 다단계 PT 구조에서 PT 단계 수는 가상 주소 공간의 크기에 비례
    • 단계가 클수록 페이지 접근 비용이 증가

역페이지 테이블(Inverted PT)

  • 페이지 테이블 항목이 가상 메모리의 페이지당 하나씩이 아니라 실 메모리의 페이지 프레임당 하나씩 설정된다.
  • 프로세스의 수나 지원되는 가상 메모리 크기와 상관없이 주기억장치의 일정 부분만이 역페이지 테이블 저장을 위해 사용된다.
  • Power PC, UltraSPARC, IA-64 구조에 변형 기법 사용
  • Mach 운영체제에 사용

⇒ 문제점 : 실 메모리 공유가 어려움

1단계 PT 구조 : 실 메모리 접근 횟수 2회 ?

2단계 PT 구조 : 실 메모리 접근 횟수 3회 ??

역페이지 테이블 : 실 메모리 접근 횟수 1회 ???

  • 페이징에서 가상 주소 참조는 적어도 두 번의 실 메모리의 접근을 필요로 한다.
    1. 주소 변환에 필요한 PTE를 위해 실 메모리 접근
    2. 요구된 워드를 가져오기 위해 실 메모리 접근

⇒ 실 메모리 접근 시간이 두 배로 증가하여 역효과를 가져올 수 있다.

⇒ 해결책 : PT를 위한 캐시(TLB)를 사용하는 것

TLB(Translation Lookaside Buffer)

⇒ TLB는 가장 최근에 참조된 PTE를 저장하고 있는 캐시이다.

  • 페이지 테이블만 사용하는 직접 검색
  • TLB를 사용하는 연관 검색
    • 지역성의 원리로 대부분의 가상 주소 참조는 최근에 사용된 페이지들 내의 위치들로 한정될 것이며, 이로 인해 대부분의 참조는 캐시 안에 있는 페이지 테이블 항목(PTE)과 연계될 것이다.
  • TLB Entry
    1. 페이지 테이블 항목의 내용
    2. 페이지 번호
    3. 다수의 TLB 항목을 동시에 조사하는 H/W
  • TLB
    1. 가상 주소가 주어진다.
    2. TLB 조사
      • TLB hit : 실주소 구성 (프레임 번호 추출), 5번으로 이동
      • TLB miss : 페이지 테이블 인덱싱 후 페이지 테이블 항목 참조, 3번으로 이동
    3. 존재 비트
      • 0 : Page Fault (실 메모리에 Page 없음), OS가 HDD에서 주기억장치로 Page 적재 => 메모리 접근 오류 인터럽트!!
      • 1 : 실 메모리에 Page 존재
    4. TLB 갱신
    5. CPU가 물리 주소 생성

TLB hit : TLB에 Page 번호가 있으면 바로 Frame 번호 추출

TLB miss : TLB에 Page 번호가 없을 때

→ 메모리에 존재(PT에 존재) ⇒ Frame 번호 추출 ⇒ TLB 갱신

→ 메모리에 미존재 ⇒ Page를 주기억장치(PT)에 적재 ⇒ Frame 번호 추출 ⇒ TLB 갱신

  • 해당 블록이 캐시에 있는가? (태그, 나머지)X : Cache miss, 주기억장치로부터 해당 워드가 읽힌 후 CPU로 워드 전송
  • O : Cache hit, CPU로 워드 전송

⇒ Page Fault가 많다, 쓰레싱 확률이 높다, 메모리 성능 저하

  • 페이지 크기
    • 페이지 크기를 결정할 때 고려사항
페이지 크기
----------
고려사항
작은 경우 큰 경우
Page Table 크기 증가 감소
프레임 내부 단편화 적어짐 많아짐
팜조 지역성 효과 증가함 감소함
I/O 시간 효율성 나쁨 좋음

  1. 페이지 크기 매우 작음
    • 주기억장치 상에서 한 프로세스가 사용할 수 있는 페이지들이 상대적으로 많아짐
    • 시간이 지나면 메모리에 적재된 페이지들이 프로세스가 최근에 참조한 인접 부분을 모두 포함
    • 페이지 폴트 발생률 저하
  2. 페이지 크기가 커질수록
    • 개별 페이지들은 최근의 참조로부터 보다 멀리 떨어져 있는 위치를 포함할 것이다.
    • 지역성의 원리에 따른 효과가 감소
    • 페이지 폴트 발생률 상승
  3. 페이지 크기가 전체 프로세스의 크기에 근접
    • 한 페이지의 크기가 프로세스의 전체를 포함하면 페이지 폴트가 발생하지 않음

  • 한 프로세스에 할당된 프레임의 개수에 의해 페이지 폴트 발생률이 결정됨
  • 유지되는 페이지의 개수가 늘수록 페이지 폴트 발생률 감소

⇒ S/W 정책 (각 프로세스에 할당된 메모리량)은 H/W 설계시의 결정사항(페이지 크기)과 상호작용

⇒ 한 가지 페이지 크기가 모든 시스템에 최적일 수는 없다.

반응형
profile

Limetime's TimeLine

@Limetime

포스팅이 좋았다면 "공감❤️" 또는 "구독👍🏻" 해주세요!