본문 바로가기

Computer Science/OS

가상 메모리

가상 메모리의 이해 

실제보다 더큰 메모리를 사용할 수 있게 합니다.

 

중첩 - 메모리 영역을 이런 용도, 저런 용도로 사용할 때 

프로그래머가 개입해서 할당해야 하는대 운영체제가 자동으로 해결해주는 것입니다.

 

실제 메모리 내용이 하드디스크에 메모리 내용일부가 들어가 있다는 뜻입니다.

 

잘 사용하지 않은 데이터는 하드에 있게 됩니다.

 

프로세스는 프로그램 일부만 실행합니다.

 

디스크 -> 메모리 : 스왑 인

메모리 -> 디스크 : 스왑 아웃

 

눈이 프로세스 입장에서 보는 메모리 입니다.

크게 보고 있습니다.

 

주황색으로 된 것만 실제 메모리에 들어 있습니다.

 

프로세스의 일부만 물리적 메모리에 적재해도 실행 가능 예

오류, 예외는 자주 실행되지 않습니다. => 메인메모리에 적재할 필요가 없습니다.

사용자가 사용할 때만 기능이 메모리에 올라와 있으면 됩니다.

 

가상 메모리의 이해 - 가상 메모리 장점

가상 메모리의 이해 - 가상 메모리 문제점

프로세스가 필요하는 메모리가 메인메모리에 있어야 하는데 실제로는 디스크에서 가저와야 하는 경우가 있습니다.

시스템 속도가 저하됩니다.

 

1. O

2. O

3. O

4. X (중첩에 대한 설명입니다.)

5. X(다중 프로그래밍 정도를 향상시켜서 사용률과 처리율을 향상시키기는 합니다.)

6. X

7. X(일부만 적재하고 있습니다.)

 

가상 메모리의 이해 - 가상 주소와 물리적 주소의 매핑

가상 주소는 실제 주소가 아닙니다.

 

가상 주소와 실제주소를 이어주는 변환 함수(매핑)가 필요합니다.

 

가상 주소는 실제 메인 메모리에서 불연속적일 수 있습니다.

 

매핑속도가 중요합니다. 

메핑 속도를 증가시키는 매니지먼트 유닛을 설정할 수 있습니다.

 

가상 메모리의 이해 - 가상 메모리의 구현 방법 두가지

페이징을 주로 설명할 것입니다.

 

가상기억장치 4GB

물리적기억장치 1GB

 

가상,물리적 기억장치 둘다 페이지 단위로 나눠서 있습니다.

 

4GB를 1MB로 나누면 패이지 수가 나옵니다.

(2^32B)  (2^20B)

1. 2^12

 

2. 1GB(2^30B)를 1MB(2^20B)로 나누면 프레임 수가 나옵니다.

2^10

 

3. 오프셋페이지 내에서의 위치를 알려줍니다.

즉 페이지의 크기만큼 비트가 있어야 합니다.

페이지크기 = 2^20이니

2^20을 표현하려면 20비트가 있어야 합니다.

 

4. 페이지 번호는 논리적 주소에 나타납니다.

논리적 기억장치페이지는 2^12개 있습니다.

12비트가 필요합니다.

 

5. 프레임 갯수는 2^10개이니 

구분하려면 10비트가 필요합니다.

 

요구 페이징 - 요구 페이징의 개념 

맨 왼쪽이 논리적 메모리 입니다.

 

맨 오른쪽 하드디스크에 ABCDEFGH가 다들어 있습니다.

 

물리적 메모리에는 모두다 들어있지는 않습니다.

 

페이지 테이블에는 0,2,5가 들어 있습니다.

 

A,C,F는 실행주는 프로세스가 조금전에 쓴 것입니다.

 

메모리를 엑세스 할 때 모든 프로세스 부분을 엑세스 하는 것이 아니라 일부분을 집중적으로 엑세스 합니다.

그것을 물리 메모리에 올려놔도 잘 실행이 됩니다.

 

 

지연 스와퍼 = Pager라고 합니다.

 

페이지를 들락날락하게 하는 스와퍼 입니다.

 

 

backing store = 하드디스크 같은 것

 

프로세스 스와핑을 보여주는 그림입니다.

 

요구 페이징 - 요구 페이징의 장점, 단점

 

 

메모리에 있다면 빨리 가져올 수 있지만 디스크에 있다면 오래 걸립니다.

 

하드웨어 지원은 비트를 가지는 페이지 테이블,

페이지부재가 있다면 명령어 중단하고 페이지 부재를 해결한 다음 실행하는 것입니다.

 

메인 메모리에 올릴 때 꼭 필요한 것만 올립니다.

 

그림을 봐봅시다.

페이지 A,B,C프로세스 1과 2가 공유를 하고 있습니다.

 

프로세스1이 페이지C에다가 쓰려고 하면 

페이지C의 복사본은 만들어서 거기다가 수정을 합니다.

그러면 공유본은 건들지 않습니다.

 

꼭 필요할 때만 카피본을 만든다는 의미입니다.

 

5번 입니다.

 

더 어려워 집니다.

 

 

 

요구 페이징 - 페이지 부재

프로세스가 load M을 수행합니다.

 

M을 찾으러 페이지 테이블에 갑니다.

 

유효비트가 0이 되어있습니다.(=메모리에 없습니다.)

 

이 때 페이지 부재 발생!

 

운영체제가 처리 해줘야 합니다.

 

운영체제는 하드웨어에서 페이지를 찾아서

 

메인 메모리에 넣습니다.(빈공간에)

 

그 다음 프레임 번호를 페이지 테이블에 적어두고 유효비트를 1로 만듭니다.

그리고 다시 명령어를 수행합니다.

 

빈 프레임 리스트를 가지고 있어야 합니다.

부재가 일어나면 할당을 해야 합니다.

요구시 0으로 채웁니다.

 

요구 페이징 - 페이지 성능

부재가 많으면 성능이 떨어 집니다.

 

부재를 낮춰야 합니다.

페이지 부재 처리 시간보다 메모리 엑세스 시간이 크다면 p가 커질 수록 유효 엑세스 시간은 줄어야 합니다.

 

유효 엑세스 시간을 메모리 엑세스 시간의 110% 이내로 하려면 페이지 부재 비율을 얼마로? 

페이지부재 비율이 0.0000025보다 작으면 된다.

 

 

요구 페이징 - 페이지 교체

빈 페이지가 없다면 메인 메모리에 있는 페이지를 새로운 페이지로 바꿔야 합니다.

 

실제 메모리와 프로세스 1,2의 페이지 테이블 입니다.

 

프로세스1의 페이지 테이블은 A,C,D는 메인 메모리에 있다 B는 없습니다.

프로세스2의 페이지 테이블은 E,F,H는 메인 메모리에 있지만 G는 없습니다.

 

PC가 A부터 실행하다가 B라는 페이지를 엑세스 하려할 때 페이지 테이블에 없습니다.

하드 디스크에서 가져오려 하는대 메인 메모리가 이미 꽉차 있었습니다.

그럴 때 페이지 교체를 해야하니 누군가를 내 쫒아야 합니다.

 

페이지를 내쫒을 희생자가 필요합니다.

 

1. 실제 메모리에 있는 것을 선택하고 내쫒습니다.

2. 내쫒았으니 페이지 테이블에 반영합니다.(invalid로)

3. 메인 메모리에 넣습니다.

4. 페이지 항목에 들어온 것을 (valid)

 

2번 입니다.

빈자리(빈 프레임)가 없을 때만 일어나빈다.

 

4번은 프로세스가 필요하는 프레임 수를 할당했다는 이야기 입니다.

프레임 수가 충분하면 부재 확률은 0입니다.

 

728x90