ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 가상 메모리란 무엇인가
    CS지식/운영체제 2021. 6. 18. 22:10

    우리가 사용하는 컴퓨터에 물리 메모리가 존재하는데 모든 컴퓨터의 물리 메모리의 크키는 다를 수 있다.

    그러면 2GB의 물리 메모리 공간을 요구하는 프로그램은 1GB 크기의 물리 메모리를 가진 컴퓨터에서는 동작하지 않을까?

    만약 운영체제가 물리 메모리의 크기에만 의존한다면 1GB 크기의 물리 메모리를 가진 컴퓨터에서 프로그램이 동작하지 않을 것이다.

    이러한 부분을 해결할 수 있는 기술이 가상 메모리이다.

    가상 메모리는 크기가 다른 물리 메모리에서 일관되게 프로세스를 실행할 수 있는 기술이다.

    즉, 컴퓨터의 물리 메모리의 크기와 상관없이 프로세스에 커다란 메모리 공간을 제공하는 기술로

    프로세스는 운영체제가 어는 공간에 위치해있는지, 물리 메모리의 크기는 어떠한지 신경 쓰지 않고 메모리를 사용할 수 있다.

     

     

    어떻게 이런 것이 가능할까?

    상식적으로 물리 메모리의 크기는 한정적일텐데 그것보다 큰 메모리 공간을 요구하는 프로세스를 실행시키는 것이 가능할까?

    지금부터 가상 메모리에 더 자세히 알아보며 궁금증을 해결해보자.

    가상 메모리 시스템에서 프로세스는 물리 메모리와 별개로 0번지부터 시작하는 연속된 메모리 공간을 가진다.

    이 메모리 공간은 실제 물리 메모리에서 프로세스가 위치한 메모리 공간이 아닌 가상의 주소 공간을 의미한다.

     

    가상 메모리의 구성을 그림으로 살펴보자.

    가상 메모리는 프로세스가 바라보는 메모리 영역과 메모리 관리자가 바라보는 메모리 영역으로 나뉜다.

    프로세스가 바라보는 메모리 영역은 실제로 프로세스가 올라가 있는 메모리가 아니라 프로세스만의 0번지부터 시작하는 메모리 영역을 말한다. 실제 데이터는 물리 메모리, 기타 저장장치에 있다.

     

    그러면 물리 메모리의 크기보다 큰 프로세스를 실행시키거나 다수의 프로세스를 동시에 실행시키 위해서 필요한 용량보다 물리 메모리의 크키가 작다면 가상 메모리에서는 어떻게 실현할까?

    가상 메모리 시스템에서는 물리 메모리의 데이터 중 일부를 기타 저장장치(하드디스크)의 일부 공간(스왑 영역)으로 옮기게 된다.

    즉, 물리 메모리가 꽉 찼을 때 일부 프로세스를 스왑 영역으로 보내고 물리 메모리에 공간이 남으면 스왑 영역에 있는 프로세스를 메모리로 불러온다.

    (실제 메커니즘은 페이징 기법이나 세그멘테이션 기법을 배우면 확인할 수 있다.)

     

     

    이렇게 프로세스가 바라보는 주소 공간과 실제 메모리의 주소 공간이 따로 있어 프로세스가 사용하는 가상 주소를 실제 메모리의 물리 주소로 변환하기 위해 동적 주소 변환(DAT)를 진행한다.

    동적 주소 변환을 거치면 프로세스는 물리 메모리에 배치될 수 있다.

    이렇게 동적 주소 변환을 동해 프로세스를 물리 메모리에 배치하기 위해서는 여러 문제를 처리해야하는데 물리 메모리 공간을 나누는 방법이나 어떻게 매핑을 해야하는지 등 여러 개가 존재한다.

     

    문제를 처리하기 위한 방법으로 페이징 기법, 세그맨테이션 기법, 세그맨테이션-페이징 혼용 기법이 있는데 다음 포스팅에서 알아보자.

    댓글

Designed by Tistory.