ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 가상메모리
    CS/OS 2022. 3. 20. 21:07
    728x90

    가상 메모리

    메모리 관리 기법 중 하나로 프로세스 전체가 메모리 내에 올라오지 않더라도 실행이 가능하도록 하는 기법

    • 사용자 프로그램이 물리 메모리의 제약에서 벗어남
    • 각 프로그램이 더 작은 메모리를 차지하기 때문에 더 많은 프로그램을 동시 수행 가능한 것처럼 보임
    • 프로그램을 메모리에 올리고 swap 하는데 필요한 IO 횟수가 줄어듦

     

    가상 메모리가 왜 필요할까?

    프로세스란 실행되는 프로그램이며, 이는 메인 메모리에 올라와있어야 한다. 하지만 메인 메모리의 공간은 그렇게 크지 않고 여러 개의 프로그램을 실행할수록 할당되는 공간의 크기는 줄어들고, 어느새 공간은 꽉 차게 될 것이다.

     

    다른 프로세스를 사용하기 위해 기존의 프로세스를 스왑 영역으로 내보내고 올리는 Swap In, Swap Out을 빈번히 한다면 큰 용량의 프로그램의 잦은 IO가 발생하며, 또한 물리 메모리의 크기를 벗어나는 프로그램은 메모리에 올라오지 못하게 된다.

     

    그렇다면 적은 공간을 관리하기 위해 프로그램의 필요한 부분만 메모리에 올리면 되지 않을까?

    프로그램에는 자주 사용되지 않는 방어 코드, 관리 코드 등이 있다. 모든 논리 주소를 물리 메모리에 올려야 할 이유는 없는 것이다.

     

    이렇게 가상 메모리라는 개념이 생겨나게 되었다.

     

    요구 페이징 기법 (Demand Paging)

    필요한 페이지만 물리 메모리에 적재하는 기법

    필요한 페이지만 물리 메모리에 적재

    주소공간이 하나의 단위가 아니라 여러 개의 페이지로 나눠져 있다.

    그중에서 지금 당장 필요한 페이지들만 물리 메모리에 가져와 사용한다.

     

     

    유, 무효 비트

    특정 페이지 메모리 존재 유무를 구분하기 위한 기법

     

    Valid: 해당 페이지가 메모리에 있음

    Invalid: 해당 페이지가 메모리에 없음(해당 프로세스는 중단)

    Page fault:

    • Invalid한 상황을 말한다.
    • 이 경우 보조저장장치에보조 저장장치에 존재한다면 보조 저장장치에서 가져온다.
    • 한 명령어에서도 여러번의 페이지 폴트가 일어날 수 있지만, 참조 지역성으로 성능이 괜찮다.

     

    유,무효비트 동작과정

    물리 메모리에 대응되는 페이지 테이블에 valid, invalid 비트로 물리적 메모리에서 페이지의 바인딩 정보를 확인할 수 있다.

    (이때 MMU의 도움을 받아 런타임 바인딩 기법이 적용된다.)

     

    요구 페이징 기법 동작과정 예시

     

    1. cpu가 물리 메모리에서 1번지의 값(B)에 참조를 시도

    2. 대응되는 page table의 1번지 값이 Invalid 한 상태로 page fault가 발생

    3. cpu제어권이 os한테 넘어가 스왑 영역에서 해당 페이지를 참조해서 물리 메모리의 빈 공간에 올림

     

    참조

    kocw 운영체제 이화여자대학교 반효경교수님

    http://www.kocw.net/home/cview.do?lid=f69b7331c7a4baf3

    728x90

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

    macOS shell을 bash에서 ZSH로 바꾸기  (0) 2022.04.11
    Blocking & Non-Blocking 그리고 Sync & Async  (0) 2022.03.05
    Process & Thread  (0) 2022.03.04
    OS 운영체제: 스케줄링(Scheduling)  (0) 2022.02.27

    댓글

oguuk Tistory.