ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [OS] 요구 페이징(가상메모리)
    OS 2021. 12. 6. 09:53

     

     

    요구 페이징(가상메모리)


    안녕하세요? 장장스입니다.

     

    우리가 일반적으로 사용하는 컴퓨터의 메모리는 8GB, 16GB로 그 크기가 한정되어 있습니다. 그럼에도 우리는 많은 프로그램을 동시에 띄워 사용하고 있습니다. 운영체제는 한정된 메모리 공간을 효율적으로 사용하기 위해 가상메모리 기법을 사용합니다.

     

    가상메모리 기법은 크게 요구 페이징 방식(demand paging)요구 세그먼테이션 방식(demand segmentation)으로 구현이 됩니다. 요구 세그먼테이션 방식의 경우에는 페이지드 세그먼테이션 기법을 사용하는 경우입니다. 대부분의 경우에는 요구 페이징 방식을 사용합니다.

     

     

     

    요구 페이징(demand paging)


    요구 페이징은 프로그램 실행 시 프로세스를 구성하는 모든 페이지를 한꺼번에 메모리에 올리는 것이 아니라 당장 사용될 페이지만을 올리는 방식입니다. 따라서 요구 페이징 기법에서는 특정 페이지에 대해 CPU의 요청이 들어온 뒤 해당 페이지를 메모리에 적재합니다.

     

     

    요구 페이징을 사용함으로써 얻을 수 있는 장점은 다음과 같습니다.

    1. 필요한 페이지만 메모리에 적재하기 때문에 메모리 사용량이 감소한다.

    2. 프로세스 전체를 메모리에 올리는 데 소요되는 입출력 오버헤드가 감소한다.

    3. 사용되지 않는 주소 영역에 대한 입출력이 줄어 응답시간이 줄어든다.

    4. 시스템이 더 많은 프로세스를 수용할 수 있게 해준다.

    5. 물리적 메모리의 제약을 벗어날 수 있다.

     

     

    페이지 부재(page fault)


    가상메모리 기법은 일부 페이지만 메모리에 적재되어 있고 나머지는 디스크의 스왑 영역에 존재합니다. 이러한 이유로 메모리에 페이지가 존재하는지 구별하기 위해 유효-무표 비트(valid-invalid bit)를 두어 각 페이지가 존재하는지 표시합니다.

     

    이때, 페이지가 메모리에 적재되지 않아 유효-무효 비트에 무효로 세팅되어 있는 경우를 페이지 부재(page fault)가 일어났다고 합니다.

     

    요구 페이징의 페이지 부재 처리는 어떻게?

    CPU가 무효 페이지에 접근하면 주소 변환을 담담하는 하드웨어인 MMU(Memory Management Unit)가 페이지 부재 트랩을 발생시킵니다. 다음으로 CPU의 제어권이 커널모드로 변경되고 운영체제의 페이지 부재 처리 루틴이 호출됩니다.

     

    1. 운영체제가 해당 페이지에 대한 접근하기 위해 주소가 유효한지 확인합니다.

    2. 범위를 벗어나는 영역에 속한 페이지 접근이나 접근 권한 위반을 할 경우 프로세스를 종료시킵니다.

    3. 접근이 가능한 경우 물리적 메모리에 비어 있는 프레임을 할당받습니다.

    4. 비어 있는 프레임이 없다면 기존에 메모리에 올라와 있는 페이지 중 하나를 디스크로 내보냅니다. (스왑 아웃)

    5. 디스크로부터 메모리 적재는 오랜 시간이 걸립니다. 따라서 페이지 부재가 발생한 프로세스는 CPU를 반납하고 PCB에 현재상태를 저장 후 봉쇄 상태가 됩니다.

    6. 디스크 입출력이 완료되어 인터럽트가 발생하면, 해당 페이지의 유효-무효 비트를 유효로 수정합니다.

    7. 봉쇄되었던 프로세스를 준비 큐로 이동시킵니다.

    8. CPU를 할당 받고 PCB로부터 저장한 값을 복원시켜 중단되었던 명령부터 실행을 이어갑니다.

     

     

     

     

     

     

     

     

    Post


    References


    • KOCW 운영체제 강의 - 반효경 교수

     

     


     

    잘못된 코드나 내용이 있다면 댓글을 남겨주세요. 즉시 수정하도록 하겠습니다! :)

     

     

    댓글