TSS (운영 체제)

섬네일|right|IBM System/360 모델 67-2. TSS/360이 실행되었을 컴퓨터 모델
IBM 시분할 시스템 **TSS/360**은 시분할 운영체제의 일종으로, System/360 메인프레임 계열의 특수 모델인 모델 67 전용으로 설계되었지만 현재는 단종되었다. 1967년 제한된 수의 고객에게 시험적으로 제공되었지만, IBM에 의해 공식적으로 지원되는 제품으로 출시되지는 않았다. TSS는 여러 새로운 기능을 개척했으며, 그중 일부는 나중에 MVS와 같은 더 인기 있는 시스템에 등장했다. TSS는 System/370 및 303x 시스템으로 마이그레이션되었지만, 많은 발전과 새로운 기능에도 불구하고 TSS는 기대를 충족시키지 못했고 결국 취소되었다. TSS/370의 상주 슈퍼바이저는 유닉스를 IBM 메인프레임으로 포팅하는 기반으로 사용되었다. TSS/360은 TSS/8 운영 체제 개발에도 영감을 주었다.

## 새로운 특징
TSS/360은 긴밀하게 결합된 대칭형 다중 처리의 초기 구현 중 하나였다. 한 쌍의 모델 67 메인프레임은 공통 물리 메모리 공간을 공유하고, 커널 (및 애플리케이션) 코드의 단일 복사본을 실행했다. 한 프로세서에 의해 시작된 I/O 작업은 종료되어 다른 프로세서에서 인터럽트를 일으킬 수 있었다. 모델 67은 테스트 앤 셋(Test and Set)이라는 표준 360 명령어를 사용하여 코드 임계 구역에 락을 구현했다.

또한 위치 독립 코드를 사용하여 가상 메모리와 가상 머신을 구현했다.

TSS/360에는 "테이블 기반 스케줄러"의 초기 구현이 포함되어 있었다. 이 스케줄러는 현재 우선순위, 워킹 셋 크기, 지금까지 사용된 타임 슬라이스 수와 같은 매개변수가 있는 사용자 구성 테이블이었다. 커널은 스레드의 새 우선순위를 계산할 때 이 테이블을 참조했다. 이 기능은 나중에 Honeywell CP-V 및 IBM z/OS와 같은 다양한 시스템에 등장했다.

당시 운영체제 소프트웨어의 표준이었듯이, TSS/360 고객(예: 제너럴 모터스 연구소)에게는 운영체제 코드 및 개발 도구의 전체 소스에 대한 완전한 접근 권한이 주어졌다. 사용자 개발 개선 사항 및 패치는 공식 소스 코드에 자주 통합되었다.

## 사용자 인터페이스
TSS는 사용자에게 명령줄 인터페이스를 제공한다. 사용자는 명령 시스템과 상호 작용한다. 명령 형식은 `Command_Name[ operands]`로 구성된다. 명령 이름은 공백 없이 1~8자이다. 피연산자는 명령에 따라 선택 사항이며, 명령 이름과 하나 이상의 공백으로 구분해야 한다. 여러 피연산자는 탭 문자나 쉼표로 구분해야 한다. 명령줄은 계속할 줄 끝에 하이픈("-")을 입력하고 다음 줄 시작 부분에 계속할 내용을 입력하여 계속할 수 있다. 여러 명령은 세미콜론(";")으로 구분하여 한 줄에 작성할 수 있다. 명령줄에는 세미콜론으로 명령과 구분하고 작은따옴표("''")로 묶은 주석이 허용된다. 피연산자는 위치 또는 키워드일 수 있으며, "keyword=value" 형식이다.

시스템 명령은 7가지 범주로 나뉜다.

* 태스크 관리 – LOGON, LOGOFF, ABEND 등
* 데이터 관리 – CATALOG, DDEF, DELETE 등
* 프로그램 관리 – LOAD, DUMP, DISPLAY, TRAP 등
* 명령 생성 – PROCDEF, BUILTIN
* 메시지 처리
* 사용자 프로필 – SYNONYM, DEFAULT, PROFILE 등
* 프로그램 제품 언어 인터페이스 – ASM (어셈블러 (F)), 코볼, HASM (어셈블러 (H)), PLI (PL/I (F)), PLIOPT (PL/I 최적화 컴파일러), FTNH (FORTRAN (H)) 등

## 위치 독립 코드
TSS는 위치 독립 코드의 초기 구현을 제공했다. 이는 서로 다른 프로세스가 단일 실행 파일의 사본을 실행할 수 있도록 하는 기능으로, 각 프로세스에서 다른 가상 주소에 매핑될 수 있다.

각 프로시저에는 읽기 전용 공용 CSECT, 쓰기 가능한 개인 프로토타입 섹션(PSECT) 및 쓰기 가능한 저장 영역(일반적으로 PSECT에 위치)이 있을 수 있다. 외부 프로시저 및 진입점의 주소 상수는 PSECT에 위치해야 한다. 동적 로더는 모든 프로세스에서 루틴을 동일한 가상 주소에 배치하지 않기 때문이다. 유형 I 링크 규칙을 따르는 프로그램은 일반적으로 진입 시 레지스터 13이 가리키는 저장 영역에 레지스터를 저장하고, 저장 영역의 19번째 워드에서 PSECT의 주소를 검색하며, 저장 영역을 새 저장 영역에 연결하고 새 저장 영역의 주소를 레지스터 13에 넣을 책임이 있다. 유형 I 링크 규칙을 따르는 호출자는 루틴에 대한 V-상수를 일반 레지스터 15(GR15)에 로드하고 루틴을 호출하기 전에 GR13이 가리키는 저장 영역의 19번째 워드에 루틴의 PSECT에 대한 R-상수를 복사한다.

동적 로더가 프로그램을 로드하면 PSECT의 사본을 만들고 현재 프로세스 내에서 할당된 가상 주소를 반영하도록 주소 상수를 재배치하므로 프로그램의 각 사용자는 PSECT의 고유한 사본을 갖게 된다.

동적 로더는 첫 번째 페이지 폴트가 발생할 때까지 프로그램 페이지를 로드하거나 주소 상수를 해결하지 않는다.

## 비판

TSS/360은 성능 및 신뢰성 문제와 OS/360과의 호환성 부족으로 어려움을 겪었지만, 이러한 문제들은 결국 해결되었다. IBM은 멀틱스와 경쟁하기 위해 대규모 프로그래머 팀과 함께 매우 공격적인 일정으로 TSS를 개발하려고 했다. 1967년까지 TSS/360이 OS/360과 같은 종류의 지연을 겪고 있다는 것이 분명해졌다. 1968년 2월, SHARE 30 회의 당시 18개의 S/360-67 사이트가 TSS를 실행하려고 시도하고 있었다. 회의 중에 IBM은 "파란 편지"를 통해 TSS/360이 공식적으로 중단될 것임을 발표했다 이는 시분할 커뮤니티에 큰 타격이었다. 이 결정은 일시적으로 번복되었고, TSS/360은 1971년까지 공식적으로 취소되지 않았다. 그러나 TSS/360은 기존 TSS/360 고객들에게 잠정적인 조치로 한동안 조용히 제공되었다.

TSS/360이 취소된 후, IBM은 주요 노력을 OS/360의 시분할 모니터인 TSO에 집중했다. 다른 여러 그룹은 S/360-67을 위한 덜 야심적이고 더 성공적인 시분할 시스템을 개발했는데, 특히 IBM의 케임브리지 과학 센터의 CP-67은 초기 가상 머신 모니터로서 VM/370으로 발전했으며, 미시간 대학교의 MTS와 스탠퍼드 대학교의 ORVYL이 있었다. IBM은 또한 기존 TSS/360 고객을 위한 마이그레이션 경로로 PRPQ인 TSS/370을 제공했으며, 이는 여러 차례 릴리스되었다.

## 같이 보기
* IBM 메인프레임 운영체제의 역사
* 시분할 시스템 진화
* 운영체제의 역사
* 운영체제 타임라인

## 각주

## 추가 자료
*  TSS의 기원과 일정 문제에 대해 설명한다.
*  TSS에 영향을 미친 "두 번째 시스템 증후군"에 대해 설명한다.

## 외부 링크
* 퍼블릭 도메인 소프트웨어 아카이브, TSS/370 소스 및 바이너리 아카이브 포함
* BitSavers.org의 TSS/360 매뉴얼 아카이브, IBM의 많은 TSS 매뉴얼 PDF 포함

분류:시분할 운영체제
분류:1967년 소프트웨어
분류:중단된 운영체제
분류:IBM 메인프레임 운영체제
분류:어셈블리어 소프트웨어