본문 바로가기
컴퓨터&네트워크

메모리 관리

by 파란하랑 2024. 9. 9.

메인-메모리

메인 메모리

메인 메모리는 매우 조심스럽게 관리되어야 할 중요한 자원이다. 요즘 사용자들이 집에서 사용하는 일반 컴퓨터는 1960년대 초에 가장 큰 컴퓨터였던 IBM 7094보다 10,000배나 많은 메모리를 탑재하곤 한다. 그러나 프로그램은 더욱 크고 빠른 메모리를 필요로 한다. '일을 끝내기 위하여 시간이 늘어난 만큼, 일 자체도 늘어난다'라는 파킨슨 법칙으로 비유해 보면, '프로그램은 가용한 메모리가 생기는 만큼 크기가 증가'하는 것이다.

 

모든 프로그래머가 원하는 것은 무한히 크고, 빠르며, 스스로 혼자 사용할 수 있는 메모리다. 더불어 비휘발성 메모리를 원한다. 이 비휘발성이란 전원이 공급되지 않은 상태에서도 그 내용이 유지되는 메모리를 말한다. 또 한가지 중요한 것은 가격이 비싸지 않아야 한다는 점이다. 다만, 불행히도 현재 기술로는 위의 모든 요구 조건을 만족시킬 수 있는 메모리를 만들어 낼 수는 없다.

 

수년 동안 많은 사람들은 메모리 계층 구조라는 효과적인 방법을 발견했다. 메모리 계층 구조란 캐시 메모리, 메인 메모리, 디스크 스토리지 등의 서로 다른 특성을 갖는 메모리들을 층 구조로 구성하는 것을 말한다. 캐시 메모리는 보통 메가 바이트 크기를 가지며, 빠르고 휘발성이며 비싸기도 하다. 메인 메모리는 기가 바이트 크기를 가지며, 중간 속도이고 휘발서이며 중간 정도의 가격을 갖는다. 끝으로, 디스크 스토리지는 테라바이트 크기를 가지며, 느리고 비휘발성이며 가격이 싼 편이다. 이런 계층 구조를 사용하기 좋은 모델로 추상화하고 이 추상화된 객체를 관리하는 것이 운영체제의 역할이라고 볼 수 있다.

 

운영체제 중에서 메모리 계층 구조 관리를 담당하는 부분을 메모리 관리자라고 한다. 메모리 관리자는 현재 사용 중인 메모리 부분을 파악하고 프로세스들이 메모리를 필요로 하면 할당해 주고, 더 이상 사용하지 않으면 해제하는 작업을 실행한다고 보면 된다.

 

메모리 추상화의 가장 단순한 형태는 추상화를 사용하지 않는 것이라고 보면 된다. 초기 메인프레임 컴퓨터, 혹은 초기 미니 컴퓨터 그리고 초기 개인용 컴퓨터의 경우, 메모리 추상화를 사용하지 않았다. 즉, 모든 프로그램은 물리 메모리를 직접 사용한 것으로 보면 된다.

 

프로그래머에게 제공되는 메모리 모델은 물리 메모리 그 자체로 볼 수 있고, 이 모델은 0부터 실제 물리 메모리 크기까지 주소를 갖는다. 이 경우, 각 주소는 몇 개의 비트로 구성된 셀로 정의가 된다. 대부분 셀은 9비트의 비트로 구성된다고 보면 된다.

 

메모리 추상화가 없는 환경에선 두 개의 프로그램이 동시에 메모리에서 실행된다는 것은 불가능하다. 만약, 한 프로그램이 7000 주소에 새로운 값을 기록했을 때 이는, 다른 프로그램이 그 위치에 저장했던 데이터를 변경시킬 수도 있다. 두 프로그램이 제대로 실행될 수도 없고 대부분 즉시 서로의 실행을 방해하게 된다.

 

물리 메모리를 직접 사용하는 추상화 없는 메모리 모델에서도 설계에 여러 가지 선택이 가능하다. 사용자가 명령을 입력하면 운영체제는 요청한 명령 프로그램을 디스크에서 메모리로 적재하고 그것을 실행한다. 그 프로세스가 종료가 되면 운영체제는 프롬프트를 출력하고 사용자가 다른 명령을 입력할 때까지 기다린다. 만일 새로운 명령이 요청되며 운영체제는 새로운 명령을 위한 프로그램을 디스크에서 메모리로 적재하는데 이때 기존에 있던 프로그램을 덮어쓴다.

 

메모리 추상화가 없는 시스템에서 병렬성을 얻는 방법 중에 하나는 여러 개의 스레드를 사용하는 것으로 보면 된다. 한 프로세스에 존재하는 스레드들은 모두 같은 메모리 이미지를 공유하기에 가능하다. 다만, 이것의 다른 의미는 스레드들이 서로 다른 프로그램을 실행할 수는 없다는 점이다. 즉, 스레드를 통해서 병렬성을 얻을 수는 있으나 이것은 제한되어 있다고 볼 수 있다.

'컴퓨터&네트워크' 카테고리의 다른 글

파일 시스템 관리 관련해서  (1) 2024.09.12
멀티미디어 운영체제  (6) 2024.09.11
다중컴퓨터  (2) 2024.09.02
네트워크 관련 프로토콜  (0) 2024.08.27
네트워크에 대해서  (0) 2024.08.26