10-3-나.메모리 관리 원칙

메모리의 실체는 시스템에 장착되어 있는 RAM이다. 시스템에 따라 RAM 장착양은 다른데 돈이 많은 사람은 자신의 컴퓨터를 위해 많은 RAM을 장착할 것이고 가난한 사람들은 그렇지 못할 것이다. 시스템에 물리적인 RAM이 많이 설치되어 있으면 컴퓨터가 빨라지고 할 수 있는 일이 많아지는 반면 RAM이 작으면 시스템은 느려지고 성능은 떨어진다. RAM은 프로그램이 작업을 하는 작업 공간인데 이 공간이 좁으면 제 성능을 발휘하기 어렵다.

복수 개의 프로그램이 꼭 필요한큼의 메모리를 충돌없이 사이좋게 잘 사용하려면 정교한 메모리 관리 원칙이 필요하다. 메모리 관리는 응용 프로그램이 할 수 없으며 운영체제가 직접 하는데 하드웨어 관리, 스케줄링 등과 함께 운영체제의 주요 임무 중 하나이다. 다음은 운영체제가 메모리를 관리하는 일반적인 원칙들이다.

 

메모리 관리의 주체는 운영체제이다. 응용 프로그램은 직접 메모리를 관리할 수 없으며 메모리가 필요할 경우 운영체제에게 할당 요청을 해야 한다. 16비트 운영체제에서는 응용 프로그램이 임의의 주소 공간을 액세스할 수 있었지만 32비트의 보호된 운영체제들은 안전성을 높이기 위해 응용 프로그램이 임의의 메모리를 액세스하는 것을 금지하고 있다. 반드시 운영체제를 통해서만 메모리를 할당받을 수 있다.

운영체제는 메모리가 있는 한은 할당 요청을 거절하지 않는다. 메모리라는 것은 결국 작업을 위해 존재하는 것이므로 응용 프로그램 (=이 프로그램을 쓰는 사용자)이 달라고 하는만큼 내 주도록 되어 있다. 만약 요청한 양만큼 메모리가 남아 있지 않을 경우는 에러를 리턴하여 응용 프로그램에게 메모리가 없다는 것을 알려준다. 최근의 운영체제들은 요청한 만큼 메모리가 남아 있지 않을 경우 가상 메모리 공간을 늘려서라도 필요한 메모리를 만들어 줄 정도로 친절하다.

한 번 할당된 메모리 공간은 절대로 다른 목적을 위해 재할당되지 않는다. 운영체제는 메모리 공간을 누가 얼마만큼 사용하고 있는지 모두 기억하고 있으며 반납하기 전에는 응용 프로그램이 이 공간을 독점적으로 사용할 수 있도록 보장한다. 그래서 한 번 할당한 메모리는 일부러 해제하지 않는 한은 언제까지든 안심하고 사용할 수 있다.

응용 프로그램이 할당된 메모리를 해제하면 운영체제는 이 공간을 빈 영역으로 인식하고 다른 목적을 위해 사용할 수 있도록 한다. 즉, 특정 메모리 공간을 동시에 두 프로그램이 사용할 수는 없지만 순서대로 번갈아 가면서 사용하는 것은 가능하다. 메모리 공간이 무한하지 않기 때문에 응용 프로그램들은 자신이 꼭 필요한만큼만 할당해서 사용하고 다 쓴 후에는 반드시 반납해서 다른 목적에 사용될 수 있도록 해야 한다.

 

32비트 운영체제 환경에서의 메모리 관리 원칙은 한마디로 "중앙 집중적인 신고제"라고 할 수 있다. 개별 응용 프로그램은 메모리를 관리하지 않고 오로지 운영체제만이 메모리를 관리한다. 그래서 일관된 관리가 가능하고 응용 프로그램끼리 서로의 영역을 침범할 위험이 없다. 또한 허가제가 아닌 신고제이기 때문에 응용 프로그램은 필요한만큼의 메모리를 요청만 하면 언제든지 할당받을 수 있다. 다만 다른 프로그램과의 조화로운 실행을 위해서 다 쓴 메모리를 즉시 반납해야 한다.