728x90
14. 페이징 개요
- 공간을 동일 크기의 조각으로 분할하는 것을 페이징(Paging)이라 부른다. 프로세스의 주소 공간을 몇 개의 가변 크기의 논리 세그멘트로 나누는 것이 아니라 고정 크기의 단위로 나눈다. 이 각각의 고정 크기 단위를 페이지(Page)라고 부른다. 상응하여 물리 메모리도 페이지 프레임(Page Frame) 이라고 불리는 고정 크기의 슬롯의 배열이라고 생각한다. 이 프레임 각각은 하나의 가상 메모리 페이지를 저장할 수 있다.
14.1 간단한 예제 및 개요
- 물리 메모리는 고정 크기의 슬롯들로 구성된다. 가상 주소 공간의 페이지들은 물리 메모리 전체에 분산 배치되어 있다.
- 페이징의 장점은 유연성이다. 페이징을 사용하면 프로세스의 주소공간 사용 방식과는 상관없이 효율적으로 주소공간 개념을 지원 할 수 있다.
- 또 다른 장점은 페이징이 제공하는 빈 공간 관리의 단순함이다. 주소 공간의 각 가상 페이지에 대한 물리 메모리 위치 기록을 위하여 운영체제는 프로세스마다 페이지 테이블(Page table)이라는 자료구조를 유지한다. 페이지 테이블의 주요 역할은 주소 공간의 가상 페이지 주소 변환(address translation) 정보를 저장하는 것이다. 각 페이지가 저장된 물리 메모리의 위치가 어디인지 알려준다.
- 페이지 테이블은 프로세스마다 존재한다는 사실을 숙지해야 한다.
- 프로세스가 생성한 가상 주소의 변환을 위해 먼저 가상 주소를 가상 페이지 번호(VPN : virtual page number)와 페이지 내의 오프셋 2개의 구성 요소로 분할한다.
- 프로세스가 가상주소를 생성하면 운영체제와 하드웨어가 의미있는 물리주소로 변환한다. 가상 페이지의 번호를 가지고 페이지 테이블의 인덱스로 사용하여 가상페이지가 어느 물리 프레임에 저장되어 있는지 찾을 수 있다.
- 오프셋은 동일하다.
14.2 페이지 테이블은 어디에 저장되는가.
- 페이지 테이블은 가상주소를 물리 주소로 매핑하는데 사용되는 자료구조이다. 가장 간단한 형태는 선형 페이지 테이블(linear page table)이다. 단순한 배열이다. 운영체제는 원하는 물리 프레임 번호(PFN)를 찾기 위해 가상 페이지 번호(VPN)로 배열의 항목에 접근하고 그 항목의 페이지 테이블 항목(PTE)을 검색한다.
- 각 PTE에는 심도있는 이해가 필요한 비트들이 존재한다. Valid bit는 특정 변환의 유효 여부를 나타내기 위하여 포함된다. 프로그램이 실행을 시작할 때 코드와 힙이 주소공간의 한쪽에 있고 반대쪽은 스택이 차지하고 있을 것이다. 그 사이의 모든 미사용 공간은 무효로 표시되고, 프로세스가 그런 메모리를 접근하려고 하면 운영체제는 트랩을 발생시킨다. 운영체제는 그 프로세스를 종료 시킬 확률이 높다. Valid bit는 할당되지 않은 주소공간을 표현하기 위해 반드시 필요하다. 주소공간의 미사용페이지를 모두 표시함으로써 이러한 페이지들에게 물리 프레임을 할당할 필요를 없애 메모리를 절약한다.
- 페이지가 읽을 수 있는지, 쓸 수 있는지, 또는 실행될 수 있는지를 표시하는 Protection bit가 있다.
- Protection bit가 허용하지 않는 방식으로 페이지에 접근하려고 하면 운영체제에 트랩을 생성한다.
- Present bit는 이 페이지가 물리 메모리에 있는지 혹은 디스크에 있는지(즉, 스왑 아웃 되었는지) 가리킨다. 스와핑은 운영체제가 드물게 사용되는 페이지를 디스크로 이동시켜 물리 메모리를 비울 수 있게 한다. dirty bit 또한 일반적인데, 메모리에 반입된 후 페이지가 변경되었는지 여부를 나타낸다.
- reference bit(또는 accessed bit)는 때때로 페이지가 접근 되었는지를 추적하기 위해 사용된다. 또한 어떤 페이지가 인기가 있는지 결정하여 메모리에 유지되어야 하는 페이지를 결정하는 데에도 유용하다. 이 정보는 페이지 교체에 매우 중요하다.
14.4 페이징 : 너무 느림
- 페이지 테이블로 인해 처리속도가 저하될 수 있다.
- 주소에서 데이터를 반입하기 전에 시스템은 프로세스의 페이지 테이블에서 적절한 페이지 테이블 항목을 가져와야 하고, 반환을 수행한 후, 물리 메모리에서 데이터를 탑재한다. 이렇게 하기 위해서 하드웨어는 현재 실행 중인 프로세스의 페이지 테이블의 위치를 알아야 한다.
- 모든 메모리 참조에 대해 먼저 페이지 테이블에서 변환정보를 반입해야 하기 때문에 반드시 한번의 추가적인 메모리 참조가 필요하다.
14.5 메모리 트레이스
- 프로그램의 메모리 참조를 살펴보자. 프로그램이 실행되면, 명령어 반입시에 메모리가 두 번 참조된다. 명령어 위치 파악을 위한 페이지 접근 그리고 명령어 자체에 한 번 추가적으로 mov 명령어는 메모리 참조를 한 번 한다. 이 명령도 먼저 페이지 테이블 접근 한 번, 다음 배열 자체를 접근하기 위해 한 번의 참조가 필요하다.
728x90
'책 > 운영체제' 카테고리의 다른 글
운영체제 16. 페이징 : 더 작은 테이블 (0) | 2024.03.13 |
---|---|
운영체제 15. 페이징 : 더 빠른 변환(TLB) (0) | 2024.03.12 |
운영체제 13. 빈공간 관리 (0) | 2024.03.10 |
운영체제 12. 세그멘테이션 (0) | 2024.03.09 |
운영체제 11. 주소변환의 원리 (0) | 2024.03.09 |