기술(IT)

페이징 (Paging) 정보

2019. 10. 23.
728x90

페이징은 컴퓨터가 메인 메모리에서 사용하기 위해 2차 저장소에서 데이터를 저장하고 검색하는 메모리 관리 체계다.  운영 체제는 페이지라고 불리는 동일한 크기의 블록으로 보조 스토리지에서 데이터를 검색한다. 페이징은 프로그램이 사용 가능한 물리적 메모리의 크기를 초과하도록 하기 위해 보조 스토리지를 사용하는 현대 운영 체제에서 가상 메모리 구현의 중요한 부분이다. 단순성을 위해 메인 메모리를 RAM(Random-access Memory)이라고 하고, 2차 저장소를 Disk라고 부르지만, 이러한 용어가 특정 컴퓨터 시스템에 문자 그대로 적용되는지에 따라 개념이 달라지지 않는다.

예측 페이징
스왑 프리페치라고도 불리는 이 기법은 향후 페이지 결함을 최소화하기 위해 곧 참조할 페이지를 예측한다. 예를 들어 페이지 결함을 처리하기 위해 페이지를 읽은 후, 운영 체제는 아직 필요하지 않더라도 다음 몇 페이지를 읽을 수도 있다(참조 지역성을 이용한 예측). 프로그램이 종료되면 사용자가 동일한 프로그램을 다시 실행할 경우 운영 체제는 페이지 자유화를 지연시킬 수 있다.

디맨드 페이징
순수 수요 페이징을 사용할 때는 참조할 때만 페이지가 로드된다. 메모리 매핑된 파일의 프로그램은 RAM에 페이지가 없는 상태에서 실행을 시작한다. 프로그램이 페이지 결함을 범함에 따라 운영 체제는 페이지 데이터가 들어 있는 파일이나 스왑 파티션에서 필요한 페이지를 RAM으로 복사한다.

프리클리닝 (Pre-cleaning)
운영 체제는 정기적으로 더러워진 페이지를 미리 청소할 수 있다. 즉, 수정된 페이지를 추가 수정하더라도 디스크에 다시 쓸 수 있다. 이를 통해 새 프로그램이 시작되거나 새 데이터 파일이 열리는 순간에 새 페이지 프레임을 얻는 데 필요한 클리닝 양을 최소화하고 응답성을 향상시킨다. 유닉스 운영 체제는 정기적으로 동기화를 사용하여 모든 지저분한 페이지를 미리 청소하고, Windows 운영 체제는 수정 페이지 작성기 스레드를 사용한다.

무료 페이지 대기열 (Free page queue)
무료 페이지 대기열은 할당 가능한 페이지 프레임 목록이다. 이 대기열이 비어 있는 것을 방지하면 페이지 결함을 처리하는 데 필요한 컴퓨팅이 최소화된다. 일부 운영체제는 정기적으로 최근에 참조되지 않은 페이지를 찾아 페이지 도난을 수행하여 페이지 프레임을 자유화하여 무료 페이지 큐에 추가한다. 일부 운영 체제[b] 지원 페이지 회수. 프로그램이 도난당한 페이지를 참조하여 페이지 오류를 범할 경우 운영 체제는 이를 감지하여 내용을 다시 RAM으로 읽지 않고도 페이지 프레임을 복원한다.


쓰래싱
초기화를 완료한 후, 대부분의 프로그램은 프로그램에 필요한 총 메모리에 비해 적은 수의 코드와 데이터 페이지에서 작동한다. 가장 자주 접속하는 페이지를 작업 세트라고 한다. 작업 세트가 시스템의 전체 페이지 수 중 작은 비율일 때, 가상 메모리 시스템은 가장 효율적으로 작동하며 페이지 결함을 해결하는 데 적은 양의 컴퓨팅이 사용된다. 작업 세트가 증가함에 따라, 페이지 결함의 해결은 성장이 중요한 지점에 도달할 때까지 관리 가능한 상태로 유지된다. 그 후 결함은 극적으로 증가하고 이를 해결하는 데 소요되는 시간은 프로그램이 실행하도록 작성된 컴퓨팅에 소요되는 시간을 압도한다. 큰 작업 세트가 시스템 속도를 급격히 떨어뜨리는 연속적인 페이지 결함을 야기하기 때문에, 큰 데이터 구조와 함께 작동하는 프로그램에서 스래싱이 발생한다. 페이지 결함을 만족시키려면 곧 디스크에서 다시 읽어야 하는 무료 페이지가 필요할 수 있다. 쓰래싱은 가상 메모리 시스템 이외의 맥락에서 사용되기도 한다. 예를 들어, 컴퓨팅의 캐시 문제나 네트워킹의 바보 같은 윈도우 증후군을 설명하기 위해서 말이다. 모두가 RAM에 있는 것은 아닐 경우, 각각 페이지 결함을 야기할 것이다. 각 장애가 발생할 경우 운영 체제는 광범위한 메모리 관리 루틴을 거쳐야 하므로 다른 프로세스 페이지를 디스크에 쓰고 디스크에서 활성 프로세스의 페이지를 읽는 것을 포함할 수 있는 여러 I/O를 발생시킬 수 있다. 과도한 페이징을 줄이고 스레싱 문제를 해결하기 위해 사용자는 동시에 실행하는 프로그램 수를 줄이거나 컴퓨터의 RAM 양을 증가시킴으로써 프로그램당 사용 가능한 페이지 수를 늘릴 수 있다.

공유
다중 프로그래밍 또는 다중 사용자 환경에서 많은 사용자는 코드와 데이터가 별도의 페이지에 있도록 작성된 동일한 프로그램을 실행할 수 있다. RAM 사용을 최소화하기 위해 모든 사용자는 프로그램의 단일 복사본을 공유한다. 각 프로세스의 페이지 테이블은 코드를 다루는 페이지가 단일 공유 복사본을 가리키도록 설정되며, 데이터를 다루는 페이지는 각 프로세스의 서로 다른 물리적 페이지를 가리키도록 설정된다. 다른 프로그램들도 같은 라이브러리를 사용할 수 있다. 공간을 절약하기 위해 공유 라이브러리의 복사본 하나만 실제 메모리에 로드된다. 동일한 라이브러리를 사용하는 프로그램에는 동일한 페이지에 매핑되는 가상 주소가 있다. 프로그램들이 라이브러리의 코드를 수정하고 싶을 때, 그들은 카피온 쓰기를 사용하기 때문에, 메모리는 필요할 때만 할당된다. 공유 메모리는 프로그램 간의 효율적인 의사소통 방법이다. 프로그램은 메모리에 있는 페이지를 공유한 다음 데이터를 교환하기 위해 쓰고 읽을 수 있다.

LIST

'기술(IT)' 카테고리의 다른 글

DHCP(Dynamic Host Configuration Protocol) 기술  (0) 2019.10.27
프록시 서버 (Proxy Server)  (0) 2019.10.24
메모리 보호 (Memory Protection)  (0) 2019.10.22
서비스 지향 아키텍처 (SOA)  (0) 2019.10.21
PCM (Pulse Code Modulation)  (0) 2019.10.20

댓글

추천 글