컴퓨터 시스템은 물리적 메모리 (RAM) 및 디스크를 사용하여 데이터를 저장하고 처리합니다. 그러나 실제 메모리의 크기는 한정되어 있기 때문에, 시스템은 가상 메모리라는 기술을 사용하여 더 큰 메모리 공간을 제공합니다. 가상 메모리는 물리적 RAM의 일부와 하드 드라이브의 일부를 합쳐서 더 큰 연속적인 메모리 공간처럼 보이게 합니다.
가상 메모리는 '페이지'라는 고정된 크기의 블록으로 분할됩니다. 동일한 크기의 페이지 프레임이 물리적 RAM에 있습니다. 페이지는 필요에 따라 RAM과 디스크 사이에서 이동됩니다.
페이지 폴트의 발생
프로세스가 특정 메모리 주소에 접근하려고 할 때, 해당 주소의 페이지가 현재 RAM에 있지 않으면 페이지 폴트가 발생합니다. 이것은 실제로 "잘못"된 것이 아니라 가상 메모리 시스템의 일부로 발생하는 것입니다.
페이지 폴트 처리
페이지 폴트가 발생하면, 운영 체제는 여러 단계를 수행합니다:
페이지 폴트의 유형 확인: 페이지 폴트는 여러 이유로 발생할 수 있습니다. 예를 들어, 해당 페이지가 아직 메모리에 로드되지 않았을 수 있고, 또는 프로세스가 유효하지 않은 메모리 주소에 접근하려고 시도했을 수도 있습니다.
스왑 공간에서 페이지 로드: 요청된 페이지가 디스크의 스왑 공간에 있다면, 운영 체제는 먼저 RAM의 빈 페이지 프레임을 찾습니다. 필요하다면, 다른 페이지를 스왑 공간으로 이동시켜 페이지 프레임을 비웁니다. 그런 다음, 요청된 페이지를 RAM으로 가져옵니다.
페이지 테이블 업데이트: 운영 체제는 페이지 테이블을 업데이트하여 새로운 페이지의 위치를 반영합니다.
프로세스 재개: 페이지가 RAM에 로드되면, 원래의 메모리 접근 연산이 재개됩니다.
성능 문제
페이지 폴트는 시스템 성능에 큰 영향을 미칠 수 있습니다. 디스크 I/O는 RAM 액세스에 비해 매우 느리기 때문에, 페이지 폴트가 자주 발생하면 시스템의 전반적인 성능이 저하될 수 있습니다. 이를 스래싱(thrashing)이라고 부르며, 이 때 시스템은 페이지 교체로 인해 실제 유용한 작업을 수행하기 어렵게 됩니다.
따라서, 운영 체제는 가능한 한 페이지 폴트의 발생 횟수를 줄이려고 노력하며, 이를 위해 다양한 페이지 교체 알고리즘 (예: LRU, FIFO, OPT)을 사용합니다.
'Domain 지식들' 카테고리의 다른 글
의존성이란 무엇인가? (0) | 2023.04.06 |
---|---|
Gem이란 무엇인가? (0) | 2023.04.06 |
쿼리란 무엇인가? (0) | 2023.04.03 |
스키마란 무엇인가? (0) | 2023.04.03 |
스크립팅 언어란 무엇인가? (0) | 2023.04.03 |
댓글