공부기록

가상 메모리의 개요 본문

CS/OS

가상 메모리의 개요

코타쿠 2021. 5. 17. 17:50
  • 단순 페이징, 세그멘테이션의 특징 (vs 고정 분할 혹은 가변 분할)
    • 프로세스의 모든 메모리 참조는 논리주소
      • 이전과 다른 메모리 위치에 적재될 능력이 있다.
    • 한 프로세스의 주소공간은 여러 블록(페이지, 세그멘트)로 분할
      • 이 블록들은 연속되어 배치될 필요가 없다. 테이블을 통해 찾아가면 되니까
    • 위의 두 특성 때문에 프로세스의 모든 페이지, 세그먼트가 주기억 장치에 적재되어 있을 필요가 없다.
      • 즉 블록들을 필요에 따라 스와핑 할  수 있다.
      • 다음에 수행할 명령을 포함한 블록과, 그 명령에 의해 참조될 데이터가 포함된 블록이 주 기억장치에 있다면, 프로세스의 진행이 가능하다.
    • 프로세스의 블록이 반입되는 과정
      • OS는 초기에 수행될 코드와 참조될 데이터가 포함되는 몇개의 블록만 주기억장치로 반입
        • 적재 집합 : 현재 주메모리에 올려져 있는 프로세스의 블록
      • 처리기는 페이지, 세그먼트 테이블을 사용하여 프로세스의 참조 주소가 적재집합에 포함되어 있는지를 확인
      • 만약 주기억장치에 적재되지 않은 논리주소가 참조되면, 처리기는 메모리 참조 오류 인터럽트를 발생
      • OS는 인터럽트 당한 프로세스를 블록하고 제어를 받음
      • 이 블록당한 프로세스의 수행을 재개하기 위해 아까 적재되지 못한 논리 주소를 포함한 블록을 주기억 장치로 적재
      • 이를 위해 운영체제는 DISK I/O를 요청
      • 처리기는 다른 프로세스에게 CPU를 할당 
      • I/O가 끝나면 입출력 인터럽트가 발생하고, 이를 통해 제어를 돌려받은 운영체제는 이전에 블록된 프로세스를 준비상태로 전환
    • 프로세스의 일부 블록을 적재하고 수행하는 목적
      • 보다 많은 프로세스를 주기억장치에 유지
      • 주기억 장치보다 큰 프로세스를 수행 - 가상 메모리를 사용하는 이유
        • 이 전략을 사용하지 않으면, 프로그래머가 메모리가 얼마나 큰지 알아야하고, 프로그램을 여러 블록으로 분할하여 구성할 수 있는 방안을 찾아야 한다.
    • 지역성 (Locality)와 가상메모리 (Virtual Memory)
      • 쓰레싱 (Thrashing)
        • 특정 블럭시 사용되기 직전에 반출되었다면, 거의 곧바로 해당 블럭을 다시 반입
        • 이러한 일이 과도하게 발생되어, 시스템은 명령어 수행이 아니라 블록 교체에 대부분의 시간을 소비하게 되는 상황
        • 쓰레싱을 피하기 위해 최근의 이력을 근거로 미래에 사용될 가능성이 적은 블록을 추정한다.
      • 지역성의 원리 (Principle of Locality)
        • 프로세스 내에서 명령어와 데이터에 대한 참조는 특정 부분에 집중되어 있다.
        • 짧은 시간동안 블록 몇 개 만이 필요할 것이라는 추정이 가능
        • 프로세스의 생존기간 동안, 참조가 페이지들의 부분집합에 한정되어 있음
        • 지역성의 원리는 모든 블록이 다 반입 될 필요가 없다는 것을 보여주기에 가상 메모리 시스템이 효과적임을 시사한다.
    • 가상메모리가 실용적이기 위한 두 가지 필요조건
      • 페이징, 세그먼테이션을 위한 하드웨어 지원
      • 보조기억장치와 주기억장치 사이의 페이지 (혹은 세그먼트) 이동을 관리할 SW를 OS가 제공

'CS > OS' 카테고리의 다른 글

가상 메모리 세그먼트  (0) 2021.05.17
가상 메모리 페이징  (0) 2021.05.17
메모리 분할 - 세그먼테이션  (0) 2021.05.17
메모리 분할 - 페이지  (0) 2021.05.17
메모리 분할 - 동적 분할  (0) 2021.05.17