페이징

위키백과, 우리 모두의 백과사전.
(페이징 기법에서 넘어옴)

페이징 기법(paging)은 컴퓨터가 메인 메모리에서 사용하기 위해 2차 기억 장치[a]로부터 데이터를 저장하고 검색하는 메모리 관리 기법이다.[1]가상기억장치를 모두 같은 크기의 블록으로 편성하여 운용하는 기법이다. 이때의 일정한 크기를 가진 블록을 페이지(page)라고 한다. 주소공간을 페이지 단위로 나누고 실제기억공간은 페이지 크기와 같은 프레임으로 나누어 사용한다.

페이징 기법이 적용된 시스템에서 가상주소순서쌍 로 나타낼 수 있다. 가상기억장치 내에서 참조될 항목이 속해 있는 페이지 번호이고, 는 페이지 내에서 참조될 항목이 위치하고 있는 곳의 변위이다.

어떤 프로세스가 현재 참조하고 있는 페이지가 주기억장치 내에 있다면 그 프로세스는 수행될 수 있다. 반대로 주기억장치 내에 없다면 그 해당 페이지를 보조기억장치로부터 읽어와서 페이지 프레임의 한 블록에 저장한다.

역사[편집]

최초의 메모리 페이지는 램과 디스크 간에 페이지가 이동하느냐에 관계 없이 컴퓨터 구조의 한 개념이었다.[2][3]

프레임과 페이지[편집]

프레임과 페이지는 메모리를 일정한 크기의 공간으로 나누어 관리하는 단위이며, 프레임과 페이지의 크기는 같다.

  • 프레임(Frame) : 물리 메모리를 일정한 크기로 나눈 블록이다.
  • 페이지(Page) : 가상 메모리를 일정한 크기로 나눈 블록이다.

페이지가 하나의 프레임을 할당 받으면, 물리 메모리에 위치하게 된다. 프레임을 할당 받지 못한 페이지들은 외부 저장장치에 저장되며, 이때도 프레임과 같은 크기 단위로 관리된다.

페이지 테이블[편집]

페이지 테이블(Page Table)은 프로세스의 페이지 정보를 저장하고 있으며, 하나의 프로세스는 하나의 페이지 테이블을 가진다. 테이블은 다음과 같이 색인과 내용으로 구성되어 있다.

  • 색인 : 페이지 번호.
  • 내용 : 해당 페이지에 할당된 물리 메모리(프레임)의 시작 주소. 이 시작 주소와 페이지 주소를 결합하여 물리 메모리 주소를 알 수 있다.

페이지 테이블 엔트리[편집]

페이지 테이블 엔트리(Page Table Entry, 줄여서 PTE)는 페이지 테이블의 레코드이다.

PTE의 각 필드에는 일반적으로 다음 내용이 기록된다.

  • 페이지 기본주소(Page base address)
  • 플래그 비트
    • 접근 비트(Accessed bit) : 페이지에 대한 접근이 있었는지를 나타낸다.
    • 변경 비트(Dirty bit) : 페이지 내용의 변경이 있었는지를 나타낸다.
    • 현재 비트(Present bit) : 현재 페이지에 할당된 프레임이 있는지를 나타낸다.
    • 읽기/쓰기 비트(Read/Write bit) : 읽기/쓰기에 대한 권한을 표시한다.

페이지의 크기[편집]

페이지의 크기는 하드웨어에 의해 정의된다. 대개 컴퓨터 구조에 따라 512 Byte에서 16MB 사이이며 2의 제곱으로 증가한다. 만약 논리 주소 공간의 크기가 2의 m승이고, 페이지가 2의 n승이라면 논리주소(logical address)의 상위 m-n Bit는 페이지 번호를 하위 n비트는 페이지 변위(offset)을 나타낸다. 하나의 페이지는 x86과 amd64에서는 4KB, ia64에서는 8KB의 크기를 가진다.

동적 주소 변환[편집]

페이징 기법에서 동적주소변환 과정은 다음과 같다.

  1. 수행 중인 프로세스가 가상주소 를 참조한다.
  2. 페이징 기법을 통해 페이지 가 페이지 프레임 에 있음을 알아낸다.
  3. 실주소 를 구한다.

같이 보기[편집]

각주[편집]

내용주
  1. Initially drums, and then hard disk drives and solid-state drives have been used for paging.
참조주
  1. Arpaci-Dusseau, Remzi H.; Arpaci-Dusseau, Andrea C. (2014), 《Operating Systems: Three Easy Pieces (Chapter: Paging)》 (PDF), Arpaci-Dusseau Books 
  2. Deitel, Harvey M. (1983). 《An Introduction to Operating Systems》. Addison-Wesley. 181, 187쪽. ISBN 0-201-14473-5. 
  3. Belzer, Jack; Holzman, Albert G.; Kent, Allen, 편집. (1981). 〈Operating systems〉. 《Encyclopedia of computer science and technology》 11. CRC Press. 433쪽. ISBN 0-8247-2261-2.