가상 메모리

이한수·2022년 3월 22일
0

OS

목록 보기
9/10
post-thumbnail

개인 공부 내용 정리 목적입니다.
참고 : 양희재 교수님(OS)

가상 메모리는 물리 메모리 크기의 한계를 극복하기 위해 나왔다.

어떻게?

프로세스 이미지를 모두 메모리에 올리는 것이 아니라 , 현재 실행 시점에 필요한 부분들만

메모리에 올려 사용한다.

예를 들어 오류처리 , 배열 , 워드 프로세스의 정렬 ,표 기능등 당장 사용되지 않는 것들은 메모리에 올리지 않는 것이다.

이렇게 하면 좋은점이 뭘까??

바로 실제 메모리에 올라갈 수 있는 프로그램보다 많은 프로그램들을 실행할 수 있다는 것이다.

방식들은?

요구 페이징

이때 부분 부분만 올리기 위해서는 프로세스를 나눠야 하는데 , 페이지 단위를 주로 사용한다.

이렇게 요구되는 페이지만 올리는 것을 Demanding Paging 이라고 한다.

그럼 한가지 의문이 생긴다.

나누어진 페이지들은 메모리 전체에 퍼져있을것이고 , 그 과정에서 페이지 테이블이 연속메모리가 할당된 것처럼 CPU를 속인다고 하였다.

그럼 그 나누어진 페이지들이 페이지 테이블에서 매핑 되어 있을 텐데 , 어떤것은 올라와 있고 안올라와 있음을 어떻게 판별할까??

valid bit라는 것을 테이블에 두어 판단한다고 한다.

이 bit의값이 1이면 메모리에 있다는 것이고 , 0이라면 없다는 의미를 갖는다고 한다.

Page Fault(페이지 부재)

그럼 0일 경우 없는 페이지를 어떻게 가져올까?

이를 페이지 부재라고 하는데 그 과정을 설명하자면 아래와 같다.

  1. valid bit를 통해 메모리에 있는지 여부를 확인.
  2. 0일 경우 인터럽트 발생.
  3. backing store를 탐색하여 해당 프로세스 페이지를 찾아 온다.
  4. 비어있는 메모리(프레임)에 할당하고 , valid bit를 1로 변환한다.
  5. 작업을 다시 수행한다.

처음에 페이지를 들고 오는 방식은?

1)Pure Demand Paging

→ 처음에 아무런 작업이 요구되지 않는다면 아무것도 가져 오지 않는다.

즉 , 당장 필요할 때만 가져온다고 생각하면 된다.

메모리가 많이 절약 되지만 , 필요할 때 마다 거쳐야 하는 과정이 많아 시간이 좀 걸린다.

2)Prepaging

→ 당장은 필요하지 않더라고 필요할 거라 생각되는 페이지를 메모리에 올린다.

**Pure Demand Paging** 에 비해 페이지 부재가 발생할 확률은 낮으며 속도가 빨라질 수 있으나, 메모리 절약은 상대적으로 덜 된다.

3)Swapping

→ Demanding Paging 처럼 backing store와 메모리를 왔다 갔다 하는 점은 같으나 Swapping는 프로세스 단위이다.

페이지 교체

앞에서는 메모리가 남아있는 경우로만 생각하고 설명하였지만 , 계속 수행하다 보면 페이지 단위로 필요한 것만 불러들여도 메모리가 가득차는 순간이 있을 것이다.

이때 메모리에 올라와 있는 페이지 중 어느 것을 내리고 올리는 작업을 하는데 이를 페이지 교체라고 한다.

이때 backing store로 내려가는 페이지를 victim page라고 한다.

그럼 어느 페이지를 몰아내야 할까?

먼저 cpu에 의해 실행되면서 변경된 것이 있는 것은 제외하는 것이 좋다.

변경된 작업을 backing store에 반영해줘야 하는 과정이 필요하기 때문이다.

참고 : valid bit처럼 동일한 원리로 변경 여부를 확인할 수 있는 modify bit를 추가하여 검사를 한다.

변경되지 않은 것중에서는 여러 방식이 있는데 ,

1.Random → 이름처럼 무작위로 선별한다. 단 성능을 보장하지 않는다.

2.FIFO → 메모리에 제일 먼저 올라온 것을 택한다.

  1. OPT → 가장 오랫동안 사용되지 않을 페이지를 선택한다.

               단, 미래를 예측해야 하므로 비현실적이다. 
  2. LRU(Least-Recently-Used) → 최근에 사용되지 않은 것을 나중에도 사용되지 않을 것이라 판단하여 선택한다.

  • 현재 대부분의 환경에서는 LRU를 사용한다고 한다.

그외에도 여러가지 방법들이 있다.

profile
성실하게

0개의 댓글