THE 멀티프로그래밍 시스템

THE 멀티프로그래밍 시스템(THE multiprogramming system, THE OS)은 에츠허르 데이크스트라가 이끄는 팀이 설계한 컴퓨터 운영체제로, 1965~66년 논문에서 설명되었고 (Jun 14, 1965) 1968년에 발표되었다.
데이크스트라는 시스템에 이름을 붙이지 않았다. "THE"는 당시 네덜란드어로 에인트호번 공과대학교의 이름이었던 "Technische Hogeschool Eindhoven"의 약어일 뿐이다. THE 시스템은 주로 다중작업을 지원하는 배치 시스템이었지만 다중 사용자 운영체제로 설계되지는 않았다. SDS 940과 매우 유사했지만, "THE 시스템의 프로세스 집합은 정적이었다."

THE 시스템은 분명히 소프트웨어 기반 페이지드 가상 메모리의 첫 형태를 도입했다(Electrologica X8은 하드웨어 기반 메모리 관리를 지원하지 않았다). 이는 자기 드럼의 물리적 위치를 강제로 사용해야 하는 프로그램의 제약을 없앴다. 데이크스트라 시스템에서 지원하는 유일한 프로그래밍 언어인 수정된 알골 컴파일러를 사용하여 "요청된 정보가 메모리에 있는지 확인하고, 필요한 경우 스와핑하는 시스템 루틴 호출을 자동으로 생성"함으로써 이를 수행했다. 페이지드 가상 메모리는 버퍼링 입출력(I/O) 장치 데이터와 운영체제 코드의 상당 부분, 그리고 거의 모든 알골 60 컴파일러에도 사용되었다. 이 시스템에서는 세마포어가 프로그래밍 구성 요소로 처음 사용되었다.

설계
THE 멀티프로그래밍 시스템의 설계는 "상위" 계층이 "하위" 계층에만 의존하는 계층형 구조를 사용했다는 점에서 중요하다.
 계층 0은 운영체제의 다중 프로그래밍 측면을 담당했다. 어떤 프로세스가 중앙 처리 장치(CPU)에 할당되는지를 결정하고, 세마포어에서 차단된 프로세스를 처리했다. 인터럽트를 처리하고 프로세스 변경이 필요할 때 문맥 교환을 수행했다. 이는 가장 낮은 수준이었다. 현대 용어로는 이것이 스케줄러였다.
 계층 1은 프로세스에 메모리 할당에 관여했다. 현대 용어로는 이것이 페이저였다.
 계층 2는 운영체제와 시스템 콘솔 간의 통신을 처리했다.
 계층 3은 컴퓨터에 연결된 장치들 간의 모든 I/O를 관리했다. 여기에는 다양한 장치에서 정보를 버퍼링하는 것이 포함되었다.
 계층 4는 사용자 프로그램으로 구성되었다. 5개의 프로세스가 있었는데, 이들은 사용자 프로그램의 컴파일, 실행, 인쇄를 처리했다. 완료되면, 제어권을 최근에 시작된 프로세스와 I/O 때문에 차단된 프로세스를 선호하는 우선순위 기반 스케줄 큐로 다시 전달했다.
 계층 5는 사용자였다. 데이크스트라가 언급했듯이 "우리가 구현하지 않았다".

상위 계층은 하위 계층에만 의존할 수 있다는 제약은 시스템에 대한 추론을 (준-정형 기법을 사용하여) 더욱 다루기 쉽게 만들고, 시스템을 점진적으로 구축하고 테스트하는 것을 용이하게 하기 위해 설계자들이 부과했다. 계층은 순서대로, 계층 0부터 구현되었으며, 각 계층이 제공하는 추상화는 철저히 테스트되었다. 커널의 이러한 계층 분할은 멀틱스의 이후 링-세그먼테이션 모델과 어떤 면에서 유사했다. 윈도우 NT 및 MacOS를 포함하여 몇몇 후속 운영체제는 어느 정도 계층화를 사용했지만, 일반적으로 더 적은 계층을 사용했다.

이 시스템의 코드는 네덜란드 Electrologica X8 컴퓨터용 어셈블리어로 작성되었다. 이 컴퓨터는 27비트의 워드 크기, 48 킬로워드의 코어 메모리, 백업 저장소를 제공하는 512 킬로워드의 자기 드럼과 LRU 캐시 알고리즘, 천공 테이프 판독기, 천공 테이프 펀치, 플로터, 프린터를 가지고 있었다.

 같이 보기 
 RC 4000 멀티프로그래밍 시스템
 링 (컴퓨터 보안)
 운영체제 타임라인

 각주 

 외부 링크 
 소스 코드 이용 가능

분류:1968년 소프트웨어
분류:중단된 운영체제
분류:네덜란드의 발명품
분류:어셈블리어 소프트웨어
분류:에츠허르 데이크스트라