▶클릭◀ 병원 약국에서 지출한 병원비 약값 최대 80% 보장받기
실제 주소 공간보다 더 큰 논리 주소 공간을 필요로 실행할 수 있다.는 것은 바람직한 일이라고 볼 수 있다. 가상 메모리는 매우 큰 논리 주소 공간을 은 물리 메모리로 사상하는 기법이다. 가상 메모리는 매우 큰 프로세스를 실행시킬 수 있기하고, 다중 프로그래밍의 정도를 증가시켜 CPU의 이용률을 향상시킨다. 특히 응용 프로그래머로 하여금 메모리 크기에 신경을 쓰지 않도록 해준다. 또한, 가상 메모리를 이해 여러 프로세스가 시스템 라이브러리와 메모리를 공유할 수 있다. 가상 메모리는 또하쓰기-시-복사로 불리는 효율적인 프로세스 생성 방법도 제공하여 부모와 자식 프로세스들 간에 실제 메모리를 공유할 수 있도록 해 준다.
가상 메모리는 보통 요구 페이징으로 구현된다. 순수 요구 페이징은 실제로 페이지를 참조할 때까지 어떤 페이지도 미리 불러들이지 않는다. 그러다가 메모리에 올라와 있지 않은 페이지에 대해 참조를 하면, 그 때 페이지 부재(page fault)를 일으킨다. 운영체제는 내부의 테이블을 참조하여 그 페이지가 백킹 저장장치 내 어디에 있는지를 알아낸다. 그리고 가용 프레임을 찾아내서 그 페이지를 백킹 저장장치로부터 읽어 들인다. 페이지 테이블은 이 수정사항을 기록하고 페이지 부재를 일으킨 명령은 다시 실행된다. 이런 방식으로 전체 프로세스가 주 메모리에 올라와 있더라도 프로세스를 실행할 수 있게 해준다. 페이지 부재율이 충분히 낮기만 하면 가상 메모리 시스템의 성능은 만족할 만한 수준이다.
요구 페이징을 통해 프로세스에 할당되는 프레임 수를 줄일 수 있다. 이는 다중 프로그래밍의 정도를 높이고(동시에 실행되는 프로세스의 수를 더 증가시키고) - 이론적으로는-CPU 이용률을 높일 수 있다. 또한, 메모리 요구량이 실제 물리 메모리보다 큰 프로세스들도 실행할 수 있도록 해 준다. 이러한 프로세스들은 가상 메모리상에서 실행된다.
메모리 총 요구량이 물리 메모리의 용량을 초과한다면, 새로운 페이지를 읽어오기 위해 기존의 페이지를 교체시킬 필요가 있다. 여러 가지 교체 알고리즘이 사용된다. FIF)알고리즘은 구현하기는 쉽지만 Belady의 모순 현상 때문에 문제가 있다. 최적 페이기교체 알고리즘은 미래의 정보를 필요로 한다. LRU는 최적 교체 알고리즘을 근사하지만 이 역시 구현하기가 쉽지 않을 수 있다. 2차 기회 알고리즘과 같은 대부분의 페이지 교체 정책은 LRU 정책의 근사 알고리즘을 사용한다.
페이지 교체 알고리즘과 함께 프레임 할당 정책이 중요하다. 할당은 지역 교계 정책을 사용하여 고정되어 있을 수도 있고 전역 교체 정책을 사용하여 동적일 수 있다. 각업 집합 모델은 프로그램의 실행이 지역성을 띠고 있다고 가정한다. 작업 집합은 현재 실행중인 지역의 페이지들의 집합이다. 따라서 각 프로세스에는 작업 집합을 충분히 수용할 수 있는 만큼의 프레임이 할당되어야 한다. 만약 프로세스의 작업 집합을 수용할 수 있는 충분한 공간을 할당해 주지 않으면 쓰래싱(thrashing)이 발생한다. 쓰래싱을 피하기 위해 충분한 공간을 확보하는 데는 프로세스 스와핑과 스케줄링이 필요하다.
대부분의 운영체제는 메모리 사상 파일 기능을 제공하여 파일 I/O가 일반적인 메모리 접근으로 처리될 수 있도록 한다. Win32 API는 공유 메모리를 메모리 사상 파일로 구현하고 있다.
커널 프로세스들은 보통 물리적으로 연속된 페이지들을 할당받는 것이 필요하다. 버디 시스템은 2의 거듭제곱 크기를 갖는 단위의 메모리를 할당하고, 이에 따라 단편화 문제가 발생할 수 있다. 슬랩 할당기는 각 커널 자료의 구조를 하나 또는 그 이상의 물리적으로 연속된 페이지인 슬랩 상의 캐시에 할당한다. 슬랩 할당을 통해 단편화에 의한 메모리 낭비를 막고 메모리 요구를 빠르게 처리해 줄 수 있다.
페이지 교체 정책, 프레임 할당 정책과 같은 주요한 문제 이외에도 페이징 시스템 설계에 있어 고려해야 할 것들로는 페이지 크기, 입출력, 잠금, 프리페이징, 프로세스 생성, 프로그램 구조 등이 있다.
'컴퓨터 구조' 카테고리의 다른 글
파일 시스템 구현에 대해서.. (0) | 2022.04.17 |
---|---|
파일 시스템에 관해서.. (0) | 2022.04.17 |
메모리 관리 전략은 이렇게.. (0) | 2022.04.17 |
교착상태에 대해서.. (0) | 2022.04.17 |
프로세스 동기화에 대해서 (0) | 2022.04.16 |