본문 바로가기

카테고리 없음

8장 가상 메모리의 기초

요구 페이징

프로세스가 필요로 하는 데이터를 언제 메모리로 가져올지 결정하는 가져오기 정책에서

이를 요구하는 것을 페이징 이라고 한다.

 

 

1 가상 메모리 시스템

물리 메모리의 크기와 상관없이 프로세스에 커다란 메모리 공간을 제공하는 기술로 메모리를 이용하면 프로세스는 운영체제가 어디에 있는지, 물리 메모리의 크기가 어느 정도인지 신경쓰지 않고 메모리를 마음대로 사용할 수 있다.

 

이에 대한 장점으로 운영체제 및 어플리케이션 양의 상관없이 메모리 공간을 활용할 수 있다.

 

가상 메모리의 구성

프로세스가 바라보는 메모리 영역과 메모리 관리자가 바라보는 메모리 영역으로 나누어진다. 이때 가상 메모리에서 메모리 관리자는 물리 메모리의 부족한 부분을 슷왑 영역으로 보충한다.

 

즉 교체하는 방법을 통해서 메모리 제약 사양을 저장장치까지 확대할 수 있는 개념이다.


가상 메모리의 크기 

가상 메모리에서 메모리 관리자가 사용할 수 있는 메모리의 전체 크기는 물레 메모리(실제 메모리)와 스왑 영역을 합한 크기이다.

 

동적 주소 변환

가상 주소를 실제 메모리의 물리 주소로 변환하는 것으로 프로세스가 아무 제약 없이 사용자의 데이터를 물리 메모리에 배치할 수 있게 된다.

 

가상 메모리의 메모리 분할 방식

구분 가상 메모리 물리 메모리
최대 메모리 크기 CPU의 비트 값에 의존 CPU의 비트 값에 의존
메모리 분할 방식 세그멘테이션 가변 분할 방식
페이징 고정 분할 방식
세그멘테이션페이징 혼용 기법  
주소 지정 방식 가상 주소 절대주소, 상대 주소

 

세그멘테이션 기법은 가변 분할 방식의 단점이 외부 단편화 등의 문제 때뭉네 잘 사용하지 않지만 펭징 기법은 페이지 관리의 어려움이 있다.

가상 메모리 시스템에서는 두 기법의 단점을 보완한 세그멘테이션-피이징 혼용 기법을 주로 사용한다.

 

 

 

 

2 매핑 테이플의 필요성과 역할

가상 메모리의 물리 메모리의 매칭을 하기 위해서는

매핑 테이블일 전제가 되어야 한다. (논리적인 변환을 할 때 자주 이용한다)

 

가상 메모리 시스템에서 메모리 관리자는 가상 주소와 물리 주소를 일대일 매핑 테이블로 관리한다.

실제로 가상 메모리는 물리 메모리 상에 있거나 스왑 영역에 존재할 수 있다.

 

페이징 기법에서 사용하는 매핑 테이블은 페이지 매핑 테이블 또는 페이지 테이블이라고 부르며, 세그멘테이션 기법에서 사용하는 매핑 테이블은 세그멘텡션 매핑 테이블 또는 세그먼테이션 테이블이라고 부른다.

 

 

 

3 페이징 기법

고정 분할 방식을 이용한 가상 메모리 관리 기법으로 물리 주소 공간을 같은 크기로 나누어 사용한다.

가상 주소는 프로세스 입장에서 바로본 메모리 공간으로 항상 0번지부터 시작한다.

 

중간 페이지를 두는 개념으로 이해할 수 있다.

 

 

 

-페이지 테이블은 사용하여 P는 F로 바구고 D는 변경 없이 그대로 씀

-D를 변경하지 않는 이유는 페이지와 프레임의 크기로 똑같이 나누었기 때문

 

가상의 주소는 물리 주소로 매칭이 되어야 하는데

페이지 프레임으로 distance는 distance로 매칭이 되어야 한다,

 

이때 2바이트 체계 맞춰 이진수 기법을 써야된다.

 

 

페이지 크기가 다양한 경우 가상 주소를 <P,D>로 변환하는 공식

P=나눗셈(가상의 주소 / 한 페이지의 크기)의 몫
D=나눗셈(가상 주소/ 한 페이지의 크기)의 나머지

 

다수의 프로세스가 있는 페이징 시스템

한 번에 실행하는 프로세스 수가 많으면 페이지 테이블 크기가 같고 커지고, 이에 따라 프로세스가 실제로 사용할 수 있는 메모리 영역이 줄어든다.

페이지 텡블 크기를 적정하게 유지하는것이 페이지 테이블 관리의 핵심이다.

 

프로세스가 여러가 있으면

메모리 입장에서 고민거리가 더 많아진다.

 

 

물리 메모리 내 페이지 테이블의 구조

물리 메모리의 크기가 작을 때는 프로세스만 스왑 영역으로 옮겨지는 것이 아니라 페이지 테이블 일부도 스왑 영역으로 이동한다.

이때 운영자 영역과 사용자 영역을 나누어서 바라보아야 한다.

 

직접 매핑 : 페이지 테이블 전체가 물리 메모리의 운영체제 영역에 존재하는 방식

연관 매핑 : 페이지 테이블 전체를 스왑 영역에서 관리하는 방식

역 매핑 : 물리 메모리의 프레임 번호를 기준으로 테이블 구성 ( 위치는 따로 지정하지 않음)

집한-연관 매핑 : 집한-연관 매핑에서는 페이지 테이블을 일정한 집합으로 자르고, 자른 덩어리 단위로 물리 메모리에 가져오는 방식

페이지 테이블 매핑 방식이다.

파일을 디렉토리를 올리면 편하기 때문에

스왑 영역을 어디 두느냐에 따라서 구별할 수 있다.

 

 

 

 

4 세그멘테이션 기법의 구현

가변 분할 방식을 이용한 가상 메모리 관리 기법으로 ,물리 메모리를 프로세스의 크기에 따라 가변적으로 나누어 사용한다. 즉 세그멘테이서도 매핑 테이블이 존재한다.

 

 

위는 프로세스 a의 32번지에 접근할 때 주소 변환 과정이다

여기서 핵심은

리미테이션이라는 트랩이라는 개념이다.

원래 사이즈가 작으면 제한이 있다.

 

 

메모리 접근 제한

메모리의 특정 버닞에 지정된 데이터를 사용할 수 있는 권한으로

읽기 쓰기 실행 추가 권한이 있다.

 

세그멘테이션 페이징 혼용 기법으로

메모리 필드를 투 바이트 체계를 고려한 것이다.

 

프로세스의 영역별 메모리 접근 권한

코드 영역 : 자기 자신을 수정하는 프로그램은 없기 때문에 일기 및 실행 권한을 가짐

데이터 영역 : 데이터는 크게 읽거나 쓸 수 있는 데이터와 읽기만 가능한 데이터로 나눌 수 있음

 

프로세스 영역이 여러 영역으로 나누어져 있다.

접근 권한을 부여서해서 접근할 수 있게 하는 것이다.

 

 

세그멘테이션-페이징 혼용 기법에서 동적 주소 변환 과정

오늘날 가상 메모리의 물리 메모리를 연결하는 방식으로

세그 멘트와 페이지 혼용하기 때문에 주소가 복잡해졌다.

세그 멘테이션은 자기 위치만큼 리므트를 준다.

 

 

연습문제

1. 물리 메모리와 스왑 영역을 더한 값

2. CPU의 비트 수

3. 주소 매핑 테이블

4. VA = <P, D> -> PA=<F, D>

5. 페이지 테이블 엔트리

6. 페이지 엔트리 수로 가상 주소를 나눴을 때 몫이 P이고 나머지가 D다.

7. PTBR

8. 연관 매핑

9. 직접 매핑

10. 집합 연관 매핑

11. 역매핑

12. TLB

13. TLB 미스

14. 스왑 영역

​15. 동적 주소 변환

16. 리미테이션(트랩)

17. 매핑 테이블 테이블

 

 

 

 

[별첨] 가상메모리 설정으로 고성능 게임을 빠르게 할 수 있다?

 

최근에 고성능 게임이 많아 나오면서

일반적인 성능과 메모리를 가지고 있는 데스크탑이나 노트북으로는

흔히 말하는 버퍼링 때문에

최근 유행하는 게임을 즐기긴 힘들다.

 

하지만 가상 메모리를 설정하여 이런 문제를 해결할 수 있을까?

 

결과적으로  완벽하게 성능을 향상시키긴 힘들다고 본다.

가상 메모리가 부족한 RAM의 용량을 보완하기도 하지만, 엄청난 속도로 페이징의 로딩과 대기 순환이 이루어지기 때문에 물리적 메모리와 저장장치간 속도 차이로 실제 메모리 증설과 같은 성능적인 향상을 기대하기 힘들 것 같다.

 

제일 좋은 방법은 주기적으로

최적화 프로그램 또는 기능을 통해 사용하지 않은 메모리 기본 점유율을 줄이는게 제일 좋을 것 같다는 생각이 든다.

 

 

그럼에도 가상 메모리 설정을 통해 게임 속 프레임을 조금이나 유지시킬 수 있는 방안일 수 도 있으니

아래 동영상 링크를 참고해서 설정해도 나쁘지 않을듯 하다.

 

https://www.youtube.com/watch?v=XkbOAMknrm8

 

 

 

 

 

참고 웹사이트

 

"세그멘테이션기법" 별의 블로그. 2020년 7월 22일 접속,

https://starrykss.tistory.com/969?category=7903550

"페이징" 별의 블로그. 2020년 7월 22일 접속,

https://starrykss.tistory.com/967?category=790355

참고문헌

조성호.쉽게배우는 운영체제.2019발행.한빛아카데미