요구 페이징이란?
요구 페이징(demand paging)은 운영체제에서 사용되는 가상 메모리 관리 기법중 하나이다.
요구페이징은 프로세스가 실행되는 동안 필요한 페이지만 메모리에 올리고, 필요하지 않은 페이지는 디스크에 저장하여 메모리를 절약하는 방법입니다. 이를 위해 페이지 테이블에 페이지의 위치 정보와 함께 각 페이지의 접근 여부를 표시하여 필요한 페이지만 메모리에 올리게 된다.
요구 페이징의 장점
- 효율적인 메모리 사용 : 요구페이징은 물리적 메모리 공간을 아끼면서 프로세스가 필요한 페이지만 메모리에 적재하므로 메모리 사용이 효율적입니다.
- 빠른 프로세스 실행 : 요구 페이징은 필요한 페이지만 적재하므로 디스크에서 메모리로 페이지를 로드하는 작업이 빠릅니다. 이는 프로세스 실행속도를 높이는데에 도움이 됩니다.
- 대용량 메모리 지원 : 요구페이징은 가상 메모리를 사용하므로 물리적 메모리보다 큰 용량의 메모리를 지원할 수 있습니다.
- 프로세스 독립성 : 각각의 프로세스는 독립된 가상 주소 공간을 가지므로 서로의 메모리에 영향을 미치지 않습니다. 이는 보안과 안정석 측면에서 중요합니다.
- 유연한 메모리 할당 : 요구페이징은 페이지 단위로 메모리를 할당하므로 메모리 공간을 유연하게 할당할 수 있습니다.
- 높은 처리량 : 요구페이징은 필요한 페이지만 로드하기 때문에 디스크 I/O작업이 줄어들어 전반적인 처리량이 높아집니다.
요구 페이징의 작동원리
- 프로세스 실행 시점 : 프로세스가 실행되면 운영체제는 해당 프로세스의 가상 주소 공간을 만듭니다. 이 가상 주소 공간은 물리적 메모리 공간과는 별도의 공간으로 존재하며, 필요한 페이지만 물리적 메모리에 적재됩니다.
- 페이지 부재(Page Fault) 발생 시 : 프로세스가 실행 중인데 필요한 페이지가 메모리에 없으면 페이지 부재(Page Fault)가 발생합니다. 이 때, 운영체제는 해당 페이지를 디스크에서 메모리로 로드합니다.
- 페이지 교체 : 메모리 공간이 부족해져서 새로운 페이지를 로드해야 할 때, 운영체제는 메모리에 적재된 페이지 중에서 가장 오랫동안 사용되지 않은 페이지를 디스크로 옮기고, 새로운 페이지를 메모리에 적재합니다. 이를 페이지 교체(Page Replacement)라고 합니다.
- 페이지 교체 알고리즘 : 페이지 교체 알고리즘은 페이지 교체 시 어떤 페이지를 교체할지 결정하는 알고리즘입니다. 대표적인 페이지 교체 알고리즘으로는 LRU(Least Recently Used)알고리즘이 있습니다.
- 페이지 적재 시점 : 페이지가 처음으로 적재될 때, 페이지 테이블에 해당 페이지가 메모리에 적재되었다는 정보를 저장합니다. 이후에는 해당 페이지를 참조할 때마다 페이지 테이블을 검색하여 메모리에 적재되어 있는지 확인하고, 없으면 페이지 테이블을 검색하여 메모리에 적재되어 있는지 확인하고, 없으면 페이지 부재가 발생합니다.
- 페이지 디스크에 저장 : 요구페이징에서는 메모리에 적재되어 있지 않은 페이지는 디스크에 저장됩니다. 디스크에 저장되는 페이지는 스왑 파일(Swap File)이라는 특수한 파일에 저장됩니다.
페이지 폴트(Page Fault)
가상 메모리 관리 방식에서는 발생하여 현상으로, 프로세스가 실행되는 도중에 필요한 페이지가 물리 메모리에 존재하지 않아 디스크에서 해당 페이지를 가져와야 하는 경우를 말합니다. 즉, 프로세스가 접근하려는 페이지가 물리적 메모리에 존재하지 않는 상태에서 발생하는 인터럽트입니다.
페이지 폴트가 발생하면 운영체제는 해당 페이지를 물리 메모리에 적재하여 프로세스가 접근할 수 있도록 해야 합니다. 이때, 메모리에 빈공간이 있다면 페이지 폴트를 처리하기 위해 디스크에서 해당 페이지를 물리 메모리에 적재하여 프로세스가 접근할 수 있도록 해야 합니다. 이때, 메모리에 빈 공간이 있다면 페이지 폴트를 처리하기 위해 디스크에서 해당 페이지를 읽어와 물리 메모리에 적재합니다. 그러나 빈 공간이 없는 경우, 운영체제는 페이지 교체(Page Replacement) 알고리즘을 사용하여 더 이상 사용되지 않는 페이지를 디스크로 내보내고, 새로운 페이지를 메모리에 적재합니다.
페이지 폴트가 발생하는 빈도는 페이지 교체 알고리즘과 메모리의 크기 프로세스의 특성 등에 따라 달라집니다. 페이지 폴트가 많이 발생하면 시스템의 성능이 저화되므로, 페이지 교체 알고리즘을 최적화하여 페이지 폴트를 최소화하는 것이 중요합니다.
유효 접근 시간 및 지역성의 원리
유효 접근 시간(Effective Access Time)은 메모리 접근 시간과 캐시 접근 시간을 고려한 전체적인 메모리 시스템의 접근 시간을 의미합니다. 즉, 메모리 시스템에서 데이터를 접근하는 데 걸리는 시간은 메모리 접근 시간과 캐시 접근 시간의 합으로 나타낼 수 있습니다.
지역성(Locality)의 원리는 프로그램이 특정한 시간 동안 일부 메모리 영역에 집중적으로 접근하는 경향이 있다는 것을 말합니다. 이는 대부분의 프로그램에서 루프(loop)를 통해 반복적으로 실행되는 코드 블록이나 데이터 블록이 존재하기 때문입니다.
이러한 지역성의 원리를 이용하여 캐시 메모리를 사용하면 메모리 접근 시간을 줄일 수 있습니다. 캐시 메모리는 작고 빠른 메모리이므로 캐시 메모리에 자주 접근하는 데이터나 코드 블록을 저장해 놓으면, 캐시 메모리에서 데이터를 가져오는 시간이 매우 빨라지기 때문입니다. 또한 캐시 메모리에 저장된 데이터는 지역성의 원리를 이용하여 같은 데이터나 코드 블록에 대한 접근이 반복적으로 일어날 때, 캐시 메모리에서 처리할 수 있으므로 메모리에 접근 시간을 획기적으로 줄일 수 있습니다.
따라서 지역성의 원리를 이용하여 캐시 메모리를 최적화면, 메모리 시스템의 유효 접근 시간을 빠르게 할 수 있습니다.
참고
https://goodmilktea.tistory.com/36
https://brightmango.tistory.com/245
'Computer Science > OperatingSystem' 카테고리의 다른 글
[OS] 컨텍스트 스위칭이란?(Context Swiching) (CS스터디) (0) | 2023.07.07 |
---|---|
[OS] 프로세스와 스레드는 어떤 차이점이 있나요? (0) | 2023.06.30 |
[OS] CPU 스케줄링이란? (0) | 2023.04.17 |
[OS] 참조의 지역성과 참조 집합 (0) | 2023.03.05 |
[OS] 가상 메모리(Virtual Memory System) 란? (0) | 2023.02.23 |