메모리 액세스 과정


Slide07

  • 프로그램을 실행 할 때, 반드시 모두 물리 메모리에 있어야 할 필요는 없으므로, 일부분만 물리 메모리에 올려 놓고 실행된다.

  • 따라서 프로그램은 더 이상 물리 메모리에 의해서 더 이상 제약 받지 않으며, 사용자들은 매우 큰 가상 공간을 가정하고 프로그램을 만들 수 있고, 프로그래밍 과정이 간단해진다.

  • 각 사용자 프로그램이 더 작은 메모리를 차지하므로 더 많은 프로그램을 동시에 수행할 수 있다.

  • 가상 메모리에서는 페이지들이 실행 과정에서 실제 필요할 때, 메모리에 적재되게 된다.

  • 위의 그림을 보면, CPU에서 메모리에 접근할 때, MMU를 통해서 페이지 테이블에 접근한다.

  • 페이지 테이블은 가상 주소와 물리 주소를 맵핑하고 있고, MMU를 통해서 접근하는 메모리가 테이지 테이블에 맵핑 되어 있지 않다면 페이지 폴트(page fault)를 발생 시킨다.

  • 페이지 폴트가 발생하고 나서 가상 메모리와 물리 메모리가 맵핑되고, 가상 메모리를 통해서 물리 메모리에 접근할 수 있게 된다.

페이지 교체


  • 기본적인 페이지 교체는 다음과 같다. 메모리에서 빈 프레임이 없다면 현재 사용되지 않는 프레임을 찾아서 그것을 비워버린다.

  • 그 프레임의 내용을 스왑 (swap) 공간에 쓰고 그 페이지가 메모리에 더 이상 존재하지 않는다는 것을 나타내기 위해서, 페이지 테이블을 비운다.

  • 어떤 페이지를 비울지에 대해서는 다음과 같은 알고리즘이 있다. (FIFO, LRU, LFU, MFU)

세그먼트 폴트와 페이지 폴트의 차이점


  • 세그먼트 폴트 : 세그먼트 폴트는 컴퓨터 소프트웨어의 실행중에 일어날 수 있는 오류로서, 프로그램이 허용되지 않은 메모리 영역에 접근을 시도하였을 때 발생합니다.

  • 페이지 폴트 : 페이지 폴트는 메모리에 적재된 페이지 중에 사용 페이지가 없을 때 발생한다. 페이지 폴트가 발생하고 나서, 페이지 테이블에 가상 주소와 물리 주소가 맵핑되고 나서는 발생하지 않는다.

PS 명령어를 사용하여 실제 사용하는 메모리와 가상 메모리 크기를 확인하는 방법


Screen Shot 2021-04-03 at 9 49 29 PM

  • ps 명령어를 통해서, RSS 항목을 보면 다음과 같이 설명하고 있다.
  • 상주하고 있는 메모리 사이즈이며, 스왑되지 않은 물리적 메모리라고 설명되어 있다.

Screen Shot 2021-04-03 at 9 52 07 PM

  • 반면에 VSZ는 프로세스의 가상 메모리 크기라고 설명되어 있다.
ps -eo pmem,rss,vsz,comm

위의 명령어를 실행하여, 프로세스 별 실제 사용하고 있는 물리 메모리와 가상 메모리를 확인할 수 있다.

Screen Shot 2021-04-03 at 9 54 48 PM

참고 문헌


>> Home