OS – 가상 메모리 기초

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

가상 메모리의 크기: 가상 메모리에서 메모리 관리자가 사용할 수 있는 메모리의 전체 크기는 물리 메모리와 스왑 영역을 합한 크기

동적 주소 변환: 가상 주소를 실제 메모리의 물리 주소로 변환
-> 프로세스가 아무 제약 없이 사용자의 데이터를 물리 메모리에 배치할 수 있음

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

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

프로세스가 30번지의 내용을 읽으려고 할 때 주소 변환 과정

  1. 가상 주소 30번지다 어느 페이지에 있는지 찾음 (30번지는 페이지 3의 0번째 위치에 있음: VA=<3,0>)
  2. 페이지 테이블의 페이지 3으로 가서 해당 페이지가 프레임 1에 있다는 것을 알아냄
  3. 최종적으로 물리 메모리 프레임 1의 0번째 위치에 접근 (이 주소가 가장 수고 30번지의 물리 주소)

페이징 기법의 주소 변환 과정

VA=<P,D> -> PA=<F,D>
페이지 테이블을 사용하여 P는 F로 바꾸고 D는 변경없이 그대로 씀
(D를 변경하지 않는 이유는 페이지와 프레임의 크기를 똑같이 나누었기 때문)

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

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

Q. 한 페이지의 크기가 10B인 가상 메모리 시스템에서 가장 주소 32번지
A.
P=3(32/10), D=2(32%10)

16비트 컴퓨터에서의 페이징 시스템
가상 주소로 사용할 수 있는 16bit 중 6bit는 페이지 번호로, 10bit는 페이지의 처음 위치에서 해당 주소까지의 거리

프로세스가 980번지에 저장된 데이터를 요청했을 때 동적 주소 편환
(16비트에서 한 페이지의 크기는 1024B) – 2진수 변환 무시하고 풀어도 됨

A. P=0(980/1024), d=980(980%1024) -> VA=<0,980>
-> 페이지 테이블로 가서 페이지 0이 프레임 2에 저장되어 있다는 것을 확인
-> 물리 메모리의 프레임 2 시작 지점으로부터 980번지 떨어진 곳에 접근하여 데이터를 가져옴 -> PA=<2,980>
-> 논리 주소(가상 주소): 980, 물리 주소(실제 주소): 3028 (2×1024+980)

페이지의 크기가 1KB라고 가정할 때 페이지 번호(P)와 오프셋(D) – 2진수 변환 고려

물리 메모리 내 페이지 테이블의 구조
각 페이지 테이블의 시작 주소는 페이지 테이블 기준 레지스터에 보관
물리 메모리의 크기가 작을 때는 페이지 테이블의 일부도 스왑 영역으로 옮겨진다.


페이지 테이블 매칭 방식

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

2. 연관 매핑
페이지 테이블 전체를 스왑 영역에서 관리하는 방식, 일부 내용만 무작위로 가져오기 때문에 페이지 번호와 프레임 번호 둘 다 표시

메모리에 접근하기 위해 먼저 변환 색인 버퍼를 찾음

TLB 히트: 원하는 페이지 번호가 변환 색이 버퍼에 있는 경우로, 곧바로 물리 주소로 변환
TLB 미스: 원하는 페이지가 변환 색인 버퍼에 없는 경우로, 스왑 영역에 저장된 직접 매핑 테이블을 사용함

3. 집합-연관 매핑
페이지 테이블을 일정한 집합으로 자르고, 자른 덩어리 단위로 물리 메모리에 가져옴

= 집합 연관 매핑 방식의 가상 주소 =

4. 역매핑
물리 메모리의 프레임 번호를 기준으로 테이블 구성


세그멘테이션-페이진 혼용 기법

메모리 접근 권한
메모리의 특정 번지에 저장된 데이터를 사용할 수 있는 권한
읽기, 쓰기, 실행, 추가 권한이 있음

페이징 기법에서 메모리 접근 권한까지 고려한 페이지 테이블 예

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

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

1) 사용자 데이터 요청
2) 해당 주소가 몆 번째 세그먼트의 /몆 번째 테이블의 / 얼마나 떨어져 있는지 확인

  • VA = <S, P, D>

3) 세그먼테이션 테이블에서 영역을 벗어나는지, 권한에 안 벗어나는지를 체크(권한비트)
⇨ 벗어나면 트랩(강제 종료)

4) 연결된 페이지 테이블로 이동
5) 페이지 테이블의 해당 페이제에 물리주소의 프레임을 찾음
6) 물리메모리에 프레임이 있다면 바로 접근
7) 없으면, 스왑영역에서 검색
8) 물리 메모리에 있는 프레임의 첫 위치에서 “D”만큼 떨어진 곳에 접근

Leave a Reply

Your email address will not be published. Required fields are marked *