-
가상 메모리Computer Science/Operating System 2021. 1. 14. 17:44
가상 메모리
질문
10.1 배경
가상 메모리란 무엇인가요?
- 가상 메모리란 프로세스 전체가 메모리 내에 올라오지 않더라도 실행이 가능하도록 하는 기법입
프로그램을 일부분만 메모리에 올려놓고 사용할 수 있다면 어떤 이점이 있나요?
- 프로그램은 물리 메모리 크기에 의해 더는 제약을 받지 않습니다.
- 각 프로그램이 더 작은 메모리를 차지하므로 더 많은 프로그램을 동시에 수행할 수 있습니다
- 프로그램을 메모리에 올리고 스왑하는 데 필요한 i/o횟수가 줄어들기 때문에 프로그램들이 빨리 실행됩니다
10.2 요구 페이징
- 요구 페이징이란?
- 보조저장장치에서 메모리로 프로그램을 적재할 때 필요한 페이지만 적재하는 기법
- 페이지가 메모리에 있는지 보조 저장 장치에 있는지 구분하는 방법은?
- 페이지 테이블에 유효-무효 비트를 만들어서 체크
- 페이지 폴트는 어떻게 처리할까?
- 메모리 참조가 유효한지 무효한지 알아낸다
- 무효한 참조라면 프로세스 종료, 유효하다면 보조 저장 장치로부터 페이지를 가져온다
- 가용 프레임을 찾는다
- 보조저장장치에 새롭게 할당된 프레임으로 해당 페이지를 읽어온다
- 페이지 테이블을 갱신한다
- 중단되었던 명령을 다시 수행한다
- 순수 요구 페이징이란?
- 메모리에 페이지가 하나도 올라가있지 않은 상태에서 프로세스를 실행시킴
- 모든 페이지가 메모리에 올라올 때까지 필요할 때마다 페이지 폴트가 발생
- 즉, 어떤 페이지가 필요해지기 전에는 결코 그 페이지를 메모리로 적재하지 않는 방법
10.3 쓰기 시 복사
- 쓰기 시 복사는 언제, 왜 일어날까?
- 자식 프로세스가 시작할 때 부모의 페이지를 당분간 함께 사용합니다
- 쓰기 작업을 할 때는 페이지를 복사해서 공유하는 페이지가 아닌 따로 만든 페이지에 수정합니다
- 쓰기 작업을 하지 않을 때는 페이지 폴트가 일어나지 않습니다
10.4 페이지 교체
- 메모리 과할당이란?
- 프로세스들이 필요로 하는 프레임보다 물리적 메모리가 작을 때 일어납니다
- 가용 프레임이 없을 때 어떻게 하는가?
- 프로세스 종료
- 표준 스와핑(프로세스를 스왑아웃하여 모든 프레임을 비운다)
- 페이지 교체
10.5 기본적인 페이지 교체
- 페이지 교체를 포함한 페이지 폴트 루틴은?
- 보조저장장치에서 필요한 페이지의 위치를 찾는다
- 빈 페이지 프레임을 찾는다
- 비어 있는 프레임이 있다면 사용
- 비어 있는 프레임이 없다면 페이지 교체 알고리즘 실행
- 희생될 페이지를 보조저장장치에 기록
- 빼앗은 프레임에 새 페이지를 읽어오고 테이블 수정
- 페이지 폴트가 발생한 지점부터 프로세스 수행
- FIFO 페이지 교체란?
- 어떤 페이지를 교체해야 할 때, 메모리에 올라온 지 가장 오래된 페이지를 내쫓습니다
- 페이지마다 시간을 기록할 수도 있고, 큐를 만들어서 사용할 수도 있습니다
- 순서에 따라서 페이지 폴트율이 더 증가할 수도 있음
- 최적 페이지 교체란?
- 앞으로 가장 오랫동안 사용되지 않을 페이지를 찾아 교체합니다
- 하지만 다음 메모리를 어떻게 참조할 것인지 미리 알아야하기 때문에 구현은 어렵습니다
- LRU 페이지 교체란?
- 가장 오랫동안 사용되지 않은 페이지를 교체하는 것입니다
- 각 페이지마다 counter를 만들어서, 시간에 따라 증가시킵니다
- counter 값이 가장 큰 페이지를 교체합니다
- LRU 근사 페이지 교체란?
- LRU 페이지 교체를 쓰면 좋지만, 이를 지원하는 하드웨어는 많지 않기 때문에 사용합니다
- 참조 비트의 형태로 어떤 페이지가 그동안 사용되었고, 어떤 페이지가 한 번도 사용되지 않았는지 알 수 있습니다
10.5 프레임 할당
- 균등 할당이란 무엇인가?
- 프로세스들을 메모리에 할당할 때 프로세스들 모두에게 동일한 프레임을 할당하는 것입니다
- 비례 할당이란 무엇인가?
- 각 프로세스의 크기 비율에 맞추어 프레임을 할당하는 방식입니다.
- 전역 교체와 지역 교체란 무엇인가?
- 전역 교체 : 페이지 교체를 할 때 다른 프로세스에 속한 프레임을 포함한 모든 프레임을 대상으로 찾습니다
- 지역 교체 : 각 프로세스가 자기에게 할당된 프레임 중에서만 교체될 희생자를 선택합니다.
- 전역 교체 알고리즘의 효율성이 좋지만, 다른 프로세스의 페이징 동작에 영향을 받을 수 있다는 문제점이 있습니다
10.6 스래싱
- 스래싱이란 무엇인가요?
- 작업 집합의 페이지를 지원하는 데 필요한 최소 프레임도 없는 경우, 프로세스는 곧바로 페이지 폴트를 발생시킬 것입니다. 이때 페이지 교체를 실행하게 되지만, 이미 활발하게 사용되는 페이지들만으로 이루어져 있기 때문에 바로 페이지 폴트 트랩이 발생합니다
- 어떤 프로세스가 실제 실행보다 더 많은 시간을 페이징에 사용할 때 스래싱이 발생했다고 합니다
- 작업 집합이란?
- 한 프로세스가 최근 n번 페이지를 참조했다면 그 안에 들어있는 서로 다른 페이지들의 집합을 작업 집합이라고 합니다
- n의 크기를 크게 지정하면, 너무 큰 지역성을 띄게 될 것이고, 너무 작게 설정한다면 전체 지역을 포함하지 못합니다
- 작업 집합 모델 방식이란?
- 작업 집합에는 활발하게 사용되는 페이지들이 들어있기 때문에 작업 집합 크기에 맞는 충분한 프레임을 할당합니다
- 페이지 폴트 빈도 방식이란?
- 페이지 폴트율이 너무 높으면 더 많은 프레임을 할당하고, 페이지 폴트율이 낮으면 프로세스의 프레임 수를 줄입니다.
- 페이지 폴트율이 높아졌는데, 가용 프레임이 없다면 한 프로세스를 선택하여 스왑 아웃시킵니다.
'Computer Science > Operating System' 카테고리의 다른 글
입출력 시스템 (0) 2021.01.15 대용량 저장장치 구조 (0) 2021.01.14 메모리 관리 (0) 2021.01.14 교착 상태 (0) 2021.01.14 동기화 도구들 (0) 2021.01.10