Scribbling

운영체제 - 8 본문

Computer Science/Computer Knowledge

운영체제 - 8

focalpoint 2021. 10. 20. 13:45

 

1. 가상 메모리

컴퓨터마다 실제 메모리의 크기는 다르다. 가상 메모리는 물리 메모리의 크기와 상관없이 메모리를 이용할 수 있도록 지원하는 기술이다. 프로그래머는 가상 메모리 덕분에 물리 메모리의 크기에 구애받지 않고 작업할 수 있는 작업 공간을 얻게 되는 셈이다.

현대 메모리 관리의 가장 큰 특징은 물리 메모리의 크기와 프로세스가 올라갈 메모리의 위치를 신경 쓰지 않고 프로그래밍하도록 지원한다는 것이다. 이러한 메모리 시스템을 가상 메모리(Virtual Memory)라고 한다. 모든 프로세스는 물리 메모리와 별개로 자신이 메모리의 어느 위치에 상관없이 0번지부터 시작하는 연속된 메모리 공간을 가진다. 메모리 관리자는 물리 메모리의 부족한 부분을 스왑 영역으로 보충한다. 즉 물리 메모리가 꽉 찼을 때 일부 프로세스를 스왑 영역으로 보내고(스왑 아웃), 자리가 생기면 스왑 영역에 있는 프로세스를 메모리로 가져온다(스왑 인). 메모리 관리자가 가상 주소를 물리 주소로 변환하는 작업을 동적 주소 변환(DAT; Dynamic Address Translation)이라고 한다.

 

2. 페이징 기법

2.1 페이징 기법

페이징 기법은 고정 분할 방식을 이용한 가상 메모리 관리 기법으로, 물리 주소 공간을 같은 크기로 나누어 사용한다. 가상 주소의 분할된 각 영역은 페이지(page)라고 부르며, 물리 메모리의 각 영역은 프레임(frame)이라고 부른다. 하나의 페이지는 하나의 프레임에 대응되기 때문에, 페이지와 프레임의 크기는 당연히 같다.

아래 그림은 페이징 기법을 나타낸다. 페이지 테이블에서 'invalid' 프레임은 해당 페이지가 스왑 영역에 있는 프레임과 대응됨을 의미한다. 페이지 테이블의 각 행은 페이지 테이블 엔트리라고 부른다.

컴퓨터는 2진법을 사용하므로 한 페이지의 크기도 2의 지수승을 따른다. 예컨대 유닉스 계열의 VAX는 한 페이지 크기가 2**9 B이고, 윈도우는 2**12B이다(일반적으로 메모리 주소는 1Byte 단위로 부여된다).

 

2.2 페이지 테이블 관리

페이지 테이블의 크기는 프로세스의 크기에 비례한다. 페이지 테이블 관리가 복잡한 것은, 시스템에 여러 프로세스가 존재하고 각 프로세스마다 페이지 테이블이 하나씩 있기 때문이다. 메모리 관리자는 특정 프로세스가 실행될 때마다 해당 페이지 테이블을 참조하여 가상 주소를 물리 주소로 변환한다.

때문에 전체 페이지 테이블의 크기는 프로세스의 수에 비례하여 커진다. 문제는 페이지 테이블의 전체 혹은 일부도 메모리에 올라와야 하는데, 페이지 테이블의 크기도 만만치 않게 크다는 것이다. 메모리에 올라와 있는 페이지 테이블의 크기나 지나치게 클 경우(페이지 테이블은 운영체제 영역에 저장됨) 사용자 프로세스가 사용할 수 있는 메모리의 크기가 줄어들기 때문에, 페이지 테이블의 크기를 적정하게 유지하는 것이 중요하다. 

페이지 테이블은 운영체제 영역에 저장되어 있는데, 메모리 관리자가 각각의 페이지 테이블에 바로 접근할 수 있도록 '테이블 기준 레지스터(Page Table Base Register)'에 그 시작 주소를 저장하고 있다. 

 

2.3 페이지 테이블 매핑 방식

사용할 수 있는 물리 메모리 영역이 부족할 경우 프로세스 뿐 아니라 페이지 테이블의 전체 또는 일부도 스왑 영역으로 옮겨진다.

A. 직접 매핑(Direct Mapping)

페이지 테이블 전체가 물리 메모리 운영체제 영역에 존재한다.

 

B. 연관 매핑(Associative Mapping)

페이지 테이블 전체를 스왑 영역에석 관리하는 방식이다. 그림에서 보듯 연관 매핑은 페이지 테이블의 일부를 무작위로 메인 메모리로 가져온다. 가져온 페이지가 무작위이므로 페이지 및 프레임 값이 모두 표시되어 있다. 직접 매핑의 경우 원하는 프레임 번호를 한번에 알 수 있지만, 연관 매핑은 페이지 테이블의 모든 행을 다 확인해야 하며, 원하는 페이지가 없었을 경우에는 스왑 영역에서 다시 검색해야 하는 비효율이 있다.

물리 메모리에 있는 무작위로 가져온 페이지 테이블의 일부를 변환 색인 버퍼(Translation Look-aside Buffer; TLB)라고 부른다. 변환 색인 버퍼를 이용한 검색은 캐시 시스템과 유사하다. 프로세스가 특정 메모리에 대한 접근을 요청하면 메모리 관리자는 해당 페이지가 TLB에 있는지 찾아본다. 만약 있다면 TLB Hit이며, 없으면 TLB Miss이다.

 

C. 집합-연관 매핑(Set-Associtative Mapping)

집합-연관 매핑은 페이지 테이블을 관리하는 테이블(집합 테이블; Set Table)을 하나 더 두는 식이다. 페이지 테이블을 일정 집합으로 자르고, 자른 덩어라 단위로 물리 메모리로 가져온다. 그림에서 집합0과 집합1의 'I'는 Invalid로, 해당 페이지 테이블의 엔트리들이 스왑 영역에 있음을 의미한다. 그리고 집합2의 값 180은 물리주소 180에 해당 페이지 테이블 엔트리들이 있음을 의미한다. 이 방식은 스왑 영역에 일부 페이지를 저장하므로써 메모리 효율성을 증가시키면서, 엔트리 검색 또한 효율적이다.

 

D. 역매핑(Invert Mapping)

역매핑에서는 물리 메모리의 프레임 번호를 기준으로 테이블을 구성한다. 역매핑의 특징은 프로세스 수와 관계없이 테이블이 한개라는 것이다. 테이블 크기가 물리 메모리 크기에 대응되기 때문에 그 크기가 작지만, 역시 검색이 비효율적이라는 문제가 있다.

 

3. 세그먼테이션 기법

세그먼테이션 테이블에는 세그먼트의 크기를 나타내는 limit 값과 시작 주소 address가 있다. 세그먼테이션 기법도 스왑 영역을 사용한다. 세그먼테이션 기법을 사용하면 프로세스들이 연속된 메모리를 할당받기 때문에 테이블 관리가 용이하다는 장점이 있으나, 외부 단편화 문제를 해결하기 위한 물리 메모리 관리가 복잡하다는 문제를 갖고 있다.

특정 프로세스가 limit 범주를 넘어가는 주소를 요청하면 메모리 관리자는 트랩(trap)오류를 발생시키고 해당 프로세스를 종료시킨다. 트랩은 자신의 영역을 벗어나는 주소를 접근하거나 숫자를 0으로 나누는 것과 같이 사용자가 의도치 않게 일으키는 인터럽트를 의미한다.

 

4. 세그먼테이션-페이징 혼용 기법

4.1 메모리 접근 권한

메모리 접근 권한은 읽기(read), 쓰기(write), 실행(execute)이 있다. 프로세스의 영역별 메모리 접근 권한이 다르다. 예컨대 코드 영역은 읽기 및 실행 권한을 가진다. 가상 주소에서 물리 주소로 변환이 일어날 때마다 메모리 접근 권한 또한 시행된다. 메모리 접근 권한에 위배될 경우 트랩이 발생한다. 메모리 접근 권한은 권한 비트(right bit)로 구분된다.

 

4.2 세그먼테이션-페이징 혼용 기법의 도입

페이지 테이블에 권한 비트까지 추가되면 테이블의 크기가 비효율적으로 커진다. 앞서 언급했듯이 권한 비트는 프로세스의 영역에 따라 구분되므로, 세그먼테이션 테이블을 이용하면 보다 효율적인 관리가 가능하다. 이와 같은 방식을 세그먼테이션-페이징 혼용 기법이라고 하며, 현대 운영체제는 대부분 이 방식을 따른다.

 

5. 캐시 매핑 기법

캐시에 메인 메모레의 일부분을 가져다 두는 방식도 가상 메모리 관리의 방식과 유사하다.

5.1 캐시 직접 매핑

캐시 또한 메모리를 일정 크기로 나눈다. 메모리가 N개의 페이지, 캐시가 M개의 페이지로 구성되어 있다고 하자. 메인 메모리의 크기에 비해 캐시의 크기가 훨씬 작기 때문에, N >> M이 성립한다. N을 M으로 나눈 값을 블록 수라고 하는데, 캐시 관리 측면에서 메모리는 블록 단위로 구분된다. 이 때 각 블록의 첫 페이지는 캐시의 첫 페이지로만 올라오며, 블록의 두 번째 페이지는 캐시의 두 번째 페이지로만 올라온다. 이처럼 직접 메핑에서는 각 블록의 특정 번호의 페이지가 캐시에 올라오는 위치가 고정된다.

 

5.2 캐시 연관 매핑

연관 매핑은 캐시 메모리를 자유롭게 사용할 수 있다. 그러나 캐시 미스를 체크하기 위해 모든 행을 다 검색해야 하는 문제가 있다.

 

5.3 캐시 집합-연관 매핑

집합-연관 매핑은 캐시를 K개의 집합을 나누고 각 집합에 직접 매핑을 사용하는 방식이다. 이 방식으로 00bd를 K개 사용할 수 있으므로, 직접 매핑의 자리다툼 문제가 완화된다.

 

'Computer Science > Computer Knowledge' 카테고리의 다른 글

운영체제 - 10  (0) 2021.10.31
운영체제 - 9  (0) 2021.10.22
운영체제 - 7  (0) 2021.10.16
운영체제 - 6  (0) 2021.10.11
운영체제 - 5  (0) 2021.10.08