가상메모리를 사용하는 이유
우리가 1G 메모리를 사용한다 가정해보자. 이때 위사진에서 프로그램 B를 실행하는데 2G의 메모리가 필요하다고 한다면, 내컴퓨터에서 프로그램 B는 실행조차 할수없다.
이러한 상황을 해결하기위해 Virtual Memory의 개념을 사용해본다면, 프로그램 B를 시작할때 프로그램 B1만 구동하면 실행이 가능하다 라고할때 프로그램 B자체는 virtual Memory 공간에 두고 우리가 실행할때 필요한 B1만을 메인메모리로 가져와 프로그램을 실행하는것이다.
즉 실제 프로그램이 필요로하는 메모리 용량이 크다 하더라도 우리가 필요한부분만을 실제 메인메모리에 가져와 실행을 시켜 메모리를 효율적으로 사용한다는 것이다.
페이징 기법이란 프로그램을 일정 크기로 나누어 페이지를 만들고 페이지 단위별로 메인메오리에 올려 동작하는 방식이다.
페이징 기법을 통해 Virtual Memory동작이 가능하도록 한다.
프로그램은 페이지 단위로 나눠 관리한다.
위 사진을 예로들면 프로그램 A는 사진과같이 총 16개의 페이지로 구분이 되어있는것이다.
페이지 테이블이란 프로그램 A를 구성하는 페이지가 메인메모리의 어디서부터 저장이 될것이냐 를 알려주는 테이블이라고 보면된다.
즉 위사진에서 페이지 0번은 페이지 테이블에 의하여 메모리의 1000번 주소부터 저장이 되는것이고 페이지 2번은 페이지 테이블에 의하여 메모리 2000번부터 저장이 되는것이다.
여기서 굳이굳이 페이지 테이블을 사용하는 이유는 메인메모리에 저장되는 페이지들은 물리적으론 떨어져 있더라도 논리적으론 붙어있어야한다. 이말이 무슨말이냐면 만약 메인메모리에 프레임 0, 프레임 1, 프레임 2 가 위 사진에선 붙어있지만 만약 떨어져있더라도(물리적으로) 페이지 테이블에 각 페이지가 메인메모리에 저장되는 시작주소가 적혀있기때문에 논리적으론 페이지들이 이어져 있다고 생각할수 있는것이다.
32bit 컴퓨터를 사용한다면 메인메모리는 4G까지만 사용할수 있다.
이 이유는 32bit 컴퓨터는 메모리 주소를 총 2^32개만 나타낼수있다. 2^32 = 4 x 2^30 (2^30 = GB)이다. 따라서 나타낼수 있는 메모리의 주소가 총 4 x 2^30개이기때문에 32bit 컴퓨터는 최대 4G의 메모리를 사용할수 있는것이다.
32bit 컴퓨터의 address bus는 32가닥이기 때문에 우리가 2^32bit만큼의 메모리를 사용할수있는것이다.
근데만약 내 컴퓨터의 메인 메모리는 4G지만 addressbus를 64가닥을 사용한다면 즉 주소는 2^64개를 사용한다면 물리적인 메모리 4G를 제외한 나머지 공간을 하드디스크에 지정한다. 이것이 Virtual Memory의 개념이다.