ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Operating System] 가상 메모리 : 페이징
    Operating System 2024. 6. 13. 16:50

    현대 운영체제에서 가장 대표적이고 대중적인 가상 메모리 관리 기법인
    페이징에 대해 정리하였습니다.


    참조 : 인프런 '개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제'


    < 가상 메모리 >

    가상 메모리 관리 기법은 실행하고자 하는 프로그램을 일부만 메모리에 적재하여 실제 물리 메모리 크기보다 더 큰 메모리 공간을 사용할 수 있게 해주는 기술입니다. 외부 단편화 문제도 해결할 수 있습니다.

    대표적으로 페이징과 세그멘테이션 기법이 있습니다.

     

     


    < 페이징 >

    프로세스의 논리 주소 공간을 페이지(page)라는 일정 단위로 자르고,
    메모리의 물리 주소 공간을 프레임(frame)이라는 페이지와 동일한 일정한 단위로 자른 뒤

    페이지를 프레임에 할당하는 가상 메모리 관리 기법입니다.

     

    페이징 이미지

     

     


    [ 페이징에서의 스와핑 ]

    : 프로세스를 실행하기 위해 현재 실행 중인 프로세스를 이루고 있는 모든 페이지가 메모리 내에 위치 해 있을 필요는 없습니다.

    일부 페이지는 보조기억장치의 스왑 영역에 있어도 프로세스 실행이 가능합니다.

    → 즉, 물리 메모리보다 큰 프로세스도 실행될 수 있습니다.

     

    페이징에서의 스와핑

    프로세스 단위의 스왑 인, 스왑 아웃이 아닌 페이지 단위의 스왑 인(페이지 인)스왑 아웃(페이지 아웃)

    • 메모리에 적재될 필요가 없는 페이지들은 보조기억 장치로 스왑 아웃
    • 실행에 필요한 페이지들은 메모리로 스왑 인

     

     


    < 페이지 테이블 >

    프로세스를 이루는 페이지들이 메모리에 불연속적으로 배치되어 있다면 CPU 입장에서 이를 일일이 알기가 즉, 다음에 실행할 명령어 위치를 찾기가 어렵습니다. 이를 해결하기 위해 페이지 테이블이 등장하였습니다.

    페이지 테이블은 페이지 번호와 프레임 번호를 짝지어 주는 일종의 이정표입니다.(페이지 테이블은 메모리에 적재됩니다.)
    : 물리 주소에 불연속적으로 배치되더라도 논리 주소에는 연속적으로 배치되도록 하는 방법입니다.

    프로세스마다 페이지 테이블이 있습니다.

     

    페이지 테이블 이미지

     

     


    [ 내부 단편화 ]

    : 페이지 크기보다 작은 크기로 발생하는 메모리 낭비 문제

     

    내부 단편화 이미지

    Ex) 페이지 크기가 10KB, 프로세스가 108KB일 때 2KB의 내부 단편화 발생

     

     


    < PTBR >

    프로세스 테이블 베이스 레지스터(PTBR) 각 프로세스 페이지 테이블이 적재되어 있는 주소를 가리킵니다.

    현재 실행 중인 프로세스의 프로세스 제어 블록(PCB, Process Control Block)에서 이 정보를 가져옵니다.

     

    PTBR 이미지

     

     


    그러나, 페이지 테이블이 메모리에 있으면 메모리 접근 시간이 두 배로 늘어난다는 단점이 있습니다.

     

    1. 페이지 테이블 참조를 위해 한 번

    2. 페이지 참조를 위해 한 번

     

     

     

     

     

     

     

     

     


    < TLB >

    TLB (Translation Lookaside Buffer)는 CPU 곁에 있는 페이지 테이블의 캐시 메모리입니다.

    자주 참조하는 페이지 테이블의 일부를 가져와 저장합니다.
    → 불필요한 메모리 접근을 줄일 수 있습니다.

     

    TLB 이미지

    • TLB 히트 : CPU가 접근하려는 논리 주소가 TLB에 있는 경우
    • TLB 미스 : CPU가 접근하려는 논리 주소가 TLB에 없는 경우

     

     


    < 페이징에서의 주소 변환 >

    페이징 시스템에서 논리 주소는 페이지 번호(page number)와 변위(offset)으로 이루어져 있습니다.

    <페이지 번호, 변위> 로 이루어진 논리 주소는 페이지 테이블을 통해 <프레임 번호, 변위>로 변환됩니다.
    : 여기서 변위 값은 같습니다. 왜냐면 페이지와 프레임은 크기는 같기 때문입니다.

     

    페이징에서 논리 주소 -> 물리 주소 변환

     

     


    Ex) 논리 주소가(<페이지 번호, 변위>) <5, 2>인 곳에 접근 시

    → 실제 물리 주소 공간 내 10번지에 접근

     

     


    < 페이지 테이블 엔트리(PTE) >

    페이지 테이블에는 페이지 번호, 프레임 번호 뿐만 아니라 유효 비트, 보호 비트, 참조 비트, 수정 비트 등의 정보도 함께 담길 수 있습니다.

     

     


    [ 유효 비트 ]

    : 현재 해당 페이지에 접근 가능 여부를 나타내는 비트(메모리에 있는지 보조기억장치 내 스왑영역에있는지)

    유효 비트 이미지

     

    0인 페이지에 접근 시 페이지 폴트(page fault)라는 소프트웨어 인터럽트가 발생합니다.

    1. CPU는 기존 작업 내역을 백업합니다.
    2. 페이지 폴트 처리 루틴을 실행합니다.
    3. 페이지 처리 루틴은 원하는 페이지를 메모리로 가져온 뒤 유효 비트를 1로 변경해 줍니다.
    4. 페이지 폴트를 처리했다면 이제 CPU는 해당 페이지에 접근할 수 있게 됩니다.

     

     


    [ 보호 비트 ]

     

    : 페이지에 접근할 권한을 제한해서 페이지를 보호하는 비트

    보호 비트 이미지

     

     


     

    [ 참조 비트 ]

    : CPU가 이 페이지에 접근한 적이 있는지를 나타내는 비트

    참조 비트 이미지

     

     


    [ 수정 비트 ]

    : CPU가 이 페이지에 데이터를 쓴 적이 있는지를 나타내는 비트

    수정 비트 이미지

     

    → 만약 페이지가 수정되었다면, 스왑 아웃될 때 보조기억장치에도 쓰기 작업을 거쳐야 하기 때문에 존재합니다.

     

     

     

     

    댓글

Designed by Tistory.