카테고리 없음

운영체제 13주차

NONE_31D 2019. 11. 29. 10:08

가상메모리 관리 

 

용량의 한계를 여유있게 쓰기 위해 가상메모리를 사용. 설명을 하셨죠 하드......의 일부를 잘라서 주기억장치 처럼 쓰는데 아무튼 주기억장치는 아님

 

모든 시스템은 가상메모리를 사용하는데 현재 있는 메모리가 용량이 매번 부족하기 때문이죠. OS에서 가상메모리 할당 공간을 늘릴 수 있음. 언제든 늘려서 쓸 수 있음. 

 

가상 메모리 : 물리 메모리의 크기와 상관없이 프로세스에 커다란 메모리 공간을 제공하는 기술. 

가상 메모리를 이용하면 프로세스는 운영체제가 어디에 있는지 물리 메모리의 크기가 어느 정도인지 신경 쓰지 않고 메모리를 마움대로 사용할 수 있다.

 

가상 메모리의 구성 

- 크게 프로세스가 바라보는 메모리 영역과 메모리 관리자가 바라보는 메모리 영역으로 나뉨

- 가상 메모리에서 메모리 관리자는 물리 메모리의 부족한 영역을 스왑 영역으로 보충. 

* 스왑은 고정분할(페이징 기법)에서 많이 사용됨. 메모리를 일정한 공간으로 배치, 프로세스보다 메모리가 작을 경우 일정 부분잘라서 올리는데 메모리에 올라가지 않은 프로세스는 스왑 구역에 있다가 필요할때 불러와져서 사용함. 

 

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

 

동적 주소 변환 

- 가상 주소를 실제 메모리의 물리 주소로 변환

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

 

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

- 가변 분할 방식을 이용한 세그먼테이션과 고정 분 방식을 이용한 페이징 기법 존재

- 기본적으로 페이징 기법을 사용하나 페이지 테이블 관리가 어려움

- 세그먼테이션 기법은 외부 단편화 등의 문제가 있음 *해결 방안 (조각모음) 존재

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

 

매핑 테이블의 필요성(p382)

- 메모리를 관리할 때도 매핑 테이블을 작성하여 관리함. 

- 가상 메모리에 있는 주소 관리시 사용

- 어느 주소값에 어느 메모리가 들어와서 어느 프로세스가 얼마만큼 사용하는지

=> 보통 메모리에 있다고 봄. 

 

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

 

페이징 기법

- 고정 분할 방식을 이용한 가상 메모리 관리 기법

- 물리 주소 공간을 같은 크기로 나누어  사용

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

- 페이지와 프레임(p385)

* 가상 주소의 분할된 각 영역을 페이지라고 하며 번호를 매겨 관리

* 물리 메모리의 각 영역은 가상 주소의 페이지와 구분하기 위해 프레임이라고 함 (프레임도 페이지처럼 번호를 매겨 관리)

*페이지와 프레임의 크기는 같이 때문에 페이지는 어떤 프레임에도 배치하여 사용할 수 있음

* 어떤 페이지가 어떤 프레임에 있는지에 대한 매핑 정보는 페이지 테이블에 담겨있음

* 페이지 테이블에서 invalid는 페이지가 스왑 영역에 있다는 의미

* 가상 공간은 물리 메모리보다 클 수 있음. 데이터는 더이상 

 

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

1.  가상 주소 30번지가 어느 페이지에 있는지 찾음. (페이지3의 0번째 위치에 존재 VA = <3,0>)

2. 페이지  테이블의 페이지 3으로 가서 해당 페이지가 프레임 1에 있는 것을 찾아냄

3. 최종적으로 물리 메모리 프레임 1의 0번째 위치에 접근 (이 주소가 가상주소 30번지의 물리 주소임)

 

정형화된 주소 변환

페이징 기법에서는 가상 주소를 VA = <P, D> 로 표현

- VA : 가상 주소

 

 

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

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

- 페이지 테이블을 사용하여 P는 F로 변경, D는 변경 없이 그대로 씀

* D가 유지되는 이유 : 프레임의 크기를 똑같이 나누었기 때문

 

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

 - P = 가상주소 / 한 페이지 크기 의 몫

- D =  가상주소 / 한 페이지 크기 의 나머지

 

16비트 CPU 컴퓨터에서 한 페이지의 크기가 2^10B일 때 페이징 시스템

한 프로세스가 사용할 수 있는 가상 메모리의 크기는 2^16

사용자는 0번지부터 2^16-1까지 가상 주소 공간 사용 가능

가상 주소로 사용할 수 있는 16비트 중 6비트는 페이지 번호, 10비트는 페이지의 첫 위치에서 해당 주소까지의 거리

 전체 페이지 수는 2^6, 64개고 0번부터 63까지 페이지 존재

물리 주소도 가상 주소와 같이 1024B로 나뉨. 프레임은 0부터 31까지 있다고 가정

페이지 테이블은 페이지 페이블 엔트리 (0~63)으로 64개. 페이지 테이블의 크기는 물리 주소가 아닌 프로세스의 크기에 비례.

 

프로세스가 980번지에 저장된 데이터를 요청 했을 때 동적 주소 변환

- 가상 주소 980의 P와 거리 D를 구함

P = 0, D = 980 , V=<0, 980>

- 페이지 테이블로 가서 페이지 0이 페이지 2에 저장되어 있다는 것을 확인

-  물리 메모리의 프레임 2 시작 지점으로부터 980번지 떨어진 곳에 접근하여 데이터를 가져옴

 

 

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

- 프로세스마다 페이지 테이블이 존재함

- 프로세스의 수가 많아지면 페이지 테이블의 크기가 커지고, 이에 따라 프로세스가 실제로 사용할 수 있는 메모리 영역이 줄어듦

- 패이지 체테이블 크기를 적정히 유지하는 것은 페이지 테이블 관리 의 핵심

 

물리 메모리 내 페이지 테이블 구조(p396 맨 아래)

- 각 페이지 테이블의 시작 주소는 페이지 테이블 기준 레지스터에 보관

 

페이지 테이블 매핑 방식

직접 매핑

연관 매핑

집합 연관 매핑

- 연관 매핑에서는 물리 메모리에 있는 데이터가 무작위로

역매핑은 잘 사용을 안함

 

직접 매핑 방식의 구조

- 페이지 테이블 전체가 물리 메모리에 저장되기 때문에 가상주소 <P, D>를 물리 주소 <F, D>로 변환하려면 페이지 테이블의 P번째 위치에서 원하는 프레임 값을 얻을 수 있음

- 페이지 테이블의 시작 주소는 테이블 기준 레지스터가 갖고 있으므로 물리 메모리 상 페이지 테이블의 p번쨰 주소가 시작 주소로부터 P번쨰 위치에 존재

 

연관 매핑 방식의 구조

ㅋㅋ

 

역매핑방식의 구조