[혼공컴운] 6주차 - 가상 메모리 (chapter 14)

회색몽구스·2023년 2월 14일
0
post-thumbnail

chapter 14 가상 메모리

14-1 연속 메모리 할당

스와핑

스와핑은 메모리에서 사용되지 않는 일부 프로세스를 보조기억장치 (스왑 영역)로 내보내고 (스왑 아웃), 실행할 프로세스를 메모리로 들여 보내는 (스왑인) 메모리 관리 기법입니다.

메모리 할당

최초 적합 - 운영체제가 메모리 내의 빈 공간을 순서대로 검색하다가 적재할 수 있는 공간을 발견하면 그 공간에 프로세스를 배치하는 방식입니다.

최적 적합 - 운영체제가 빈 공간을 모두 검색해 본 후, 프로세스가 적재될 수 있는 공간 중 가장 작은 공간에 프로세스를 배치하는 방식입니다.

최악 적합 - 운영체제가 빈 공간을 모두 검색해 본 후, 프로세스가 적재될 수 있는 공간 중 가장 큰 공간에 프로세스를 배치하는 방식입니다.

외부 단편화

외부 단편화는 프로세스를 할당하기 어려울 만큼 작은 메모리 공간들로 인해 메모리가 낭비되는 현상을 의미합니다.

외부 단편화를 해결할 수 있는 대표적인 방안으로 메모리를 압축하는 방법이 있지만, 여러 단점이 있습니다.

14-2 페이징을 통한 가상 메모리 관리

페이징이란

페이징은 메모리의 물리 주소 공간을 프레임 단위로 자르고, 프로세스의 논리 주소 공간을 페이지 단위로 자른 뒤 각 페이지를 프레임에 할당하는 가상 메모리 기법입니다.

페이지 테이블

페이징 시스템은 프로세스가 비록 물리 주소에 불연속적으로 배치되더라도 논리 주소에는 연속적으로 배치되도록 페이지 테이블을 이용합니다.

각 프로세스의 페이지 테이블들은 메모리에 적재되어 있습니다. 그리고 CPU내의 페이지 테이블 베이스 레지스터 (page table base register: PTBR)는 각 프로세스의 페이지 테이블이 적재된 주소를 가리키고 있습니다.

하지만, 페이지 테이블을 메모리에 두면 메모리 접근 시간이 늘어나기 때문에, CPU 곁에 TLB (translation lookaside buffer)라는 페이지 테이블의 캐시 메모리를 둡니다. TLB는 페이지 테이블의 캐시이기 때문에 페이지 테이블의 일부 내용을 저장합니다.

CPU가 발생한 논리 주소에 대한 페이지 번호가 TLB에 있을 경우 이를 TLB 히트라고 합니다.

페이징에서의 주소 변환

페이징 시스템에서는 모든 논리 주소가 기본적으로 페이지 번호와 변위로 이루어져 있습니다.

페이지 테이블 엔트리

유효 비트는 해당 페이지가 메모리에 적재되어 있는지 여부를 알려주는 비트로, 페이지가 메모리에 적재되어 있지 않으면 페이지 폴트가 발생합니다.

보호 비트는 페이지에 접근할 권한을 제한하여 페이지를 보호하는 비트입니다.

접근 비트는 페이지에 접근한 적이 있는지를 나타냅니다.

수정 비트는 해당 페이지가 수정된 적이 있는지를 나타내며, 수정된 적이 있는 페이지가 스왑 아웃될 경우 변경된 값을 보조기억장치에 기록하는 작업을 쉽게 하기 위해 필요합니다.

14-3 페이지 교체와 프레임 할당

요구 페이징

프로세스를 메모리에 적재할 때 처음부터 모든 페이지를 적재하지 않고 필요한 페이지만을 메모리에 적재하는 기법

메모리에 적재된 페이지를 보조기억장치로 내보내야 하는데, 어떤 페이지를 내보내는 것이 최선일까? 이를 결정하는 방법을 페이지 교체 알고리즘이라 합니다.

페이지 교체 알고리즘

페이지 교체 알고리즘을 제대로 이해하려면 페이지 폴트 횟수를 알 수 있어야 하는데, 이는 페이지 참조열을 통해 알 수 있습니다.

FIFO 페이지 교체 알고리즘 - 메모리에 가장 먼저 올라온 페이지를 내쫓는 방식으로, 프로그램 실행 내내 사용될 내용을 포함하고 있을 수도 있습니다.

Reference) 2차 기회 페이지 교체 알고리즘

최적 페이지 교체 알고리즘 - CPU에 의해 참조되는 횟수를 고려하는 페이지 교체 알고리즘

하지만, 실제 구현이 어려워 위 알고리즘에서 발생하는 페이지 폴트 횟수를 페이지 폴트의 하한선으로 간주하고 다른 알고리즘을 평가하기 위해 사용됩니다.

LRU 페이지 교체 알고리즘 - 최근에 사용되지 않은 페이지는 앞으로도 사용되지 않을 것이라는 아이디어를 토대로 만들어진 알고리즘입니다.

스래싱과 프레임 할당

프로세스가 실제 실행되는 시간보다 페이징에 더 많은 시간을 소요하여 성능이 저해되는 문제입니다.

메모리에서 동시에 실행되는 프로세스의 수를 알기 위해 멀티프로그래밍의 정도 그래프를 그려서 살펴볼 수 있습니다.

스래싱을 해결하기 위해 프레임 할당 방식의 변경을 고려해 볼 수 있습니다.

균등 할당은 모든 프로세스에 동일한 프레임을 배분하는 방식, 비례 할당은 프로세스의 크기에 따라 프레임을 배분하는 방식으로 이 둘을 정적 할당 방식이라고 합니다.

이와 대조적으로 프로세스의 실행을 보고 할당할 프레임 수를 결정하는 동적 할당 방식이 있습니다.

작업 집합 모델 기반 프레임 할당은 작업 집합의 크기만큼만 프레임을 할당하는 방식이며, 페이지 폴드율 기반 프레임 할당은 페이지 폴트율에 상한선과 하한선을 정하고, 그 내부 범위 안에서만 프레임을 할당하는 방식입니다.

profile
끄아아아아 할 수 있다

0개의 댓글