가상 메모리

Chaeyun·2023년 12월 28일
0

CS

목록 보기
2/5

실제 메모리가 4GB인 컴퓨터가 있다.
메모리가 6GB가 필요한 프로그램이 있다면 해당 프로그램은 이 컴퓨터에서 실행시킬 수 없을까?

아니 실행시킬 수 있다.

이를 가능하게 하는 것이 가상 메모리다.

가상 메모리 = 물리 메모리 + 디스크의 스왑 영역

가상 메모리 주소를 실제 위치로 변환하기 위해 매핑 테이블을 사용한다.

고정 분할 방식 -> 페이징
가변 분할 방식 -> 세그먼테이션

페이징

페이지 매핑 테이블

페이징 방식에서 주소 변환이란 가상 주소 VA = <P, D>를 물리주소 PA=<F, D>로 변환하는 것이다.

여기서 VA = <P, D>란 가상 주소를 페이지 번호 P 와 각 페이지 안에서 거리 D 로 표현한 것이다.

[가상 주소를 VA=<P, D>로 표현하기]
각 페이지의 크기를 S, 가상 주소를 A라고 했을 때
P = A // S
D = A % S

가상주소의 구성

16 bit CPU 컴퓨터에서 한 페이지의 크기가 210 byte라고 가정해보자.
16 bit CPU의 가장 큰 가상 주소 값은 216-1 = 65535!
216을 각 페이지의 크기로 나누면 전체 페이지의 개수가 나온다.

216÷210=262^{16} \div 2^{10} = 2^6

정리하면 페이지 크기 = 210, 페이지 개수 = 26 이다.

이 때 가상주소 VA는 6 bit의 페이지 인덱스 P와 10 bit의 distance D로 이루어진다.
가상주소 bit 구성

가상 주소 2049를 VA = <P, D>로 표현해보자.

P = 2049 // 512 = 4
D = 2049 % 512 = 1
VA2049 = <4,1>

2049를 2진수로 변환하면 0000100000000001이다.
이중 앞의 6 bit 000010은 10진수로 4,
뒤의 10 bit 0000000001은 10진수로 1이 된다.

놀라운 사실!

페이지 테이블

페이지 테이블은 프로세스마다 존재한다.
또한, 페이지 테이블은 물리 메모리에 저장된다. (빨리 접근하도록 하기 위해서)
따라서, 한번에 실행되는 프로세스 수가 많으면 실제 가용 물리 메모리는 작아진다.

TLB

가상 주소 변환을 위해 페이지 테이블에 접근 후 실제 물리 메모리에 접근하게 되면,
실제로는 메모리에 두번 접근하는 것으로 속도가 떨어진다.

따라서 페이지 테이블 일부를 CPU에 두고 사용하게 되는데 이를 TLBTranslation Look-ahead Buffer라고 한다.

TLB는 페이지 테이블의 일부만 가지고 있기 때문에 페이지 테이블 인덱스 값을 가지고 있어야 한다. 따라서 다음과 같이 페이지 번호와 프레임 번호 2개의 열로 구성된다.

TLB 히트hit : 찾으려는 페이지 번호가 TLB에 있는 경우.
TLB 미스miss : 찾으려는 페이지 번호가 TLB에 없는 경우로, 메모리의 페이지 테이블에 추가 접근해야 함.

질문

1. 페이지와 세그먼테이션의 차이는?

페이지는 주소 공간을 모두 동일한 크기로 분할한 고정 분할 방식 주소 관리법이다.
세그먼테이션은 프로세스별로 실제 사용되고 있는 메모리 크기에 따라 주소공간이 분할되는 가변 분할 방식이다.

2. TLB란? 그리고 TLB와 페이지 테이블의 차이는?

TLB란 가상 주소를 물리 주소로 변환할 때 사용하는 페이지 테이블의 일부를 CPU에 올려놓은 것이다.

따라서 TLB는 CPU에 존재하고 페이지 테이블은 메모리에 존재한다.

또한, 페이지 테이블은 모든 페이지 번호가 순서대로 나열되어 있기 때문에 프레임 번호만 저장하지만 TLB는 페이지 인덱스도 저장하기 때문에 페이지 번호, 프레임 번호 2열로 구성되어있다.

3. TLB 히트, TLB 미스란?

TLB 히트란 찾으려는 페이지가 TLB 안에 있는 경우를 말하며, TLB 미스란 찾으려는 페이지가 TLB 안에 없어 메모리의 페이지 테이블을 탐색하는 경우를 말한다.

4. 페이지 교체 알고리즘의 정의와 종류를 나열해보시오.

페이지 교체 알고리즘이란 필요한 페이지가 스왑 영역에 있는 경우 메모리로 가져와야 하는데 메모리가 꽉찬 경우 스왑 영역으로 내려보낼 페이지를 선택하기 위한 알고리즘이다.

무작위, FIFO, LRULeast Recently Used, LFULeast Frequently Used, NRUNot Used Recently 등이 있다.

0개의 댓글