본문 바로가기

University Classes/Operating System

가상메모리란? (virtual memory)

지금까지의 메모리 관리 기법 방식은 

프로세스 전체가 실행되기 전에 메모리로 올라와야 한다는 것을 전제로 하고 있다. 

프로세스 전체가 메모리 내에 올라오지 않더라도 실행이 가능하도록 하는 기법가상메모리라 한다.

가상 메모리는 물리 메모리로부터 사용자 관점의 논리 메모리를 분리시켜 주 메모리를 균일한 크기의 저장 공간으로 구성된 엄청나게 큰 배열로 추상화 시켜 준다. 

따라서 작은 메모리를 가지고도 큰 가상 주소 공간을 제공한다.


⊙ 장 점 

 - 사용자 프로그램이 물리 메모리보다 커져도 된다는 점이다. 
   즉, 메모리 크기의 제약으로부터 자유로워진다.

 - 각 사용자 프로그램이 더 작은 메모리를 차지하므로 더 많은 프로그램을 동시에 수행할 수 있다. 
   이에 따라 응답시간은 늘어나지 않으면서 CPU 이용률과 처리율이 높아진다.

 - 프로그램을 메모리에 올리고 스왑(swap)하는데 필요한 입/출력 횟수가 줄어든다.
   따라서 
프로그램들이 보다 빨리 실행된다.

 - 가상메모리 파일의 공유를 쉽게 해주고 공유 메모리 구현을 가능하게 한다.

 - 프로세스 생성을 효율적으로 처리할 수 있는 메커니즘도 제공한다.


 단 점

 - 구현이 어렵고, 잘못 사용 시 성능이 현저히 저하 될 수 있다.

 

 


요구 페이징 (Demand Paging)

 - 실행 프로그램을 디스크에서 메모리로 적재할 때 프로그램 전부를 물리메모리에 적재한다고 하면,
   프로그램 전체를 메모리에 둘 필요가 있을까?? 
   가상 메모리 시스템에서 많이 사용하는 요구 페이징 기법을 알아보자 
   요구 페이징이란 초기에 필요한 것들만 적재하고, 페이지들이 실행 과정에서 실제로 필요할 때 적재하는 기법이다. 
   즉, 한번도 접근되지 않는 페이지는 물리 메모리에 전혀 적재되지 않는다.


ㅇ 장 점

- 실제 필요한 페이지들만 메모리로 읽어오므로 사용되지 않는 페이지를 메모리로 가져오지 않음으로써
  시간 낭비와 메모리 공간 낭비를 줄일 수 있다.

- 프로세스가 메모리에 존재하는 페이지들만 접근하는 한 실행은 정상적으로 진행된다. 

  하지만 프로세스가 메모리에 올라와 있지 않는 페이지를 접근하려고 하면 어떤 일이 발생할까?
   -> 페이지 테이블 항목이 무효로 설정되어 있으므로 페이지 부재 트랩(page-fault trap)을 발생시킨다.


ㅇ  페이지 부재를 처리하는 과정

                  


1. 프로세스에 대한 내부 테이블을 검사해서 그 메모리 참조가 유효(valid)/무효(invalid) 인지를 알아낸다.

2. 만약 무효한 페이지에 대한 참조라면 그 프로세스는 중단된다.
    만약 유효한 참조인데 페이지가 아직 메모리에 올라오지 않았다면, 그것을 디스크로부터 가져와야 한다.

3. 빈 공간 즉, 자유 프레임을 찾는다. (예를 들면, 페이지 프레임 리스트에서 하나 가져옴)

4. 디스크에 새로이 할당된 프레임으로 해당 페이지를 읽어 들이도록 요청한다.

5. 디스크 읽기가 끝나면, 이 페이지가 이제는 메모리에 있다는 것을 알리기 위해 페이지 테이블을 갱신하며,
   프로세스가 유지하고 있는 내부 테이블을 수정한다.

6. 트랩에 의해 중단되었던 명령을 다시 수행한다.
    이제 프로세스는 마치 그 페이지가 항상  메모리에 있었던 것처럼 해당 페이지를 접근할 수 있다.





'University Classes > Operating System ' 카테고리의 다른 글

페이지 교체  (0) 2013.02.17
페이지 교체 알고리즘  (0) 2012.06.14
쓰레싱 (Thrashing) 이란?  (0) 2012.06.14
캐쉬(cache)  (0) 2012.06.12
캐시 교체 알고리즘, 캐시 쓰기 정책  (0) 2012.06.11