다트머스 시분할 시스템

**다트머스 시분할 시스템**(, **DTSS**)은 1963년에서 1964년 사이에 다트머스 대학교에서 처음 개발된 운영체제이다. 최초로 성공적으로 구현된 대규모 시분할 시스템이자 베이직 언어가 개발된 시스템이다. DTSS는 다음 10년 동안 지속적으로 개발되었고, 여러 세대의 컴퓨터에 재구현되었으며, 1999년에 최종적으로 종료되었다.

제너럴 일렉트릭은 DTSS의 중간 버전을 기반으로 유사한 시스템을 개발했으며, 이를 Mark II라고 불렀다. Mark II와 더욱 발전된 Mark III는 GE-600 series 메인프레임 컴퓨터에 널리 사용되었고, 이들의 온라인 서비스의 기반이 되었다. 이 서비스들은 한때 세계 최대 규모였으며, 결국 소비자 지향적인 GEnie 온라인 서비스로 발전했다.

## 배경
다트머스 대학교의 존 케메니 교수와 토마스 E. 커츠 교수는 1959년경 Royal McBee LGP-30 컴퓨터를 구입했고, 이 컴퓨터는 학부생들이 어셈블리어로 프로그래밍을 했다. 커츠와 4명의 학생들은 ALGOL 58 프로그래밍 언어의 구현인 Dartmouth ALGOL 30 컴파일러를 프로그래밍했고, 이 중 두 학생인 스티븐 갈랜드와 앤서니 냅은 1962년에서 1964년 사이에 SCALP(Self Contained ALgol Processor) 언어로 발전시켰다. 케메니와 신입생 시드니 마셜은 협력하여 다트머스 과도한 단순화 프로그래밍 실험(DOPE)을 만들었고, 이는 대규모 신입생 강좌에서 사용되었다.

LGP-30의 제한된 크기(4K 31비트 워드)로 인해 알골 60의 완전한 구현이 불가능하여 특정 기능(값으로 호출되는 배열, 자체 배열, 문자열, 가변 배열 경계 및 재귀)이 생략되었지만, 구현에는 썽크를 사용한 이름으로 호출되는 매개변수와 정수 레이블이 포함되었다.

ALGOL 30은 2단계 시스템이었다. 첫 번째 단계는 컴파일러를 로드하고 사용자가 입력한 소스 코드를 처리했으며, 재배치 가능한 바이너리와 유사한 중간 코드를 생성하고 이를 종이 테이프에 천공했다. 두 번째 단계는 런타임 시스템과 중간 코드를 모두 로드했다. 컴파일은 "일괄 처리"될 수 있었지만, 소스 코드 테이프를 입력하고 컴파일된 프로그램을 실행하는 데 걸리는 지연이 너무 커서 광범위한 학생 사용을 허용할 수 없었다. 더 넓은 사용을 위해 갈랜드와 냅은 ALGOL 60의 더 작은 부분 집합(부울 변수나 연산자, 블록, 프로시저, 자체 또는 동적 배열, 조건부 표현식, 문장에 대한 단계-까지는 허용하지 않음)을 위한 "로드 앤 고" 시스템인 SCALP를 개발했다. SCALP는 LGP 메모리의 3분의 1을 컴파일러에, 3분의 1을 런타임 시스템(부동 소수점 인터프리터 및 숫자 함수 포함)에, 3분의 1을 컴파일된 사용자 코드에 할당했다. 학생들은 오프라인으로 소스 코드를 준비하고 프리든 플렉소라이터로 종이 테이프에 천공했다. 컴파일은 테이프를 읽어들이는 속도만큼 빠르게 이루어졌다. 이를 통해 학생 작업은 3분 만에 완료될 수 있었다. 1964년 시분할 시스템이 등장하기 전에 수백 명의 학생들이 SCALP를 사용했다.

## 초기 역사
섬네일|right|1964년 10월 DTSS 하드웨어 개략도
섬네일|right|GE-235 찬가
커츠는 1961년 또는 1962년에 케메니에게 다음과 같은 제안을 했다: 모든 다트머스 학생들이 컴퓨팅에 접근할 수 있어야 하고, 그것은 무료이고 개방되어야 하며, 이는 시분할 시스템을 만듦으로써 달성될 수 있다고 했다(커츠는 MIT의 동료 존 매카시로부터 시분할 시스템에 대해 배웠고, 그는 "왜 당신들은 시분할을 하지 않습니까?"라고 제안했다). DTSS가 볼트, 베라넥 앤 뉴먼의 PDP-1 기반 시분할 시스템에서 영감을 받았다고 언급되기도 했지만, 이것이 사실이라는 증거는 없다.

1962년에 케메니와 커츠는 새로운 시분할 시스템 개발을 위한 제안서를 NSF에 제출했다(이는 궁극적으로 1964년에 자금을 지원받았다). 그들은 다트머스와 NSF 모두가 시스템을 지원할 것이라는 충분한 확신을 가지고 있었기 때문에, 제안서가 자금을 지원받기 전인 1963년에 GE와 계약을 맺고 예비 작업을 시작했다. 특히 그들은 Bendix, GE, IBM의 후보 컴퓨터들을 평가했고, GE-225 시스템과 DATANET-30 통신 프로세서를 결합하기로 결정했다. 이 두 프로세서 접근 방식은 비정통적이었으며, 케메니는 나중에 이렇게 회상했다: "그 당시 GE 및 다른 곳의 많은 전문가들은 두 컴퓨터 솔루션의 경로가 낭비적이고 비효율적이라고 우리를 설득하려고 노력했다." 본질적으로 DATANET-30은 사용자 인터페이스와 스케줄러를 제공했고, 사용자 프로그램은 GE-225에서 실행되었다.

이 시스템은 1963년 케메니와 커츠의 지도 아래 학생 팀에 의해 구현되기 시작했으며 대학의 모든 구성원이 컴퓨팅 시설에 쉽게 접근할 수 있도록 하는 것을 목표로 했다. GE-225 및 DATANET-30 컴퓨터는 1964년 2월에 도착했다. 존 맥지치와 마이클 부시 두 학생은 DATANET-30 및 GE-225용 운영체제를 작성했으며, 케메니는 베이직 컴파일러를 기여했다. 시스템은 3월 중순에 가동되었고, 1964년 5월 1일 오전 4시에 시스템 운영을 시작했다. 1964년 가을, 수백 명의 신입생들이 20개의 전신타자기를 통해 시스템을 사용하기 시작했으며, 하노버 고등학교에서는 추가적인 전신타자기 하나를 통해 접근했다. 그해 가을 후반에 GE-225 컴퓨터는 거의 문제 없이 더 빠른 GE-235 컴퓨터로 교체되었다. 1965년 여름까지 시스템은 40명의 동시 사용자를 지원할 수 있었다.

1964년 10월 다트머스 문서(나중에 GE에 의해 수정됨)는 전반적인 DTSS 아키텍처를 이렇게 설명했다.

## 사용자 인터페이스 설계
케메니와 커츠는 "평균 응답 시간이 10초를 초과하면 자신만의 컴퓨터를 가지고 있다는 착각이 깨진다"고 관찰했고, 따라서 DTSS의 설계는 즉각적인 피드백을 강조했다. 많은 사용자들은 그들의 단말기가 컴퓨터라고 믿었으며 케메니는 "기계는 그를 섬기기 위해 존재하며 그가 전체 시스템을 완전히 제어한다"고 썼다.

교육적 목적 때문에 DTSS 설계에서는 사용 편의성이 우선시되었다. 이는 세계 최초의 통합 개발 환경 (IDE)을 구현했다. 사용자가 입력하고 줄 번호로 시작하는 모든 줄은 프로그램에 추가되어, 이전에 동일한 번호로 저장된 줄을 대체했다. 그 외의 모든 것은 명령으로 간주되어 즉시 실행되었다. 줄 번호만으로 구성된 줄은 저장되지 않았지만, 이전에 동일한 번호로 저장된 줄은 제거했다. 이러한 편집 방법은 다트머스 시분할 시스템의 터미널 장치로 많은 수의 전신타자기를 허용하는 간단하고 사용하기 쉬운 서비스를 제공했다.

IDE 명령어는 다음과 같다.

* **CATALOG** – 저장된 프로그램 목록을 나열한다.
* **LIST** – 메모리에 있는 현재 프로그램을 표시한다.
* **NEW** – 메모리에 프로그램을 명명하고 작성을 시작한다.
* **OLD** – 저장소에서 이전에 명명된 프로그램을 메모리로 복사한다.
* **RENAME** – 메모리에 있는 프로그램의 이름을 변경한다.
* **RUN** – 메모리에 있는 현재 프로그램을 컴파일하고 실행한다.
* **SAVE** – 메모리에 있는 현재 프로그램을 저장소로 복사한다.
* **SCRATCH** – 메모리에서 현재 프로그램의 내용을 지운다.
* **UNSAVE** – 저장소에서 현재 프로그램을 제거한다.

이 명령어들은 종종 사용자들이 베이직 언어의 일부라고 믿었지만, 실제로는 시분할 시스템의 일부였으며 DTSS 터미널을 통해 알골 또는 포트란 프로그램을 준비할 때도 사용되었다.

## GE-다트머스 관계
케메니와 커츠는 원래 GE가 연구 파트너십을 맺기를 희망했으며, 이를 위해 커츠와 학생 앤서니 냅은 제안된 시스템 설계에 대한 문서를 작성하여 1962년 GE 피닉스 사무실에 제출했다. 그러나 GE는 파트너십을 거부했고, 1962년 10월 다트머스에 대한 제안은 순전히 상업적 판매로 구성되었다. 그럼에도 불구하고 GE와 다트머스는 1964년 10월 샌프란시스코에서 열린 가을 합동 컴퓨터 컨퍼런스에서 하노버의 다트머스 시스템에 연결된 세 대의 전신타자기로 운영 중인 다트머스 시분할 시스템을 홍보했다.

1964년 12월부터 1965년 1월까지 두 명의 다트머스 학생이 피닉스의 GE 컴퓨터에 DTSS와 베이직의 작동 사본을 설치했다. 1965년 초 GE는 베이직과 다트머스 알골을 포함하는 GE-265 시스템(GE 235 + DATANET 30)에서 시분할 서비스를 광고하기 시작했으며, 나중에 이를 GE Mark I 시분할 시스템으로 이름을 변경했다. 다음 몇 년 동안 GE는 미국 및 기타 지역에 25개의 컴퓨터 센터를 열어 5만 명 이상의 사용자에게 서비스를 제공했다.

컴퓨터 역사 박물관의 기업 역사 컬렉션은 GE의 Mark I 역사를 다음과 같이 설명했다.

## 다트머스 시분할 시스템, 버전 2
섬네일|right|1971년 초 키위트의 허니웰 GE 635 컴퓨터 하드웨어 아키텍처
1966년부터 1968년까지 DTSS는 여전히 터미널 제어에 DATANET-30을 사용하며 GE 635에 재구현되었다. GE 635 시스템은 1966년 11월에 납품되었다. 1967년 10월까지는 다트머스와 GE가 공동 개발한 Phase I 소프트웨어를 기반으로 서비스를 제공하고 있었는데, GE는 이를 GE Mark II 시스템으로 판매했다. 이 작업과 병행하여 다트머스는 1967년에 존 케메니 교수의 지휘 아래 학생들과 교수진이 프로그래밍을 수행하는 Phase II 개발에 착수했다. 다트머스 시분할 시스템의 Phase II는 1969년 4월 1일에 다트머스에서 Phase I를 대체했다.

1969년에 설명된 새로운 DTSS 아키텍처는 세 가지 기준에 의해 영향을 받았다:

* 265 시스템 경험.
* 멀틱스 시스템의 공개된 개념.
* 다트머스 학생 및 교수진의 파트타임 직원 능력의 한계 인식.

이 새로운 버전은 이전 DTSS와 내부적으로 완전히 달랐지만, 사용자 및 코스 자료의 원활한 전환을 위해 거의 동일한 사용자 인터페이스를 제공했다. 635 버전은 1970년대에 거의 300명의 동시 사용자에게 대화형 시분할 기능을 제공했으며, 이는 당시에는 매우 큰 숫자였고, 미국, 캐나다, 유럽의 11개 상업 및 학술 사이트에서 운영되었다. 1970년대에 발전하면서, 후기 버전은 Honeywell 6000 시리즈 메인프레임(1973) 및 Honeywell 716 통신 프로세서(1974)로 이전되었다. 1976년 GE-635 시스템은 Honeywell 66/40A 컴퓨터로 교체되었다. 이 시스템은 1999년 말까지 운영되었다.

DTSS 버전 2에는 "통신 파일"이라는 새로운 형태의 프로세스 간 통신이 포함되어 있었다. 이는 유닉스 파이프보다 상당히 앞선 것으로, 설계 문서에 따르면 1967년경에 개념이 시작되었다고 한다. 그리고 1969년 컨퍼런스에서 다음과 같이 간략하게 설명되었다.

통신 파일은 읽기, 쓰기 및 닫기 작업을 지원했을 뿐만 아니라 동기 및 비동기 데이터 전송, 임의 접근, 상태 조회, 대역 외 신호, 오류 보고 및 접근 제어도 지원했으며, 각 작업의 정확한 의미는 마스터 프로세스에 의해 결정되었다. 더글러스 매킬로이는 "이 점에서 [통신 파일은] 익숙한 IO보다 플랜 9의 9P 프로토콜에 더 가까웠다"고 언급했다. 통신 파일의 주목할 만한 응용 분야는 회의 전화와 유사하게 작동하는 다중 사용자 회의를 지원하는 것이었는데, 이는 전적으로 사용자 공간 응용 프로그램으로 구현되었다.

## 키위트 네트워크
섬네일|right|1971년 초 키위트 네트워크
위에 언급했듯이 하노버 고등학교는 시스템 시작부터 DTSS에 연결되어 있었다. 다음 10년 동안 다른 많은 고등학교와 대학이 키위트 네트워크를 통해 DTSS에 연결되었다. 이 네트워크는 DTSS 컴퓨터와 직원을 수용했던 키위트 계산 센터에 자금을 기부한 피터 키위트의 이름을 따서 명명되었다. 이 학교들은 하나 이상의 전신타자기, 모뎀 및 다이얼업 전화선을 통해 DTSS에 연결되었다. 다트머스 학생들은 DTSS에 무료로 무제한 접속할 수 있었지만, 고등학생들은 매주 40~72시간의 터미널 접속 할당량을 가지고 있었고, 대학 사용자들은 컴퓨터 사용료를 지불했다. 다트머스는 교사들이 수업에서 컴퓨팅을 사용하도록 참여시키고 훈련시키는 적극적인 프로그램을 운영했다.

1967년까지 다음 고등학교들이 키위트 네트워크에 합류했다: 하노버 고등학교, 홀더니스 스쿨, 매스코마 밸리 지역 고등학교, 킴볼 유니온 아카데미, 마운트 헤르몬 스쿨, 필립스 앤도버 아카데미, 필립스 엑서터 아카데미, 세인트폴스 스쿨, 그리고 버몬트 아카데미. 이 그룹은 1967년에서 1968년까지 NSF의 지원을 받은 다트머스 중등학교 프로젝트로 확장되어 다음 뉴잉글랜드 고등학교를 추가했다: 케이프 엘리자베스 고등학교, 콩코드 고등학교, 하트포드 고등학교 (버몬트), 킨 고등학교, 레바논 고등학교, 루미스 스쿨, 맨체스터 센트럴 고등학교, 럿랜드 고등학교, 세인트 존스버리 아카데미, 사우스 포틀랜드 고등학교, 그리고 팀버레인 고등학교.

1968년부터 1970년까지 다트머스는 지역 대학 컨소시엄을 통해 여러 대학을 키위트 네트워크에 추가했다. 여기에는 베이츠 칼리지, 버크셔 커뮤니티 칼리지, 보딘 칼리지, 콜비 주니어 칼리지, 미들베리 칼리지, 마운트 홀리오크 칼리지, 뉴잉글랜드 칼리지, 노리치 대학교, 버몬트 대학교, 버몬트 기술 대학이 포함되었다.

1971년까지 키위트 네트워크는 뉴잉글랜드, 뉴욕, 뉴저지의 30개 고등학교와 20개 대학을 연결했다. 당시 DTSS는 30,000명 이상의 사용자를 지원하고 있었는데, 이 중 다트머스 대학교 학생은 3,000명에 불과했다. 1973년까지 키위트 네트워크는 일리노이, 미시간, 업스테이트 뉴욕, 오하이오, 몬트리올의 학교를 포함하도록 확장되었다.

## 사용법

 DTSS 사용의 57%는 수업용이었고 16%는 연구용이었다. 케메니와 커츠는 기술 및 비기술 분야의 학생들이 DTSS를 사용하도록 의도했다. 그들은 신입생 수학 수업의 두 번째 학기에 네 개의 다트머스 베이직 프로그램을 작성하고 디버깅하는 요구 사항을 포함시켰다. 1968년까지 다트머스 학생의 80% 이상이 컴퓨터 프로그래밍 경험을 가지고 있었다. 공학, 고전, 지리, 사회학, 스페인어 등 80개 수업에 "공식적인" 컴퓨터 사용이 포함되었다. 수학이나 공학이 아닌 턱 비즈니스 스쿨과 사회 과학 분야의 학생들이 가장 많은 사용자들이었다는 사실은 케메니를 놀라게 했다. 1972년까지 학생들의 90%가 컴퓨터 경험을 가지고 있었고, 교수진은 학생들이 DTSS에 익숙하다는 것을 알았기 때문에 이를 사용하는 것이 많은 수업의 일상적인 부분이 되었다. 1975년 설문 조사에 따르면 교수진의 29%가 수업에서 컴퓨터를 사용했고 학생의 73%가 이 수업에 등록했으며, 교수진의 43%가 연구에 컴퓨터를 사용했고 45%의 교수진이 컴퓨터 프로그램을 작성했다. 그해까지 대학 행정은 시분할 자원의 28%를 사용했고 학생들은 20%를 사용했으며, 학사과와 주택 사무소도 사용자 중 하나였다.

 DTSS 사용의 27%는 캐주얼 사용 및 오락을 위한 것이었는데, 대학은 "결코 경솔한 것으로 간주되지 않는다"고 명시했다. 이는 사용자들이 컴퓨터에 익숙해지고 두려워하지 않게 되는 즐거운 방법이었기 때문이다. 케메니와 커츠는 수백 개의 프로그램 라이브러리에 "많은 게임"이 포함되어 있다고 보고했다. 그들은 교수진의 DTSS 광범위한 사용과 많은 학생들이 더 이상 필요하지 않은 후에도 시스템을 계속 사용하는 것에 기뻐했다. 당시 대학 총장이었던 케메니는 1971년 시스템을 설명하는 브로셔에서 학생이 베이커 기념 도서관에 들어가 허락을 구하거나 목적을 설명하지 않고 책을 빌릴 수 있듯이, "어떤 학생이든 키위트 계산 센터에 걸어 들어가 콘솔에 앉아 시분할 시스템을 사용할 수 있다. 그가 진지한 연구 문제를 해결하고 있는지, 숙제를 쉬운 방법으로 하고 있는지, 축구 게임을 하고 있는지, 여자친구에게 편지를 쓰고 있는지 아무도 묻지 않을 것이다"라고 썼다. 1972년까지 축구 시뮬레이션은 다인용 비디오 게임으로 동시 대전 플레이를 지원했다. 키위트가 다트머스 대학교 그리스 조직 근처에 위치하여 사교 장소로 인기가 많았다. 학생들은 게임을 하거나 자신들의 프로그램을 시연하기 위해 종종 데이트 상대를 계산 센터로 데려왔다.

1967~68학년도에는 2,600명의 다트머스 사용자 외에도 10개 대학과 23개 고등학교의 5,550명이 DTSS에 접근했다. 케메니는 집에 터미널을 가지고 있었고, 총장으로서 사무실에도 설치했다. 1970년대 초까지 캠퍼스에는 25개 건물에 150개 이상의 터미널이 있었고, 여기에는 캠퍼스 의무실 환자용 휴대용 장치도 포함되었다. 매일 약 2,000명의 사용자가 DTSS에 로그인했으며, 매년 학생의 80%와 교수진의 70%가 시스템을 사용했다. 교외의 다트머스 교육 시분할 네트워크에는 30개 고등학교와 20개 대학의 79개 터미널 사용자가 포함되어 있었는데, 이들은 미들베리 칼리지, 필립스 앤도버, 마운트 홀리오크 칼리지, 고다드 칼리지, 미국 상선 사관학교, 미국 해군사관학교, 베이츠 칼리지, 뉴욕 다트머스 클럽, 저지시티의 다트머스 제휴사에서 다트머스 사람들과 DTSS를 공유했다. 이 시스템은 사용자 간에 이메일 형식의 메시지를 주고받을 수 있게 했으며, talk 프로그램의 전신을 통해 실시간 채팅도 가능했다.

DTSS에서 여러 언어를 사용할 수 있었지만,  프로그램의 98%는 다트머스 베이직으로 작성되었다. 베이직이 변경되지 않았기 때문에 시스템은 이전 애플리케이션과 호환성을 유지했다. 케메니는 1974년에 자신이 1964년에 작성한 프로그램이 여전히 실행될 것이라고 보고했다. 1980년까지 지원되는 언어 및 시스템은 다음과 같다:

* 7MAP – DTSS 716 매크로 어셈블리어
* 8MAP – DTSS PDP-8 매크로 어셈블리어
* 9MAP – DTSS PDP-9 매크로 어셈블리어
* ALGOL – DTSS 알골 60
* ALGOL68 – DTSS ALGOL 68
* APL – DTSS APL
* BASIC – Dartmouth BASIC
* CHESS – 체스 플레이 프로그램
* COBOL – DTSS 코볼
* COURSE – IBM 호환 COURSEWRITER III 저작 프로그램
* CPS – 베이츠 칼리지에서 개발된 '완전 프로그래밍 시스템'
* CROSREF – 프로그램 상호 참조
* DDT – Honeywell 600/6000 기계어 디버깅 프로그램
* DMAP – DTSS DATANET-30 매크로 어셈블리어
* DTRAC – DTSS 텍스트 계산 및 컴파일 언어
* DXPL – DTSS XPL 번역기 작성 시스템
* DYNAMO – DYNAMO 시뮬레이션 언어
* FORTRAN – DTSS 포트란
* GMAP – Honeywell 600/6000 매크로 어셈블리어
* LISP – DTSS 리스프
* MIX – DTSS MIX 어셈블러
* PILOT – DTSS PILOT 코스 저작기
* PL/I – DTSS PL/I
* PLOT – BASIC 또는 SBASIC과 함께 사용되는 그래픽 시스템
* SBASIC – 구조적 베이직
* SIX – FORTRAN 76
* SNOBOL – DTSS SNOBOL4

## 현재의 DTSS
2000년에 시뮬레이터에서 DTSS 시스템을 재현하는 프로젝트가 착수되었고, 그 결과 DTSS는 현재 마이크로소프트 윈도우 시스템과 애플 매킨토시 컴퓨터에서 사용할 수 있다.

## 같이 보기
* 운영 체제 타임라인
* 시분할 시스템 진화

## 각주

분류:1964년 소프트웨어
분류:시분할 운영체제
분류:중단된 운영체제