16. 가상 메모리(Virtual Memory)

썹스·2022년 8월 23일
0

운영체제

목록 보기
16/20

1. 가상 메모리(Virtual Memory)

가상 메모리(Virtual Memory)란 메모리를 관리하는 방법으로 물리 메모리 크기의 한계를 극복하기 위해 나온 기술이다. 즉, 물리 메모리보다 큰 프로세스를 수행하기 위해 나온 기술이다.

이러한 방식이 가능한 이유는 프로세스를 실행할 때, 실행에 필요한 부분만 메모리에 적재하는 "동적 적재" 방식을 사용하기 때문에 가능하다.

필요한 부분만을 메모리에 적재하기 위해서는 프로세스를 페이지 단위 또는 세그멘트 단위로 작게 나누어 사용해야 한다. (세그멘트 방식은 빈 공간(hole)이 자주 발생하기 때문에 대부분 페이지 단위로 나누어 사용하고 있다)

프로세스를 페이지 단위로 나눈 뒤 요청이 들어오는 페이지만 메모리에 적재하는 것을 요구 페이징(Demand Paging)이라고 한다.

2. 요구 페이징(Demand Paging)

요구 페이징(Demand Paging)은 CPU가 특정 페이지를 요구할 때까지 해당 페이지를 메모리에 올리지 않고, 요청이 올 때 메모리에 올리는 방식을 말한다.


위 그림은 A 프로세스(560MB)를 페이지 단위로 나누어 메모리(350MB)에 적재하는 그림이다.

가상 메모리에서의 페이징 기법은 table에 valid bit가 추가되어 사용된다. valid bit는 현재 프레임에 페이지가 적재되어 있는지를 알려준다. 프레임에 적재되어 있으면 "1", 없으면 "0" 값을 갖는다.

3. 페이지 부재/결함(Page Fault)

페이지 부재(Page Fault)CPU가 접근하려는 페이지가 메모리에 없는 경우를 말한다. (즉, CPU가 메모리의 빈 공간을 접근하려는 하려는 것을 말한다)페이지의 부재를 처리하는 과정은 아래와 같다.

  1. CPU가 특정 페이지에 접근할 때 해당 페이지가 메모리에 있는지 valid bit 값을 확인한다.

  2. valid bit 값이 "0"이면 MMU가 CPU에게 인터럽트 신호를 보내고, CPU는 해당 신호를 운영체제에게 보낸다. (이때 프로세스는 잠시 대기)

  3. 신호를 받은 운영체제는 프로세스(페이지의 집합체)가 저장된 H/W에 가서 해당 페이지를 찾는다.

  4. 해당 페이지를 찾으면 메모리에 비어있는 프레임에 할당한다.

  5. 비어있는 프레임이 적재되었으니 페이지 테이블의 valid bit 값을 갱신한다.

  6. 대기 중이었던 프로세스를 다시 실행한다.



Reference

경성대학교 양희재 교수님의 운영체제

profile
응애 나 코린이(비트코인X 코딩O)

0개의 댓글