가상 메모리란 프로그램이 혼자 메모리를 사용하는 것처럼 메모리를 가상화한 것을 말한다
연속메모리 할당은 메모리 크기보다 더 큰 기억공간이 필요한 프로세스는 실행 불가하다.
그럴때 가능하게 하는 방법이 가상 메모리이다.
실행중인 프로세스에 의해 참조되는 주소를 메모리에서 사용하는 주소와 분리한다. 현재 필요한 일부만 메모리에 적재한다.
프로세스 입장에서는 a이지만 실제 메모리상에서는 b 라는 주소로 처리하게 된다.
그래서 주소 a 를 주소 b로 사상해줘야할 필요가 있다. 즉 바꿔준다고 생각하면 된다.
사상
프로세스 실행을 위해 가상주소를 실주소로 변환하는 과정
가상주소공간 에서 실주소 공간으로 변환할때 주소변환 기법을 사용해야한다.
동적 주소변환(DAT) : 프로세스가 실행되는 동안 사상 (즉 실시간)
- 인위적 연속성인 특징을 가진다.
- 가상주소 공간에서 연속적인 주소가 실주소 공간에서도 연속적인 필요는 없다.
블록 단위 주소변환
1. 주소 변환 사상표 : 동적 주소 변환을 위한 정보를 저장한다. 즉 HashMap
- 주소변환이 바이트나 원드 단위로 이뤄지면 변환에 필요한 정보량이 너무 많아 비효율적이다.
위 단점을 해결하고자 나온 시스템이 블록 사상 시스템
- 블록 단위로 주소변환
- 가상 메모리의 각 블록이 메모리의 어디에 위치하는지 관리
블록으로 b가 b' 으로 매핑할때 사상표에는
블록 b가 b' 을 가르키도록 사상표를 가지면 된다.
가상주소는 v = (b,d) 라고 표현한다.
이렇게 되면 b는 b' 를 가르키게 되고
b' 와 거리 d를 사용해서 r을 구할 수 있다.
V = (블록번호, 블록 시작점부터의 변위)
블록의 크기는 적절하게 정해줘야한다.
블록의 크기가 커질수록 사상표의 크기는 감소하고, 블록의 전송시간은 증가, 동시에 적재할 프로세스 수 가 감소한다.
블록 구성방식
페이징 기법 : 가상메모리 블록의 크기가 동일 ,
메모리 영역도 페이지와 동일한 크기의 페이지 프레임으로 나눔
페이지 프레임 : 페이지를 담을수 있는 틀
페이징 표현 방법
3 : 페이지 번호
1: 페이지 존배비트 (실제 메모리상에 존재하느냐)
s : 보조기억장치 주소
5 : 페이지 프레임 번호
가상메모리 블록의 크기가 다름 : 세그먼트
직접 사상에 의한 동적 주소변환
직접사상: 페이지 사상표를 직접 이용한다.
ex ) 페이지 크기 M = 1024 , v= (3,8)이면
= 000011 0000001000
앞에는 페이지번호, 뒤에는 크기.
3번 찾아가고
앞에 1이면 적재되어 있다 > 몇번 프레임에 ?? -> 5번 페이지 프레임
실주소 = r = 5M + 8
000101 00000010000
연관사상에 의한 동적 주소변환
- 페이징 변환 정보를 연관 메모리에 저장한 연관사상표를 이용
- 연관사상표 -
페이지 번호 | 페이지프레임번호 |
1 | 2 |
2 | 5 |
3 | 4 |
가상주소 v = (3,8)
000011 0000001000
순차적으로 하지 않고 동시에 한 번에 살펴볼 수 있다는 장점이 있다.
연관 / 직접 사상에 의한 동적 주소 변환
연관 사상표 에는 가장 최근에 참조된 페이지만 보관 한다.
연관 사상표에 없을때만 직접사상을 이용한다.
페이징 기법의 특징
- 논리적 의미와 무관 한 동일 크기의 페이지로 나뉜다.
- 메모리 보호는 페이지 단위로 이루어진다.
- 왼부 단편화 발생 x 내부 단편화 발생 가능
댓글