Computer_science/Memory

[메모리] 단일 프로그래밍 연속 메모리 할당

neck392 2024. 12. 26. 00:21

단일 프로그래밍 환경에서의 연속 메모리 할당은 단일 사용자 환경의 연속 메모리 할당이라고도 할 수 있다.

<메모리할당 - 연속 메모리 - 단일 프로그래밍>

메모리 할당(=적재)에서 말 그대로 연속적으로 메모리를 적재하는 것이 연속 메모리 할당이다. 연속 메모리 할당은 다시 한번에 하나의 프로그램만 실행시키는 단일 프로그래밍 환경과 여러 프로그램을 동시에 메모리에 적재하고 실행시키는 다중 프로그래밍(=멀티 프로그래밍) 환경으로 나눌 수 있으며 여기서는 단일 프로그래밍 환경을 다룬다.

<전형적인 단일 프로그래밍 연속 메모리 할당 시스템>

 

 초기 컴퓨터 시스템에서 단일 사용자(하나의 프로그램)만이 실행될 수 있었고 자원도 해당 프로그램 혼자만 사용하였다. 그리고 프로그램은 메모리보다 클 수 없었으며 프로그래머가 직접 배치 과정을 수행하여 항상 같은 메모리 위치에 적재하였다.

그러나 시스템 설계자들은 기본 기능을 구현한 입출력 코딩을 입출력 제어 시스템(Input/Output Control System, IOCS)에 통합하여 각 프로그램을 위하여 새로 작성할 필요없이 IOCS 루틴을 호출해 원하는 작업을 수행하였다. IOCS는 코딩 과정을 매우 간단하고 빠르게 진행하게 해주었으며 입출력 제어 시스템 구현은 현태 운영체제 개념의 시작이라 할 수 있다.

 

단일 프로그래밍 환경에서 연속 메모리 할당은 사용자 영역과 운영체제가 상주하는 모니터 영역, 사용하지 않는 미사용 영역으로 나눌 수 있다. 여기서 운영체제가 상주하는 모니터 영역은 상위나 하위 모두 둘 수 있다.

메모리를 제어하는 모든 권한이 사용자에게 있기 때문에 사용자가 주소를 잘못 지정하면 운영체제가 손상되는 문제가 생긴다. 따라서 아래 그림과 같이 경계(한계) 레지스터를 사용하여 사용자 프로그램이 메모리 주소를 참조할 때마다 경계 레지스터를 검사한 후 실행하여 메모리를 보호한다.

<경계 레지스터를 활용한 메모리 보호 기법 적용>

 

앞서 연속 메모리 할당 시스템에서 프로그램은 메모리보다 클 수 없다고 서술하였으며 따라서 프로그램의 크기가 제한되었다. 소프트웨어 설계자들은 이러한 메모리의 한계를 극복하기 위하여 중첩(Overlay)을 생성하여 메인 메모리보다 큰 프로그램을 실행할 수 있게 해주었다. 프로그래머는 프로그램을 논리적인 구역으로 나누고 프로그램이 특정 구역에 필요한 메모리를 요구하지 않을 때, 시스템은 해당 구역의 일부나 전체를 필요한 구역의 메모리와 교체할 수 있다.

중첩과 관련된 자세한 내용은 블로그 앞의 글에서 짚고 넘어갔으므로 생략한다.