MTS 시스템 아키텍처

MTS system architecture
미시간 터미널 시스템(MTS)
MTS signon screenshot.png
3270 터미널 에뮬레이터를 통해 보이는 MTS 환영 화면.
개발자미시간 대학교 및 미국, 캐나다, 영국의 7개 대학교
기록 위치다양한 언어, 대부분 360/370 조립자
작업 상태역사적인
초기 릴리즈1967
최신 릴리즈6.0/162(최종)
다음에서 사용 가능영어
플랫폼IBM S/360-67, IBM S/370 및 후속 제품
체납
사용자 인터페이스
명령줄 인터페이스
면허증무료(CC BY 3.0)
공식 웹사이트archive.michigan-terminal-system.org

MTS System ArchitectureIBM S/360-67, IBM System/370 및 호환 가능한 컴퓨터에서 1967년부터 1999년까지 사용 중인 시간 공유 컴퓨터 운영 체제Michigan Terminal System의 소프트웨어 조직을 설명한다.

개요

MTS 아키텍처[1]
모드[2] VM 인터럽트
사용자 프로그램 문제 사용자 에 관하여 에 관하여
명령 언어 하위 시스템(CLS),
DSR(장치 지원 루틴)
시스템 서브루틴
계통상의
작업 프로그램(MTS, PDP, DMGR, RM 또는 HASP, ...) 가거나 가거나 가거나
감독자(UMMPS) 감독관 n/a 떨어져서 떨어져서
S/360-67 또는 S/370 하드웨어

UMMPS(University of Michigan Multi Programming Supervisor)는 하드웨어를 완벽하게 제어하고 일련의 일자리 프로그램을 관리한다.[3]취업 프로그램 중 하나는 MTS로, 대부분의 사용자들이 상호 작용하는 취업 프로그램이다.[4]MTS는 명령어 서브시스템(CLS)의 모음으로 작동한다.CLS 중 하나는 사용자 프로그램의 실행을 허용한다.MTS는 CLS, 사용자 프로그램 및 MTS 자체에서 사용할 수 있는 시스템 서브루틴 컬렉션을 제공한다.[5][6]무엇보다도 이러한 시스템 서브루틴은 장치에 의존하는 입력/출력을 수행하는 구성 요소인 DSR(Device Support Routine)에 대한 표준 액세스를 제공한다.

조직

이 시스템은 서로 잘 정의된 인터페이스를 가진 독립된 요소들의 집합으로 구성된다.[3]물론 이 아이디어는 새롭지도 않고 독특하지도 않다. 그러나 MTS 구성요소는 일반적으로 더 크고, 구성요소들 간의 인터페이스는 더 견고하며, 구성요소는 많은 시스템보다 더 적은 수의 다른 구성요소들과 통신한다.결과적으로, 부품들은 서로 더 독립적이고 다른 요소들에 영향을 주지 않고 한 요소들을 교체하는 것이 더 쉽다.

감독자와의 인터페이스는 모든 부품에 대해 동일하며 특별한 경우는 거의 허용되지 않는다. 예를 들어, 모든 입출력 작업은 카드 판독기, 페이징 장치 또는 기타 장치에 대한 입출력 작업이든 간에 동일한 감독기구를 사용하여 수행된다.감독자 서비스에 대한 대부분의 접근은 SVC를 직접 사용하는 것이 아니라 필요한 감독자 통화 지침(SVC)을 발행하는 시스템 서브 루틴을 통해 이루어진다.제어 블록은 제어 블록을 "소유"하는 구성 요소 내의 서브루틴에 대한 호출을 통해서만 간접적으로 액세스된다.

사용자 프로그램이 사용하는 인터페이스가 가장 깨끗하다.사용자 모드 프로그램이 실행 중일 때 시스템 제어 블록(시스템 세그먼트)을 포함하는 가상 메모리 세그먼트가 작업의 가상 주소 공간에서 제거되기 때문에 사용자 프로그램은 (참조나 변경을 위해) 시스템 제어 블록을 직접 참조하지 않을 수 있다.사용자 프로그램이 사용할 수 있는 서브루틴 인터페이스는 시스템의 다른 대부분의 부분(시스템 모드 프로그램, CLS 등)에서도 사용된다. 시스템 모드에서 실행 중인 구성요소를 통해서도 "시스템" 가상 메모리 세그먼트에 액세스할 수 있다.사용자 모드에서 시스템 모드 및 백업으로의 전환은 "게이트"라고 알려진 서브루틴 인터페이스의 특수 보호 세트에 의해 관리된다(Wayne State University에서 초기 개발).[2]

MTS에 대한 프로그래밍 노력은 수평이 아닌 수직으로 나뉜다.이것은 한 두 명의 개인에게 한 요소에 대한 책임이 부여된 다음 설계부터 실행과 유지보수를 거쳐 그것을 따른다는 것을 의미한다.책임자는 모든 적절한 기존 인터페이스가 변경되지 않고 유지되는 한 구성요소의 내부 구조를 설계하고 인터페이스를 확장할 수 있는 상당한 자유를 갖는다.

언어 및 시스템 수준 디버깅 프로그래밍

감독관, 대부분의 직업 프로그램, 많은 DSR과 CLS를 포함한 MTS의 큰 부분은 360/370 조립어로 쓰여 있다.일부 DSR과 CLS를 포함한 MTS의 일부 작업 프로그램과 일부는 Plus 또는 GOM과 같은 고급 언어로 작성된다. 사용자 프로그램은 조립자에서 사용 가능한 상위 언어에 이르기까지 광범위한 언어로 작성된다.

공유 가상 메모리에 로드된 사용자 프로그램, CLS 및 서브루틴을 포함한 시스템의 대부분의 구성 요소는 디버깅이 가능하며 시스템 종료 없이 시스템이 실행되는 동안 많은 수의 새 버전을 설치할 수 있다.감독관과 일부 취업프로그램의 일부를 제외한 모든 구성부품의 비공개 사본으로 교체할 수 있다.MTS 작업 프로그램(TMTS)의 "테스트" 버전은 정규 생산 환경에서 테스트를 할 수 있도록 제공된다.SWAT는 일반적으로 사용자 프로그램을 디버깅하는 데 사용되는 심볼릭 디버깅 시스템을 MTS 디버깅에 사용할 수 있는 인터페이스로,[7] $PEEK는 프로그램 이벤트 기록(PER)과 다른 시설을 사용하여 하나의 작업 프로그램을 디버깅하는 것을 용이하게 하는 특권 MTS 명령이다.[7]이런 식으로 디버깅할 수 없는 구성 요소는 MTS 가상 머신(사용자 프로그램)에서 실행하면 디버깅이 가능하다.

감독자

UMMPS(University of Michigan Multi Programming Supervisor)는 MTS 감독관의 이름이다.[8]시스템에서 S/360 감독자 상태에서 실행되는 유일한 부분은 UMMPS이다.가상 메모리(재할당)가 꺼져 있고 하드웨어 인터럽트가 비활성화된 상태에서 실행된다.다중 프로세서 구성의 경우 둘 이상의 프로세서에서 동시에 실행될 수 있다.비록 UMMPS가 그 용어가 일반적으로 사용되기 훨씬 전에 개발되었지만, UMMPS는 오늘날 마이크로커널이라고 불릴 것이다.

작업에 UMMPS는 S/360 또는 S/370 하드웨어의 확장인 것으로 보이며, 다음을 담당한다.

  • 모든 하드웨어 리소스 할당(하드웨어, 실제 메모리, 입력/출력 장치)
  • I/O 작업 스케줄링,
  • 작업 프로그램의 오류로 인한 페이지 인터럽트 및 프로그램 인터럽트를 포함한 모든 하드웨어 인터럽트 처리
  • 다음을 포함한 가상 메모리 구현:
    • VM 주소 할당,
    • 세그먼트 및 페이지 테이블 관리,
    • 저장소 키를 설정하여 보호되거나 읽기 전용 메모리 제공
    • 메모리 참조 및 비트 변경 관리,
    • 명명된 주소 공간 관리(NAS),
    • 수요 페이징을 구현하기 위해 실제 메모리와 보조 스토리지 사이에서 이동해야 하는 시기와 페이지를 결정한다.
  • 다음을 포함한 SVC(Supervisor Call)[9] 및 모니터 통화(MC) 지침을 발행하는 작업 프로그램에 서비스 제공:
    • 작업 시작 및 종료,
    • 입력/출력 작업 시작(채널 프로그램),
    • 타이머 인터럽트 스케줄링,
    • 시스템 운영자와의 통신,
    • 상호 통신 서비스 제공,
    • 작업에서 소프트웨어 잠금 장치를 획득 및 해제할 수 있도록 허용
    • 사용자 모드 프로그램이 일부 가상 메모리 세그먼트와 전체 SVC 범위에 액세스할 수 없는 사용자 및 시스템 모드로 작업 진입 및 이탈 [2]허용
    • 작업 프로그램을 동기화할 수 있는 서비스 제공
    • 작업 프로그램이 가상 시스템 서비스를 제공할 수 있도록 섀도 세그먼트 및 페이지 테이블 및 기타 서비스 제공
  • S/360 또는 S/370 컴퓨터의 일부 모델에는 있지만 전부는 아닌 몇 가지 기계 지침 시뮬레이션
  • BPI(프로그램 인터럽트) 유사 지침에 대한 분기 시뮬레이션,
  • 시스템 검사 오류 복구,
  • 작업 덤프 쓰기(모든 실제 메모리, 모든 작업의 가상 메모리, 일반 레지스터 및 프로그램 상태 단어를 자기 테이프에 기록하여 작업의 현재 실행 상태를 스냅샷으로 만드는 작업)
  • 사용된 프로세서 시간 및 작업에 대한 페이지 인 수 추적
  • 주간 시계 유지 및
  • 진단 추적 테이프 작성 지원

초기화 후 UMMPS는 완전히 인터럽트로 구동된다.그 인터럽트 상사(SVC)[9]에 사용되거나 작업 프로그램에서 참조하는 실제 메모리에 없다 가상 기억 페이지에(MC)전화 지시 직업 프로그램으로 서비스를 요청할 발행된 페이지 결함 인터럽트를 감시하게 될, 프로그램 인터럽트 직업 프로그램이나 우리를 대신하여 직업 프로그램 타이머 인터럽트에 이상 상태에 의해 감염됩니다.교육감독자 내부의 인터럽트, 입출력 서브시스템의 인터럽트, 기계 점검 인터럽트, 외부(프로세서 개시) 인터럽트, 멀티프로세서 구성의 다른 프로세서의 인터럽트.

감독자 상태의 프로그램 중단은 감독자 덤프(머신 상태와 모든 실제 메모리의 내용이 자기 테이프에 기록되는 슈퍼 덤프)에 이어 시스템 재시작(re-IPL)을 초래하는 시스템 장애다.

BPI(프로그램 중단 시 분기)

BPI(프로그램 인터럽트 지점) 사이비 명령은 프로그램 인터럽트 후 일련의 코드가 제어권을 유지할 수 있는 간단한 방법을 제공한다.이것은 매개변수 목록에서 유효한 주소를 테스트하거나, 계산 중에 오버플로, 언더플로 및 기타 예외를 포착하거나, 프로그램 인터럽트가 가능한 상황을 포착하는 데 유용할 수 있다.BPI는 프로그램 중단이 없는 일반적인 경우에 매우 낮은 비용으로 사용할 수 있다.

UMMPS는 특별한 유형의 NOP 명령을 사용하여 BPI(프로그램 인터럽트) 유사 명령을 구현한다.[10]BPI 명령의 형식은 다음과 같다.

BPI M2,D2(B2) [RX]

또는

BC 0,D2(M2,B2) [RX]
Op2 코드 마스크1 베이스2 변위 +---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 0 8 12 16 2022 31

마스크가1 항상 0인 경우, 마스크는2 아래 표에 설명된 이름 또는 값이며, 베이스와 변위는 분기 주소를 지정한다.몇 가지 BPI 지침을 연속으로 제공할 수 있다.BPI 지침은 감독자-상태(UMMPS 자체 내에서)뿐만 아니라 문제-상태에서도 사용할 수 있다.

명령이 프로그램 중단을 야기할 때, BPI 명령인지 결정하기 위해 다음 지침을 점검한다.만약 그렇다면, 발생한 프로그램 인터럽트의 유형을 BPI 명령의 마스크2 부분에 지정된 유형 범주와 비교한다.일치가 있는 경우, 발생한 인터럽트를 반영하도록 조건 코드를 설정하고 분기를 취한다.그렇지 않으면 다음 지시사항이 BPI 지시사항인지 등을 확인하기 위해 점검한다.BPI 전송이 이루어지지 않으면(BPI 명령이 없거나 프로그램 인터럽트 유형이 존재하는 BPI의 마스크와 일치하지 않았기 때문에), 프로그램 인터럽트의 정상적인 처리가 발생한다.

BPI 명령이 정상적으로 실행될 때(이전 지침에 프로그램 중단이 없을 때), NOP 또는 "지점 never" 명령이다.

BPI 인터럽트 유형 범주:

마스크2
이름
마스크2
가치
인터럽트
숫자
인터럽트
이름
조건 코드
브랜치에서.
OPCD 8 1 작전 1
2 권한 있는 작업 2
3 실행 3
OPND 4 4 보호 0
5 주소 지정 1
6 사양 2
7 데이터 3
오비디브 2 8 고정 오버플로 0
9 고정분할 1
10 십진 오버플로 2
11 십진분할당 3
FP 1 12 지수 오버플로 0
13 지수 언더플로 1
14 의의 2
15 부동 소수점 분할 3

작업 프로그램

모든 작업 프로그램은 S/360 문제 상태에서 실행되며, 가상 주소 지정을 활성화하거나 비활성화한 상태에서 실행될 수 있으며, 재입력할 수도 있고 그렇지 않을 수도 있다(작업 프로그램의 둘 이상의 인스턴스 실행이 허용되거나 허용되지 않을 수도 있음).멀티프로세서 구성의 경우 한 번에 하나의 프로세서에서만 작업이 실행되지만 감독자는 다른 시간에 다른 프로세서에 작업을 할당할 수 있다.[8]

MTS 작업 프로그램은 대부분의 사용자가 상호 작용하고 명령 해석, 실행 제어, 파일 및 장치 관리, 회계 서비스를 제공하는 프로그램이다.[4]다른 작업 프로그램은 감독자를 보조한다(페이징 장치 프로세서 또는 PDP, 오퍼레이터 콘솔 작업, 디스크 관리자 또는 DMGR, ...), 공통 또는 공유 서비스(HASP 및 HASPlings를 통한 로컬 및 원격 배치 서비스 또는 나중에 HASP를 대체하기 위해 브리티시 컬럼비아 대학에서 개발한 자원 관리자 또는 RM)또는 시스템 운영자가 상태를 표시하고 다른 방법으로 시스템을 제어할 수 있도록 허용한다(JOB, UNITS, STOP, BlAST, GOOD, START, STOP, STOP, STOP, REW, WTM, ...).

첫 번째 작업 이외의 새로운 작업은 대부분 운영자 작업인 다른 작업으로부터 UMMPS에 요청을 받아 시작한다.IPL과 감독자 초기화 직후 첫 번째 작업인 INIT가 시작된다.

24, 31 및 32비트 주소 지정

처음부터 그리고 평생 동안 24비트 주소 지정을 사용하여 작동한 UMMPS 및 MTS.UMMPS는 IBM S/360-67에서 사용할 수 있는 32비트 가상 메모리 주소를 사용하지 않았다.[11]

1982년 8월 앨버타 대학은 가상 메모리 페이지를 보유하는 데만 16MB 이상의 실제 메모리가 사용되도록 UMMPS를 31비트 주소 지정 모드로 운영하도록 변경하였다.작업 프로그램과 사용자 프로그램은 24비트 주소를 계속 사용했다.

1985년 RPI(Rensselaer Polytechnic Institute)는 S/370-XA를 지원하기 위해 UMMPS를 변경하였으며, 그 중에서도 MTS에 따라 실행되는 사용자 프로그램에 대해 24비트 또는 31비트 주소 지정을 허용하였다. 1990년 미시간 대학에서 31비트 주소를 사용하는 사용자 프로그램이 원활하게 작동하도록 변경되었다. 객체 모듈: 쿨d 31비트 주소 지정(또는 그렇지 않음)을 지원하는 것으로 플래그 지정됨, 컴파일러 및 조립자가 올바른 플래그를 제공하도록 변경됨, 프로그램은 시스템과 사용자 모드 간 전환 시 필요에 따라 24비트 주소 지정 모드와 31비트 주소 지정 모드 간에 전환됨.

보호

MTS는 가상 메모리 하드웨어와 S/360 및 S/370 하드웨어의 감독자 및 문제 상태를 사용하는 강력한 보호 모델을 가지고 있으며, 소프트웨어를 통해 문제 상태 실행을 시스템(권한 또는 보호되지 않음)과 사용자(보호되지 않음) 모드로 나눈다.감독자 주에서는 비교적 적은 수의 코드가 실행된다.예를 들어, 장치 지원 루틴(DSR, 일명 장치 드라이버)은 감독자의 일부가 아니며 감독자 상태가 아닌 문제 상태에서 시스템 모드로 실행된다.[2][12][13]

가상 메모리 및 페이징

1967년 11월 UMMPS에 가상 메모리(VM)와 수요 페이징 지원이 추가되어 MTS는 IBM S/360-67에 추가된 DAT(Dynamic Address Translation) 기능을 사용한 최초의 운영 체제가 되었다.[3]

UMMPS는 4096바이트의 가상 메모리 페이지와 256페이지의 가상 메모리 세그먼트를 사용한다.S/370 하드웨어에서 사용할 수 있는 작은(64페이지) 세그먼트를 사용하기 위해 UMMPS를 조건부로 조립할 수 있었지만, 작업 프로그램은 항상 큰(256페이지) 세그먼트로 표시되었다.2K 및 4K 블록 저장 키가 모두 지원된다.

(1) 실제 메모리, (2) 고속 페이징 장치, (3) 페이징 디스크의 3가지 수준의 스토리지 계층이 있다.고속 페이징 장치로는 IBM 2301 Drum, IBM 2305 Fixed Head File 등이 있으며 회전식 디스크를 시뮬레이션하거나 외부 RAM 기반 스토리지에 보다 효율적인 FBA(Fixed Block Architecture) 액세스를 제공하는 STC 4305 및 Intel 3805와 같은 다양한 제3자 "솔리드 스테이트" I/O 장치가 있다.[14]초고속 페이징 장치는 가능하면 초당 최대 3.0MB로 작동하는 "2바이트" I/O 채널을 사용하여 부착된다.페이징 디스크는 파일 시스템에 사용되는 디스크와는 별개였으며, 고속 페이징 장치가 가득 차면 사용되었다.가상 메모리 페이지는 실제 메모리와 페이징 장치 간에 마이그레이션된다.초기 버전의 MTS 페이지는 개별 페이징 장치 간에 마이그레이션되지 않았다.이후 버전에서는 덜 자주 사용되는 페이지가 고속 페이징 장치에서 페이징 디스크로 마이그레이션되는데, 이때 고속 디바이스가 거의 꽉 차 있었다.이후 이 시스템은 IBM S/370-XA Extended Storage를 스토리지 계층의 두 번째 레벨의 일부로 사용하고 파일 시스템과 페이징에 동일한 디스크를 사용하도록 변경되었다.

가상 메모리는 PDP(Paging Device Processor) 작업 프로그램의 지원을 받아 UMMPS에 의해 관리된다.VM을 작업 프로그램에서 할당 및 해제하고, VM 주소를 할당하고, 실제 메모리를 할당하고, 세그먼트 및 페이지 테이블을 관리하고, 스토리지 키를 설정하고, 참조 및 변경 비트를 관리하고, 어떤 가상 메모리 페이지를 호출할지 결정하고, PDP와 통신한다.새로운 가상 메모리 페이지는 첫 번째 참조 시 x'81의 "핵심 상수" 값으로 초기화된다.

PDP는 실제 메모리 작업 프로그램이다.페이징 장치의 공간을 할당하고, 페이징 장치에 모든 I/O를 개시하며, I/O 오류로부터 복구를 담당하며, UMMPS와 통신한다.

UMMPS가 충돌할 가능성을 줄이기 위해 "빅 작업 메커니즘"을 사용하여 임계값보다 실제 페이지가 많은 작업을 식별하고, 주어진 시간에 실행할 수 있는 이러한 "빅" 작업의 수를 제한하며, 빅 작업이 실행될 때 연장된 시간 조각을 제공한다.이렇게 하면 큰 작업이 실제 메모리 페이지를 더 많이 축적하고 타임슬라이스가 끝나기 전에 해당 페이지를 더 잘 활용할 수 있지만, 제한된 실제 메모리 페이지를 위해 경쟁하는 큰 작업이 너무 많을 경우 큰 작업은 시간 슬라이스 사이에 더 오래 기다리게 된다.큰 업무(Big Job Threshold 또는 BJT)로 간주되기 전에 직무가 가질 수 있는 페이지 수, 실행 대상이 되는 큰 업무(NBJ)는 전체 시스템 부하를 기준으로 20초마다 감독자 외부에서 재평가 및 설정되는 외부 매개변수다.

빅 작업 메커니즘 외에 UMMPS 스토리지, 프로세서, I/O 스케줄링이 독립적이며, 각 영역은 "자신을 관리"할 수 있다.

가상 메모리는 다음과 같이 영역으로 나뉜다.

  • 세그먼트 0: 공유 가상이 실제 메모리와 동일함(읽기 전용)
  • 세그먼트 1~4: 공유 가상 메모리(읽기 전용)
  • 세그먼트 5: 개인 가상 메모리(시스템 세그먼트, 시스템 모드(보호되지 않은) 프로그램에만 사용 가능)[2]
  • 세그먼트 6 ~ 12: 개인 가상 메모리(사용자 세그먼트, 모든 프로그램에 읽기/쓰기)[5]

시간이 지남에 따라 다양한 영역에 서로 다른 수의 세그먼트가 할당되었고 31비트 주소 지정과 16비트 이상의 VM 세그먼트를 사용할 수 있게 되면서 영역은 다음과 같이 확장되었다.

  • 세그먼트 0: 공유 가상이 실제 메모리와 동일함(읽기 전용)
  • 세그먼트 1~5: 공유 가상 메모리(읽기 전용)
  • 세그먼트 6-7: 개인 가상 메모리(시스템 세그먼트, 시스템 모드(보호되지 않은) 프로그램에만 사용 가능)
  • 세그먼트 8: NAS(Named Address Space) 첨부용 공유 가상 메모리(읽기 전용)
  • 세그먼트 9-55: 프라이빗 가상 메모리(사용자 세그먼트, 모든 프로그램에 읽기-쓰기)
  • 세그먼트 56-59: 개인 가상 메모리(시스템 세그먼트, 시스템 모드(보호되지 않은) 프로그램에만 사용 가능)
  • 세그먼트 60-63: NAS(Named Address Space) 첨부용 공유 가상 메모리(읽기 전용)

일부 실제 메모리는 가상 메모리 주소를 사용하여 주소를 지정할 수 없으므로 UMMPS 또는 실제 메모리 작업 프로그램에서만 사용할 수 있다.읽기 전용 가상 메모리는 메모리 보호를 해제하는 권한 있는 프로그램에 의해 변경될 수 있다(보통 매우 제한된 시간 동안).

명명된 주소 공간(NAS)은 가상 메모리의 명명된 세그먼트를 첨부할 수 있다.이들은 주어진 직업의 가상 주소 공간에서 연결 및 분리될 수 있는 공유 가상 메모리 공간이며, 동일한 주소는 어떤 명명된 주소 공간이 부착되는지에 따라 다른 내용을 가질 수 있다.MTS는 마법의 16MB 라인 이하에서 VM 주소 공간을 사용하지 않고 공유 가상 메모리를 확장하는 방법으로 시스템 구성 요소가 사전 탑재된 VM 세그먼트를 연결하기 위해 NAS 지원을 주로 사용하며, 따라서 이 귀중한 주소 공간을 24비트 사용자 프로그램에서 사용할 수 있도록 유지한다.

Signon 및 프로젝트 ID

MTS를 사용하는 모든 사람에게는 서명 ID(사용자 ID 또는 컴퓨팅 센터 ID, CCID라고도 함)[4]가 할당된다.서명 ID는 항상 4자 길이로 되어 있다.필요한 경우, ".$" 문자열을 사용하여 더 짧은 ID가 자동으로 오른쪽에 패딩된다.따라서 ID "MTS", "DAB", "ME$" 또는 "C.$"는 각각 "MTS", "DAB", "ME" 및 "C"로 기록될 수 있다.

서명 ID는 ($SIGN 명령의 일부 또는 그 직후에 더 자주) 각 세션 시작 시 부여해야 하는 비밀번호를 사용하여 보호된다.새 작업을 제출한 동일한 ID로 실행되는 *BACH*를 통해 제출된 작업, 특정 시간 또는 특정 날짜에 반복적으로 실행되도록 예약된 작업, 작업 일정을 지정한 동일한 ID로 실행되는 작업 또는 운영자의 콘솔에서 시작된 작업 등은 예외 사항이다.비밀번호는 1~12자, 소문자는 대문자로 변환하고, 쉼표와 공백 이외의 특수문자는 허용한다.암호는 $SET PW 명령을 사용하여 변경할 수 있다.터미널 세션에서 암호를 변경하려면 원래 암호를 입력해야 하며, 확인을 위해 새 암호를 두 번 입력해야 한다.

잘못된 암호를 입력하면 다음 번 성공한 로그온 시 사용자에게 보고된다.성공적인 입력 없이 너무 많은 비밀번호 오류가 시스템 운영자에게 보고되고, 성공적인 입력 없이 여전히 더 많은 비밀번호 오류는 사업소 직원에 의해 재설정될 때까지 사인온 ID를 "잠금" 상태로 만들 것이다.패스워드 입력 실패 사이에 짧은 지연이 도입되어 다수의 패스워드 "게시인"이 신속하게 만들어지지 않도록 한다.

개인은 다른 과정, 다른 연구 프로젝트 또는 다른 자금 출처(대학, 정부, 비영리, 산업 등)에 사용하기 위해 여러 개의 ID에 서명할 수 있다.개인에 의한 서명 ID 공유는 금지되지만 실제로 발생한다.

서명 ID는 프로젝트로 그룹화된다.각 사인온 ID는 하나의 프로젝트 구성원이며 하나의 프로젝트에만 해당된다.프로젝트 ID는 사인온 ID와 마찬가지로 4자 길이다.많은 프로젝트는 $ACCOUNTING MANAGNATION 명령을 사용하여 프로젝트의 구성원인 계정(프로젝트에 할당된 리소스 제한 내에서)에 리소스를 할당할 수 있는 "프로젝트 리더" 서명 ID에 의해 제어된다.

사인온과 프로젝트 ID는 파일에 대한 액세스를 제어하고 이메일을 보내는 데도 사용된다.

한 가지 예외를 제외하고는 ID 자체로 인해 "특수" 권한을 가진 서명 ID가 없다.대신 특정 사인온 ID를 허용하는 플래그를 설정할 수 있다.

  • 공용 파일 작성 및 공용 프로그램 키 설정
  • 0 또는 마이너스 통장 잔액으로 운영한다.
  • 다음을 포함한 권한 있는 작업을 수행하십시오.[2]
    • 기본적으로 사용자(보호됨) 모드가 아닌 시스템(시스템)에서 실행되도록 파일 플래그 지정
    • $SET$RUN 명령에서 PROT=OFF 옵션을 사용하십시오.
    • 테스트 명령어 하위 시스템 사용($#CLS),
    • $SYSTATUS 및 기타 CLS(명령 언어 하위 시스템)의 권한 있는 옵션을 사용하십시오.

소유권이나 허가 상태에 관계없이 시스템의 어떤 파일도 읽을 수 있지만 수정하거나 허가할 수 없는 사인온 ID "MTS"는 예외다.MTS. ID는 또한 $SET FILEREF=OFF 옵션을 사용할 수 있어 파일의 파일 참조 날짜가 업데이트되지 않도록 할 수 있다(파일 시스템 문제에서 복구하거나 보안 문제를 조사할 때 유용함).

프로그램이나 사용자가 현재 세션에 로그온할 때 사용한 것 외에 서명 ID의 권한을 가질 수 있는 기능은 없다.대신 프로그램과 파일은 특정 서명 ID, 프로젝트 및 프로그램 키 또는 서명 ID, 프로젝트 및 프로그램 키의 조합에 허용될 수 있다.

터미널, 배치 및 서버 세션

MTS는 터미널, 배치 및 서버 세션을 지원한다.[4]세 사람 모두 같은 명령어를 사용한다.

  • 터미널 세션은 오류 메시지와 프롬프트를 포함하여 생성된 출력에 응답할 수 있는 사용자와 대화형이다.
  • 배치 작업은 인터랙티브가 아니므로 배치 작업이 실행되기 시작하면 사용자가 입력(최소한 프로그래밍 없이)을 변경할 기회가 거의 또는 전혀 없이 모든 입력을 미리 준비해야 한다.
  • 서버 세션은 MTS에서 MTS로의 사용자 또는 클라이언트에서 MTS로의 상호작용을 지원할 수 있으며, 사용자와 상호작용이 있을 수 있지만 MTS 명령은 대개 명령 파일에서 읽으며 사용자는 MTS 명령을 알거나 입력할 필요가 없을 것이다.서버 세션은 사용자에게 무료인 것처럼 보일 경우 후원할 수 있으며, 사용자가 ID와 비밀번호를 입력할 필요가 없다.또한 서버 세션은 유효한 ID와 비밀번호를 위해 충전될 수 있으며, 필요한 경우서버 세션은 $MOUNT 명령을 사용하여 네트워크 또는 MTS 세션 내에서 시작할 수 있다.

앨버타 대학은 1971년 FORTRAN, ALGOL, PL/C, 360 Assembler에서 프로그램을 배우는 학부생들에게 빠른 직업 전환을 제공하기 위해 학생 지향 배치 시설을 개발했다.5분 턴어라운드를 제공하는 전용 펀치 카드 입력 프린터 출력 시스템이었고, 주당 수천 개의 일자리를 고정 비용(15센트)으로 운영했다.

명령어

MTS는 초기 사용자의 단자 또는 배치 입력 스트림인 *SOURCE* 유사 장치에서 명령을 읽는다.[4]프로그램은 CMD, CMDNOE 및 COMMAND 서브루틴을 호출하여 MTS 명령을 실행할 수 있다.[5]

선행 및 후행 공백과 null 및 모든 빈 라인은 무시된다.별표(* 또는 $*)로 시작하는 행은 코멘트로 처리한다.연속 문자로 끝나는 명령행(기본적으로 마이너스 부호)은 다음 줄에서 계속된다.명령줄은 최대 255자까지 사용할 수 있다.

MTS는 키워드 지향 명령과 명령 옵션을 사용한다.명령 동사(SIGNON, RUN, EDIT, ...)는 명령행의 첫 번째 키워드다.명령어는 옵션인 달러 부호($SIGN, $RUN, $EDIT, ...)로 시작할 수 있다.배치 작업에서 잘못된 명령과 일부 다른 오류에 이어 MTS는 실행할 다음 명령으로 1열에서 달러 부호($)로 시작하는 다음 줄을 찾는다.모든 명령과 대부분의 명령 옵션에는 초기 하위 문자열 약어(C for Copy, RR for RUN, DEBUG, ...)가 허용된다.MTS 명령과 대부분의 명령 옵션은 대소문자를 구분하지 않는다.

MTS에는 "원샷" 명령(CREATE, FILESTATUS, SIGNOFF, ...)과 하위 명령 모드가 있는 명령(EDIT, CALC, SYSTATUS, ...)이 있다.하위 명령 모드가 있는 대부분의 명령은 명령줄에 하나 이상의 하위 명령을 부여하여 원샷 명령으로 호출할 수도 있다.

모든 MTS 작업은 SIGNON 명령으로 시작하고 대부분 SIGNOFF 명령으로 종료된다.명령은 파일에 저장되고 SOURCE 명령을 사용하여 실행할 수 있다.명령은 항상 SIGN 명령 직후에 실행되는 signon 파일(sig 파일) 또는 project-signon 파일(projectsig 파일)에 저장할 수 있다.시그널 파일의 실행은 필수(SIGFILEATTN=OFF) 또는 선택(SIGFILEATTN=ON, 기본값)일 수 있다.

MTS 명령 목록

글로벌 컨트롤

SIGNON {cid * } [ 옵션 ... ] [ 설명 ] SIGNOFF [ SHORT $ Long ] [ RIVERS NOREEIPTS ] 회계 [ 옵션 … ] 회계 관리 주석 [ 텍스트 ] 표시 항목 [출력=FDname ] SET 옵션 ...SINK [ FDname 이전 ] 소스 [ FDname 이전 ] 시스템상태 [ 옵션 ] #CLS FDname [ 옵션 ] (테스트 CLS를 실행하는 권한 있는 명령)[7]

파일 관리

CREATE  filename  [ SIZE={ n nP } ]  [MAXSIZE={n nP} ]  [TYPE={LINE   SEQ   SEQWL} ]    DESTROY  filelist  [ OK   ALLOK   PROMPT ] DUPLICATE  oldname  [ AS   TO ]  newname  [ options ] [ OK   ALLOK   PROMPT ] EDIT  [ filename ]  [ :edit-command ] EMPTY [ filelist ]  [ OK   ALLOK   PROMPT ] TRUNCATE  filelist  [ ALLOK   PROMPT ] RENAME  oldname  [ AS ]  newname  [ OK   ALLOK   PROMPT ] RENUMBER  filelist  [ first [ last [ begin [ increment ] ] ] ]  [ ALLOK   PROMPT ] FILESTATUS  [ filelist ]  [ format ]  [ items ] FILEMENU  [ filelist ]  [ items ] FMENU  [ filelist ]  [ items ] PERMIT filelist  [ access [ accessor ] ] PERMIT filelist  LIKE  filelist2  [ EXCEPT access [ accessor ] ] LOCK filename [ 어떻게 ] [ WAIT NOQUIT ] [TOP NOQUIT ] 잠금 해제 파일 이름 LOCSTATUS [ JOB nnnn ] [ LOCK ] LACUST 파일 이름 JOB nnnnn ] [ LOCK ] [ WAIT ]

파일 및 장치 관리

COPY  [ FROM ]  { FDlist1  'string' }  [ [ TO ] [ FDlist2 ]  CREATE  *pdn*  TYPE={ PRINT   IMPORT   EXPORT   DUMMY } DESTROY *pdn*  [ OK   ALLOK   PROMPT ] LIST  FDlist  [ [ ON   TO ]  FDname ]  [ [ WITH ] option ... ] LIST  FDlist WITH  options [ {ON   TO} FDname ] LIST MOUNT  [ request [; request ] ... ] CANCEL  *...* [ [ JOB ] nnnnnn ]  [ {ID   CCID}=ccid ] RELEASE  { *PRINT*   *PUNCH*   *BATCH*   *pdn* } LOCATE  { SYSTEM   LOCAL   FULL   SHORT   HELP } LOCATE  { jobnumber jobname }  [ option  ...  ] VIEW  [ jobnumber [ ; view-command ] ] LOG  [ FDname1 ]  { [ ON ] FDname2 [ format ]  [ options ]   OFF } FTP  [ hostname ] GET  FDname  (old fashioned and obsolete, 그러나 때로는 여전히 유용한 [7]NUMBER([7]파일에 데이터를 입력하는 구식 및 구식 방법)

사용자 프로그램 실행 및 제어

RUN [ FDname ] [ I/Units ] [ 옵션 ] ...[ PAR=parameters ] REASN [ ECO NOECHO ] [ I/Onits ] [ 옵션 ] ...[ PAR=parameters ] DEBUG [ FDname ] [ I/Units ] [ 옵션 ] ...[ PAR=parameters ] SDS [sd-command ] LOAD [FDname ] [ I/Onits ] [ 옵션 ] ...[ PAR=parameters ] START [ [ AT ] [ RF={hhh GRx} ] 위치 ] [ I/Onits ] [ 옵션 ] ...RESTART [ [ AT ] 위치 ] [ I/Onits ] 옵션 ] ...[ CLS=clsname ] ALDER 위치 값 ... ...디스플레이 [ 형식 ] 위치 [ OUTPUT=FDname ] DUMP [ 형식 ] [ OUTPUT=FDname ] RUNRC 조건 정수인 경우 MTS-명령 ERRODUMP(솔루트 명령어, 사용자 프로그램의 비정상 종료 후 배치 모드에서 자동 덤프를 발생)[7]

잡다한

(, 구식달러 Calc에 의해 대체되)[7]HEXSUB한 공개 파일에(, 구식달러 Calc에 의해 대체되)[7]PASSWORD(더 이상 쓸모 없는 상태 제거한 수 변화[hexnumber2][hexnumber1]연합 공군 군수 위원회[표현]MESSAGESYSTEM[message-command]FSMESSAGE HEXADD[hexnumber1][hexnumber2][.network-command]NET[호스트 *pdn*][FSMessage-command].          bef실제 공유 파일 액세스가 가능함)

파일 이름 패턴

파일 이름 또는 파일 이름 목록을 사용하는 여러 MTS 명령에서는 파일 이름 패턴(복사, 파괴, 복제, 비우기, 편집, 파일스타투스, 파일메뉴, 목록, 잠금상태, 허용, 이름 변경, 번호 변경, 트렁크ATE)을 사용할 수 있다.물음표(?)는 패턴 일치 캐릭터다.파일 이름에 사용되는 단일 물음표는 0자 이상과 일치한다. "?"는 현재 서명 ID의 모든 파일과 일치한다. "?S는 "로 끝나는 모든 파일과 일치한다.S", "A?B"는 "A"로 시작하고 "B"로 끝나는 모든 파일과 일치한다."C"는 "A"로 시작하고 "C"로 끝나며 "B"를 포함하는 모든 파일과 일치한다.연속된 두 개 이상의 물음표가 "n-1" 문자와 일치한다. "???"S"는 "로 끝나는 네 개의 파일 이름과 모두 일치한다.S, 그리고 "??"는 세 글자의 파일 이름과 모두 일치한다."W163:?"는 현재 사용자가 일부 액세스 권한을 가지고 있는 서명 ID "W163"의 모든 파일과 일치한다.

명령 매크로스

MTS 명령 매크로 프로세서를 통해 사용자는 자신의 MTS 명령을 정의할 수 있다.[15]조건부 명령어와 함께 "스크립팅" 언어를 제공하며, 사용자 프로그램이나 명령어 하위 시스템에서 *SOURCE*에서 읽은 모든 라인과 MTS 명령어와 함께 사용할 수 있다.매크로 프로세서 라인은 보통 큰 문자(>)로 앞에 붙는다.명령 매크로 프로세서는 $SET 명령뿐만 아니라 FDnames의 I/O 수식어를 사용하여 제어된다.

접두사 문자

사용자가 작업 중인 명령, 명령 하위 시스템 또는 프로그램을 추적하고 입력이 필요할 때 MTS는 접두사 문자나 때로는 사용자 단말기에 쓰는 각 입력 및 출력 라인의 전면에 접두사 문자열을 표시한다.공통 접두사는 다음과 같다.

# MTS 명령 모드 #- MTS 명령 계속 모드 ? 프롬프트 > Copy 및 LIST 명령어. 프로그램 로더 빈 사용자 프로그램 : 편집기 + SDS(Symbolic Deverging System) @ Message System FTP(파일 전송)

명령어 하위 시스템

MTS 작업 프로그램은 항상 여러 명령어 하위 시스템 또는 CLS 중 하나를 실행한다.많은 MTS 명령은 MTS에 내장되어 있으며 MTS CLS의 일부로 실행된다.사용자 프로그램은 USER CLS로 실행된다.USER CLS는 디버거가 활성 상태일 때 SDS CLS(Symbolic Debuging System)와 특별한 관계가 있다.다른 MTS 명령은 별도의 모듈로 구현되며, 명령어 하위 시스템 또는 CLS라고도 혼동하여, 공유 가상 메모리에서 실행되거나 파일에서 로드될 수 있다.

이러한 분리된 CLS는 각각 4개의 문자 이름을 가지고 있으며, 용어 본래의 의미에서는 별도의 CLS로 실행된다.이러한 CLS 중 많은 부분(전부는 아님)이 자체적인 하위 명령어를 제공한다.$SET 명령 옵션은 현재 버전이 아닌 이전 버전의 CLS 또는 새로운 버전의 CLS를 발생시킨다.$UNload 명령에는 CLS를 언로드하는 옵션이 있다(사용 중인 가상 메모리를 해제하고 FDNAME을 닫은 후 열려 있는 모든 디바이스 또는 유사 디바이스를 해제함).[7]

한 번에 하나의 CLS만 실행 중이지만, 각 유형의 CLS가 활성화되어 있을 수 있으며, 원본 CLS를 종료하거나 언로드하지 않고 CLS에서 다른 CLS로 전환한 후 나중에 원래 CLS로 복귀하여 한 CLS가 중단된 곳에서 계속 작업할 수 있다.자체 하위 명령이 있는 CLS는 대개 CLS, MTS 및/또는 RETURN 명령을 종료하는 STOP 명령을 지원하여 호출 CLS 또는 MTS 명령 모드로 돌아가며, 달러 신호($)로 시작하는 명령은 원래 CLS로 즉시 복귀하는 MTS 명령으로 실행된다.

USER CLS를 제외한 모든 CLS는 문제 상태의 시스템 모드에서 실행된다.

제한된 서비스 상태

MTS 세션은 일반적으로 "전체 서비스 상태"에서 작동하지만, 시스템 과부하 터미널 세션이 극한 시간 동안 "제한 서비스 상태"(LSS)로 전환될 수 있다.[4]LSS 메커니즘은 시스템 운영자에 의해 수동으로 활성화되며, 일반적으로 하드웨어 시스템이 오작동으로 인해 감소된 용량으로 작동 중일 때만 사용된다.

시스템 운영자에 의해 LSS가 활성화되어 있고 시스템이 Signon에서 과부하된 경우 터미널 세션이 LSS에 배치된다.LSS 세션은 MTS 명령만 실행할 수 있으며 로컬 시간 제한이 짧은 프로그램을 실행할 수 있다.LSS는 모든 사용자에게 낮은 성능을 제공하는 대신, 다른 사용자가 더 큰 작업에 대해 합리적인 성능을 받을 수 있도록 파일 편집, 메시지 읽기 등 비교적 작은 작업으로 일부 사용자가 수행할 수 있는 작업의 크기를 제한한다.사용자는 자신의 세션을 전체 서비스 상태($SET LSS=OFF)로 변경할 것을 요청할 수 있으며, 요청이 있을 때 시스템에 과부하가 걸리지 않을 경우 그러한 요청이 부여된다.

명령 통계

실행된 각 MTS 명령은 디스크 파일에 먼저 기록되고 나중에 자기 테이프에 기록된다.이 정보는 직원만 사용할 수 있으며 소프트웨어 문제, 보안 문제, 리베이트 요청을 조사하고 명령 언어 사용 방법에 대한 통계를 제공하는 데 사용된다.

사용자 프로그램

User program은 사용자가 운영하는 프로그램을 말하며, 반드시 사용자가 소유하거나 사용자가 만든 프로그램이 아니다.사용자 프로그램은 공개 파일, OD: 또는 NEW: Signon ID에 따라 사용 가능한 파일, 다른 사용자의 파일에 제공되어 다른 사용자가 사용할 수 있도록 허용되거나, 현재 사용자가 소유한 파일에서 사용자 프로그램을 개발할 수 있다.

사용자 프로그램은 $RUN, $RUN 및 $DEBUG 명령을 사용하여 실행되거나 $LOAD$START 명령을 사용하는 빈도가 낮다.$RESTART 명령을 사용하여 프로그램이 처리하지 않은 주의 인터럽트, 프로그램이 처리하지 않은 프로그램 인터럽트(프로그램 인터럽트 후 재시작은 일반적으로 잘 작동하지 않지만) 또는 MTS 서브루틴으로 호출에서 MTS로 명시적으로 복귀한 후 프로그램의 실행을 재시작할 수 있다.

MTS loads programs using a dynamic linking loader (UMLOAD) that reads loader records (ESD, TXT, CSI, RDL, LCS, END, ...) from the file or device specified by the user and will selectively include subroutines from libraries supplied by the user, from system subroutine libraries such as *LIBRARY, and from system subroutines pre-loaded in shared virtu기억력MTS는 표준 OS/360 로더 레코드를 사용하므로 MTS는 다른 IBM 운영 체제에서 사용하기 위해 개발된 컴파일러를 상당히 쉽게 사용할 수 있다.[3]

프로그램이 실행을 시작하면 $RUN 또는 다른 명령에서 또는 기본적으로 다수의 논리적 I/O 단위가 설정된다.PAR= 키워드 뒤에 주어진 텍스트 문자열은 파라미터로 프로그램에 전달된다.

기본적으로 사용자 프로그램은 프로그램 키 *EXEC로 실행되지만 $Control 명령을 사용하여 다른 프로그램 키를 설정할 수 있다.[4]프로그램은 사용 중인 프로그램 키를 단축하거나 *EXEC 프로그램 키로 전환하기 위해 시스템 서브루틴을 호출할 수 있으며, 따라서 일시적으로 프로그램 키를 사용하여 제어되는 파일, 장치 및 기타 서비스에 대한 접근성이 떨어질 수 있다.프로그램들은 또한 시스템 서브루틴을 호출하여 미리 설정된 규칙에 따라 프로그램 키를 늘리거나 복원할 수 있다.

MTS는 OS/360에서 사용되는 표준 S-type과 R-type 호출 시퀀스를 덜 자주 사용한다.[5]

기본적으로 사용자 프로그램은 문제 상태의 사용자 모드에서 실행된다.[2]사용자 모드 프로그램은 시스템 가상 메모리 세그먼트에 대한 액세스 권한이 없으므로 시스템 제어 블록에 대한 액세스 권한이 없으며, 권한 있는 시스템 서브루틴을 호출하지 않으며, 권한 있는 감독자 호출(SVC)을 발행하지 않을 수 있다.사용자 모드 프로그램은 권한 없는 SVC를 발행할 수 있지만, 직접 그렇게 하고 대신 시스템 서브루틴을 호출하여 시스템 서비스를 얻을 수 있는 프로그램은 거의 없다.사용자 모드 프로그램은 특정 발신자에게 보호 서비스가 허용되는지 확인한 후 시스템 모드로 전환되는 시스템 서브루틴을 호출할 수 있으며, 시스템 서브루틴이 반환될 때 사용자 모드로 복귀한다.

선택된 사용자 프로그램은 권한 있는 서명 ID를 가진 직원이 사용자 모드가 아닌 시스템에서 실행되도록 플래그를 지정하거나 권한을 가진 직원이 $RUN 또는 $SET 명령의 키워드를 사용하여 사용자 프로그램을 시스템 모드로 실행하도록 할 수 있다.[7]

장치 독립 입력/출력

모든 입력/출력 요청은 MTS 작업 프로그램 자체 또는 MTS에서 실행되는 프로그램에 의해 공통 서브루틴 호출 집합(GETFD, FREEFD, READ, WRITE, CONTROL, GDINFO, ATNTRP, ...)을 사용하여 수행된다.어떤 프로그램이 I/O를 하고 있든, 그리고 어떤 파일이나 장치(타입 작성기 또는 그래픽 단말기, 라인 프린터, 카드 펀치, 디스크 파일, 마그네틱 및 종이 테이프 등)를 사용하든 동일한 서브루틴을 사용한다.이러한 서브루틴을 사용하기 위해서는 시스템 제어 블록의 형식이나 내용에 대한 지식이 필요하지 않다.프로그램은 특정 장치의 특정 특성을 사용할 수 있지만 그러한 프로그램은 장치 독립성이 다소 떨어질 것이다.

MTS 입력/출력 기록 또는 라인 지향.터미널, 카드 판독기, 디스크 파일 또는 테이프에서 회선을 읽고 회선을 터미널, 프린터, 디스크 파일 또는 테이프에 쓰는 프로그램.ASCII/EBCDIC 및 종단 처리로의 변환은 일반적으로 프런트 엔드 프로세서 또는 DSR(장치 지원 루틴)에 의해 수행되므로 대부분의 프로그램에서는 문제가 되지 않는다.단자에 문자열을 읽거나 적어서 문자 I/O를 할 수는 있지만, 이렇게 짧은 행을 많이 읽거나 쓰는 것은 그리 효율적이지 않다.

읽거나 쓴 각 행은 0에서 32,767바이트의 데이터와 선의 위치를 제공하는 관련 행 번호(서명 정수 번호 1000으로 스케일링됨)로 구성된다.각 행의 읽기 또는 쓰기의 길이는 명시적으로 주어지기 때문에 프로그램은 행 엔딩 문자(CR/LF, NL)나 다른 터미네이터(null)의 자체 처리를 할 필요가 없다.어떤 기기는 제로 길이 선을 지원하는 반면, 다른 기기는 그렇지 않다.많은 파일과 장치의 경우 라인 번호는 단순히 읽은 라인의 순차적 카운트일 뿐이며, 일부 파일 형식은 특정 라인 번호를 파일의 각 라인과 명시적으로 연결하며, 다른 경우 라인 번호는 입력 라인의 시작 부분에 나타나는 데이터로부터 합성되거나 라인 번호가 출력 라인으로 선행될 수 있다.

파일 또는 장치 이름

입력/출력은 파일 또는 장치를 이름(FDname)으로 직접 참조하거나 논리 I/O 장치(SCARDS 또는 INPUT, SPRINT 또는 PRINT, SPOUNCH 또는 OBject, GUSER, SERCOM, 0~99)를 참조하여 간접적으로 수행한다.FDnames는 명령어 또는 기본적으로 키워드를 사용하여 논리적 I/O 장치에 할당된다.

FDnames는 MYFILE과 같은 간단한 파일 이름, >T901과 같은 큰 기호가 앞에 붙은 단순한 장치 이름 또는 *PRINT*와 같은 유사 장치 이름일 수 있다.모든 FDnames는 사용하기 전에 대문자로 변환되므로 MTS 명령처럼 FDnames는 대소문자를 구분한다.

I/O 수정자, 라인 번호 범위 및 명시적 결합을 사용하여 단순한 FD 이름에서 복잡한 FD 이름을 만들 수 있다.예를 들면 다음과 같다.

FILE1@-TRIM(후행 공백을 유지하는 I/O 수식어) FILE2(1,10) (1 ~ 10포함까지 줄을 읽는 라인 수 범위) FILE3+*SOURCE* (탐색 연결) FILE4(1,10)@-TRIM+*TAPE*@-TIM (위 모든 것을 단일 복합 FDNAME)

유사 장치 이름

PDN(Pseudious Device Name)은 별표(예: *name*)로 시작하고 종료한다.일반적인 유사 장치에는 다음이 포함된다.

  • *SOURCE* 표준 입력(일반적으로 터미널 또는 배치 작업의 경우 입력 대기열);
  • *SINK* 표준 출력(일반적으로 터미널 또는 배치 작업용, 프린터);
  • *MSOURCE* 마스터 소스, 재할당 불가, 일반적으로 터미널 또는 카드 판독기;
  • *MSINK* 마스터 싱크, 재할당 불가, 일반적으로 터미널 또는 프린터;
  • *BATH* 새 배치 작업에 대한 스풀 입력.
  • *PRINC* 배치 작업의 *MSINK*와 동일한 프린터로 출력 스풀링;
  • *PUNCH* 출력이 카드 펀치에 스풀링됨(카드 펀치가 회수될 때까지)
  • *DUMMY* 기록된 모든 데이터는 폐기되고 모든 읽기는 End-of-File(유닉스용 /dev/null)을 반환하며,
  • *AFD*[7] $GET 명령을 사용하여 설정된 활성 파일 또는 장치

$SOURCE 및 $SINK 명령은 *SOURCE* 및 *SINK*에 할당된 FD 이름을 재할당하기 위해 사용할 수 있다.$MOUNT 명령은 유사 장치 이름(예: *T22*, *NET*)을 자기 및 종이 테이프와 네트워크 연결(서버 연결 포함)과 같은 장치에 할당한다.$CREATE 명령을 사용하여 BITNET 가져오기 및 내보내기, 스풀링된 인쇄 작업 및 더미 장치에 사용할 유사 장치 이름을 만들 수 있다.

I/O 한정자

I/O 수식어(부정될 수 있음)를 FDname과 연결하여 기본 동작을 수정할 수 있다.

I/O 수식어는 수식어 이름을 FDname에 추가한 다음 수식어 이름을 추가하여 지정한다.예를 들어 *SOURCE*@UC *SOURCE*에서 읽은 라인이 프로그램에 표시되기 전에 대문자로 변환되고 MYFILE@UC@-TRIM은 MYFILE에서 읽은 라인이 대문자로 변환되며 라인 끝의 모든 후행 공백이 유지된다.Some commonly used I/O modifiers are: @S (sequential), @I (indexed), @FWD (forward), @BKWD (backward), @EBCD (EBCDIC), @BIN (binary), @UC (uppercase), @CC (logical carriage control), @MCC (machine carriage control), @NOCC (no carriage control), @TRIM (trim all but last training blank).일부 I/O 수정자는 MTS에 의해 장치 독립 방식으로 처리되며 다른 I/O 수정자는 장치에 종속되어 DSR(장치 지원 루틴)에 의해 처리된다.

모든 파일이나 장치가 모든 I/O 수정자를 지원하는 것은 아니다.파일 및 장치마다 기본 I/O 수식어가 다르며 $SET 명령을 사용하여 몇 가지 I/O 수식어 기본값을 변경할 수 있다.

라인 번호 범위

파일이나 장치의 특정 부분은 쉼표로 구분된 괄호 안에 시작 및 끝 라인 번호와 라인 번호 증분을 포함함으로써 참조될 수 있다.라인 번호와 증분은 1000으로 크기가 조정된 정수이며 양수 또는 음수(±nnnn.nnnn)일 수).예를 들어 SOMPLE.F(-35,197.5)는 -35보다 크거나 같은 첫 번째 줄 번호에서 시작하여 197.5보다 큰 첫 번째 줄 번호 대신 '파일 끝' 파일을 반환한다.또한 줄 번호 증분을 포함할 수 있다(예: 단순).F(2,200,2)는 2에서 200 사이의 짝수 번호(포함)를 모두 반환한다.

기호 라인 번호 FERT 또는 *F, LAST 또는 *L, MINMAX는 각각 첫 번째, 마지막, 최소 가능 및 최대 가능 라인을 가리킬 수 있다.예를 들어 SOMPLE.F(*F,0)SIMPLE.F 파일의 '음성' 줄을 가리킨다.프로그래머가 (종종 이진 파일)에 대한 자체 문서를 배치할 수 있는 위치인데, 파일의 실제 데이터는 1번 라인에서 시작한다.

또한 기호 선 번호로 간단한 덧셈 뺄셈을 할 수 있다: FIRST ±m, LAST±m, *L±m, MIN+m, MAX-m. 여기서 m은 1000(±nnnn.nnnn)만큼 스케일링된 소수점을 갖거나 스케일링하지 않는 정수다.따라서 기존 파일의 끝에 새 줄을 추가하려면 단순 형식의 FDname을 사용할 수 있다.F(LAST+1)

파일 또는 장치 연결

명시적 결합을 통해 NAMEA+NAMEB로 플러스 기호를 사용하여 FDNAME을 연결할 수 있다.이 경우 MTS는 NAMEA의 내용에 이어 NAMEB의 내용을 투명하게 반환하거나 NAMEA에 글을 쓴 후 NAMEB에 글을 쓰는 것이 파일 끝이나 다른 오류 조건에 도달한다.

암묵적 연결은 입력 라인에 다음 문자열이 포함될 때 발생한다.

$FDname으로 계속 진행  

MTS는 새로운 데이터 소스로 주어진 FDname을 계속한다.또는 양식의 행이 다음과 같은 경우:

$FDname Return으로 계속 진행 

읽히는 MTS는 End-of-File에 도달할 때까지 새로운 FDname의 내용을 반환한 후 원래의 FDname의 다음 줄을 반환한다(참고, 자체적으로 계속되는 파일은 무한 루프, 대개 실수, 때로는 좋은 효과에 사용됨).

이 줄은 달러 표시로 시작하지만 $Continue WITH는 MTS 명령이 아니라 구분 기호다.

@IC I/O 수식어와 $SET IC={ON OFF} 명령을 사용하여 암묵적 결합을 제어할 수 있다.

$ENDFILE 라인

라인에 $ENDFILE 문자열이 포함되어 있는 경우, MTS는 파일의 '소프트' 끝을 반환한다.

이 줄은 달러 표시로 시작하지만 $ENDFILE은 MTS 명령이 아니라 구분 기호다.

@ENDFILE I/O 수식어와 $SET ENDFILE={항상 소스 NEver}을(를) 사용하여 $ENDFILE 처리를 제어할 수 있다.

$9700 및 $9700Control 라인

"$9700" 또는 "$9700Control" 문자열로 시작하는 줄은 제록스 9700 페이지 프린터에서 인쇄 옵션을 제어하기 위해 *PRINT*에 복사하거나 쓸 수 있다.$9700 라인은 발생 지점에서 효력이 발생하며 $9700Control 라인은 발생되는 전체 인쇄 작업에 적용된다.이 선들은 MTS 명령과 유사한 형태를 가지고 있지만, 실제로는 장치 명령이지 참 MTS 명령이 아니다.

파일

IBM 2314 디스크 드라이브 및 IBM 2540 카드 리더/펀치(University of Michigan Computing Center, c. 1968)
IBM 2321 데이터 셀(University of Michigan Computing Center, c. 1968)

MTS 파일은 하나 이상의 공용 또는 개인 디스크 볼륨에 4096바이트 "페이지"로 저장된다.[16]볼륨에는 볼륨 레이블, 볼륨 번호 및 볼륨 이름(일반적으로 MTS001, MTS002, ..., MTSnnn)이 있다.디스크 볼륨은 기존의 실린더 트랙 레코드고정 블록 아키텍처(FBA) 디스크 드라이브에 저장되거나 IBM 2321 Data Cell에 한 번에 저장된다.

개별 파일은 디스크 볼륨에 포함되지 않는다.파일의 최대 크기는 파일이 있는 디스크 볼륨에서 사용 가능한 공간으로 제한된다.기본적으로 파일은 한 페이지 크기로 작성되지만, 최대 크기뿐만 아니라 더 큰 크기($CREATE name SIZE=nP MAXSIZE=nP)도 지정할 수 있다.파일은 최대 크기에 도달하거나 소유자의 사인온 ID에 대한 디스크 공간 제한을 초과할 때까지 자동으로 확장된다.사용자는 특정 디스크 볼륨($CREATE name VOLUE=name)에 파일을 만들 것을 요청할 수 있다.

MTS 파일은 공용 파일, 사용자 파일임시 파일의 세 가지 범주 중 하나로 분류된다.

  • 공용 파일은 이름이 시작되지만 끝나지 않는 파일이며 별표(예: *LIBRARY, *USERDirectory)가 있다.흔히 '스타 파일'이라고 불리는 공용 파일은 모든 사용자가 널리 이용할 수 있는 프로그램과 데이터가 포함된 공개 파일이다.예를 들어 *LIbrary는 일반적으로 사용되는 시스템 서브루틴의 라이브러리 입니다.MTS 초기에는 공용 파일만 공유할 수 있었고 그 다음에는 읽기 전용 파일로만 공유될 수 있었다.나중에 공용 파일은 다른 파일과 동일한 방식으로 허용되고 공유될 수 있다.
  • 사용자 파일은 이름이 별표나 마이너스 기호로 시작하지 않는 파일이다.그것들은 명시적으로 ($CREATE) 만들어지고 ($DESTROY) 파괴되어야 한다.이러한 소유권은 처음에는 사용자만 소유하며 허용된다.생성하지만 다른 사용자가 사용하도록 허용할 수 있는 ID$PERMIT 명령을 사용하는 ID.다른 사용자에게 속한 파일을 참조하려면 파일 이름 앞에 소유자의 사용자가 있음ID 다음에 콜론(예: W163:MYPROGRAM). 사용되는 디스크 공간의 양에 대한 요금이 있으며 대부분의 사인온 ID에는 최대 디스크 공간 제한이 있다.
  • 임시 파일은 이름이 마이너스 기호(예: -TEMP)로 시작하는 파일이다.그들의 이름은 단일 세션 내에서 독특하다.그것들은 처음 사용할 때 암묵적으로 생성되고, 충전되지 않으며, 수화 ID의 디스크 공간 한계에 대해 계산되지 않으며, 터미널 또는 배치 세션이 종료될 때 자동으로 제거된다.

MTS는 디렉토리를 구현하지 않지만, 소유자의 4문자 MTS 사용자 ID 파일 이름에 포함되기 때문에 사실상의 2계층 파일 그룹이 있다.

모든 FD 이름과 마찬가지로 파일 이름은 사용하기 전에 대문자로 변환되므로 대소문자를 구분하지 않는다.

파일 형식

MTS는 세 가지 유형의 파일, 라인 파일, 순차 파일, 그리고 라인 번호 파일들을 순차적으로 지원하지만 라인 파일은 단연코 가장 흔했다.

라인 파일

라인 파일($CREATE name 또는 $CREATE name TYPE=LINE)은 라인 번호별로 인덱싱되고 임의로 액세스할 수 있는 라인 지향 파일이다.허용되는 라인 번호는 ±2147483.647 - 기본적으로 부호화된 정수 값을 1000으로 나눈 값이지만 명령줄 참조는 ±9999.999로 제한되었다.파일에 대한 정기적인 쓰기는 행 번호를 1씩 증가시킨다.선은 가변 길이이며, 선은 주변 선에 영향을 주지 않고 1에서 선 길이 제한(원래 256, 그러나 나중에 32767로 변경) 사이의 어떤 길이로든 다시 쓸 수 있다.기존 선을 0의 길이로 다시 작성하면 주변 선에 영향을 주지 않고 해당 선이 삭제된다.

기본적으로 빈 파일에 쓰여진 첫 번째 줄 번호는 1이며, 이후 쓰일 때마다 1씩 증가한다.기본적으로 파일을 읽는 것은 1번 이상에서 첫 번째 줄 번호로 시작하고 줄 번호를 늘리기 위해 각 줄을 읽는 것으로 계속된다.이는 음수 라인 번호가 파일의 '보이지 않는' 부분이라는 것을 의미하며, 이것은 읽기 위해 특정한 참조가 필요하다.

라인 번호를 다시 매기는 명령(및 시스템 서브루틴)이 있다.파일의 행이 다시 정렬되지 않는 한 연속적인 행 집합은 시작과 증분의 어떤 조합으로도 번호를 다시 매길 수 있다.예를 들어, 파일이 10, 20, 30, 40 및 50줄로 구성된 경우, 30-40줄은 35,36번으로 번호를 변경할 수 있지만 135,136번으로는 번호를 변경할 수 없다.

라인 인덱스와 데이터는 라인 인덱스와 데이터가 함께 저장되는 가장 작은(1페이지) 파일을 제외한 별도의 디스크 페이지에 저장된다.

$CREATE 명령은 기본적으로 행 파일을 생성한다.

회선 기반 파일 시스템의 부작용은 프로그램이 개별 회선을 점진적으로 읽고 쓸 수 있다는 것이다.MTS 파일 편집기($EDIT)로 파일(일반적으로 텍스트 파일)을 편집하는 경우, 특정 행의 삽입 및 삭제와 마찬가지로 행에 대한 모든 변경 사항이 즉시 기록된다.이것은 보통 파일을 메모리에서 읽고 변경한 후 대량으로 디스크에 저장하는 대부분의 (바이트 지향) 파일 시스템과는 상당히 다르게 만든다.

하드웨어 또는 소프트웨어 문제로 인해 라인 파일이 손상될 수 있다.*VALIDATEFILE 프로그램은 라인 파일의 구조를 점검한다.

순차 파일

순차 파일($CREATE name TYPE=SEQ)은 첫 번째 줄 번호가 암시적으로 1이고 각 줄마다 1씩 증가되는 라인 지향 파일이다.한 번 쓰여진 선의 길이(파일의 마지막 행을 제외한)는 변경할 수 없지만, 같은 길이의 행으로 대체될 수는 있다.순차적 파일은 일반적으로 처음부터 끝까지 순차적으로만 읽을 수 있거나, 또는 끝에 추가하여 쓸 수 있다.그러나 순차 파일의 현재 줄에 대한 참조를 요청할 수 있으며, 해당 참조를 사용하여 해당 특정 위치로 다시 이동할 수 있다.

순차 파일은 라인 파일보다 공간 면에서 다소 효율적이며, 대형 미조직 라인 파일과 비교할 때 CPU 시간 측면에서도 더 효율적일 수 있다.그러나 SEQ 파일이 존재하는 주된 이유는 줄 파일이 존재하기 전에 긴 줄(최대 32,767자)을 지원했기 때문이다.줄 파일이 긴 줄을 지원할 수 있게 되자 순차적 파일은 덜 흔해졌다.순차적 파일도 라인 번호 범위(LAST+1)를 줄 필요 없이 파일 끝에 새 라인을 추가하도록 하는 데 사용된다.

라인 번호 파일이 있는 순차적

Sequential With Line Number 파일($CREATE Name TYPE=SEQWL)은 해당 라인 번호가 명시적으로 저장되었다는 점을 제외하면 Sequential Files와 유사하다.파일에 쓸 때(파일에 쓰여진 마지막 줄 번호보다 큰 경우) 라인 번호가 특별히 제공될 수 있다는 점을 제외하고, 그들은 순차적 파일의 모든 제한을 가지고 있다.라인 파일과 달리 SEQWL 파일의 첫 번째 읽기는 음수였더라도 파일의 첫 번째 줄을 반환한다.

SEQWL 파일은 거의 사용되지 않았으며, 일부 MTS 사이트에 의해 공식적으로 지원되지 않거나 문서에서 제거되었다.회선 파일이 데이터 셀과 잘 작동하지 않았기 때문에, 회선 번호를 보존하면서 데이터 셀을 장기간 덜 비싼 파일 저장에 사용할 수 있도록 하는 방법으로 SEQWL 파일이 구현되었다.

공유 파일

시간이 지나면서 MTS 사용자들 간의 파일 공유는 네 단계로 발전했다.[17]

1단계는 제한된 파일 공유에 허용되며, 공용 또는 라이브러리 파일(이름이 별표로 시작하는 파일)은 모든 사용자가 읽을 수 있고 다른 모든 파일(사용자 파일)은 소유주만 액세스할 수 있다.공용 파일은 컴퓨팅 센터 직원들이 소유하고 유지 관리했기 때문에 이 단계에서는 컴퓨팅 센터 파일만 공유되었다.[18]

2단계는 제한된 파일 공유에 대해 허용되며, 여기서 프로그램 *PERMIT를 (i) 파일 소유자와 다른 모든 MTS 사용자에게 파일 읽기 전용(RO)을 만드는 데 사용할 수 있고, (iii) 프로그램을 사용하여 파일 소유자와 동일한 프로젝트의 구성원에 의해 복사 가능한 파일을 사용할 수 있도록 하거나, (iiii) 다른 모든 사용자가 파일을 복사할 수 있도록 할 수 있다.프로그램 *COPY.1단계는 기본적으로 소유자가 자신의 파일에 무제한으로 액세스할 수 있었고 다른 사용자가 파일에 액세스할 수 없었다.[19]

3단계는 $PERmit 명령이나 PERT 하위 루틴을 사용하여 다른 사용자, 프로젝트, 다른 모든 사용자 또는 이들의 조합과 다양한 방식으로 파일을 공유할 수 있는 "진짜 공유 파일"에 대해 허용된다.허용되는 액세스 유형은 읽기, 쓰기 확장, 쓰기 변경 또는 비우기, 번호 변경, 잘라내기, 삭제 및 허용이다.1단계와 2단계의 경우 기본적으로 사용자 파일은 소유자에 대한 무제한 액세스와 다른 사용자에 대한 액세스가 허용되지 않는다.파일 소유자는 항상 허용 접근 권한을 보유하지만 파일 소유자의 접근 권한도 변경할 수 있다.$FILESTATUS 명령 또는 FILINFO 및 GFINFO 서브루틴을 사용하여 파일의 허가 상태를 얻을 수 있다.[16][20]

4단계 추가 프로그램 키(PKeeys)는 파일을 허용할 수 있는 항목 목록에 추가된다.따라서 파일은 사용자, 프로젝트, 다른 모든 사용자, 프로그램 키 또는 이들의 조합에 허용될 수 있다.프로그램 키는 MTS 명령 및 파일과 연관되어 특정 프로그램 또는 특정 MTS 명령에 파일을 허용하였다.무엇보다도, 이것은 MTS에서 실행 전용 또는 실행 전용 프로그램을 만들 수 있게 했다.[2]

사용자의 초기 하위 문자열에도 파일을 허용할 수 있음ID, 프로젝트ID 또는 프로그램 키.결과적으로, 한 명의 사용자가ID, 프로젝트ID와 프로그램 키는 잠재적으로 둘 이상의 액세스 유형을 가질 수 있다.이 경우 실제 접속은 (i)사용자 규정에 따라 해결된다.ID는 단독으로 또는 프로그램 키와 함께 프로젝트보다 우선ID 및 프로그램 키, ii) 프로젝트ID는 단독으로 또는 프로그램 키와 조합하여 프로그램 키보다 우선하며, (iii) 하위 문자열 매치가 더 길면 하위 문자열 매치가 더 우선하며, (iv) 특정 사용자가 없는 경우ID, 프로젝트ID 또는 프로그램 키 일치 후 "기타"에 대해 지정된 액세스가 사용된다.[21]

PKEY 서브루틴은 현재 실행 중인 프로그램의 프로그램 키를 단축하거나 현재 실행 중인 프로그램의 프로그램 키를 *EXEC로 전환하여 나중에 프로그램 키로 인해 프로그램이 파일에 대한 액세스를 자발적으로 제한할 수 있도록 하는 데 사용할 수 있다.[21]

파일 잠금

"진짜 공유 파일"(3단계)의 일부로, 파일 잠금은 활성 MTS 세션(즉, 실행 중인 개별 작업 또는 프로세스 간) 사이의 공유 파일에 대한 동시 액세스를 제어하기 위해 도입되었다.[2]파일 잠금은 단일 MTS 세션(명령어 하위 시스템 또는 동일한 MTS 세션의 일부로 실행되는 사용자 프로그램 간) 내의 파일에 대한 액세스를 제한하거나 차단하지 않는다.[2]MTS의 파일 잠금은 권고사항보다는 필수사항이다.파일은 특정 유형의 액세스를 처음 사용할 때 암시적으로 잠기거나 $LOCK 명령 또는 LOCK 서브루틴을 명시적으로 사용한다.$UNLOCK 명령 또는 UNLK 서브루틴을 사용하여 작업 내 파일의 마지막 사용이 닫히거나 명시적으로 사용될 때 파일은 암시적으로 잠금 해제된다.$LOCKSTATUS 명령 또는 LSFILE 및 LSTASK 하위 루틴을 사용하여 파일 또는 태스크의 현재 잠금 상태를 얻을 수 있다.[21]

파일은 "열림", "열리지 않음" 또는 "열림 대기", "읽기 위해 잠김", "수정하기 위해 잠김", "파괴를 위해 잠김", "파괴 대기", "수정 대기", "수정 대기" 또는 "파괴 대기"가 될 수 있다.파일의 열림 상태는 잠금 상태와 무관하다.파일을 수정하기 위해 잠그는 것도 파일을 읽기 위해 잠그는 것과 파일을 파괴하기 위해 잠그는 것은 또한 수정과 읽기를 위해 파일을 잠그는 것이다.임의의 수의 태스크는 임의의 시간에 읽기 위해 파일을 잠글 수 있지만, 한 태스크만 임의의 시간에 수정하기 위해 파일을 잠글 수 있고, 그 다음 어떤 태스크도 읽기 위해 파일을 잠글 수 없거나, 삭제하기 위해 잠글 수 없는 경우에만 가능하다.특정 시간에 파일을 삭제하기 위해 잠근 다음, 파일이 열려 있지 않거나, 읽기 위해 잠겼거나, 수정하기 위해 잠근 태스크가 없는 경우에만 하나의 태스크만 잠글 수 있다.

파일 잠금을 시도해도 만족할 수 없는 경우, 호출 태스크는 무기한 또는 다른 태스크가 파일의 잠금을 해제할 때까지 또는 주의 중단이 수신될 때까지 특정 기간 동안 대기한다.파일을 잠글 수 없는 경우 이를 나타내는 오류가 반환된다.파일 잠금 소프트웨어는 Warshall 알고리즘[22] 사용하여 작업 사이의 교착 상태를 감지하고 파일을 잠그지 않고 기다리지 않고 오류 표시를 반환한다.

파일을 잠그는 것은 사실상 그 파일의 이름을 잠그는 것이다.[21]예를 들어 FILE1이라는 이름의 파일이 항상 존재하는 것은 아니지만 FILE1을 잠근 채로 다음과 같은 명령 순서를 실행할 수 있다.

$lock FILE1 $rename FILE1을 FILE2 $create FILE1로 변경

나중에 이름을 잠그는 이 기능을 통해 "파일" 잠금 루틴을 사용하여 중앙 관리 파일 *MTS $Messages 시스템(MTS $Messages System)에서 개별 사용자를 위해 우편함과 메시지를 보관하는 데 사용한 메시지(MESSAGES)에 액세스하는 작업 간에 기록 수준 잠금을 구현할 수 있었다.

파일 잠금을 추가하여 단일 사용자가 수행할 수 있는 제한 사항 제거ID는 한 번만 서명할 수 있었다.대신, 동시 로그인 횟수는 프로젝트 매니저나 사이트의 사업소에 의해 사용자의 회계 기록에 설정될 수 있는 최대치로 제어되었다.

파일 저장 및 복원

파일이 NOSAVE로 표시되지 않는 한 테이프에 정기적으로 백업된다.파일 저장 프로세스에는 전체 및 부분 백업이 포함된다.전체 저장 작업은 일반적으로 시스템에 로그온한 사용자가 없는 상태에서 일주일에 한 번 수행된다.부분 저장 후 마지막 전체 저장 또는 부분 저장 후 변경된 파일만 저장하며, 일반적으로 사용자가 시스템에 로그인한 상태에서 정상 작동 중 매일 늦은 저녁 또는 이른 아침에 한 번씩 수행된다.

미시간 대학교에서는 두 장의 전체 저장 테이프 복사본이 만들어졌고 한 권은 "오프사이트"에 저장되었다.저장 테이프는 6주 동안 보관되었다가 재사용되었다.6번째 풀 세이브 때마다 녹음된 테이프는 "영원히" 보관되었다.

일반적으로 하드웨어 장애로 인해 파일 시스템이 손상되거나 손상된 "디스크 재해"로부터 복구할 수 있도록 파일을 저장한다.그러나 사용자는 *RESTORE 프로그램을 사용하여 개별 파일도 복원할 수 있다.

터미널 지원

Teletype Model 33 ASR(종이 테이프 리더/펀치 포함)의 초기 컴퓨터 터미널
A DEC VT100 디스플레이 단자
PDP-8 데이터 집선 장치(University of Michigan, 1971)
Tektronix 4014 디스플레이 단자
터치 톤 전화
Merit PDP-11 기반 PCP(미시간 대학교, c. 1975)
IBM 3279 디스플레이 터미널

그 절정기에 미시간 대학의 MTS는 600개 이상의 터미널 세션과 몇 개의 일괄 작업을 동시에 지원했다.[4]

단말기는 전화 접속 모뎀, 임대 또는 전용 데이터 회로, 네트워크 연결을 통해 MTS에 부착된다.오류 감지 및 재전송을 제공하는 비동기 연결과 함께 사용하기 위한 간단한 프레임 프로토콜인 MCP(Michigan Communications Protocol)는 단말기의 MTS 연결과 컴퓨터의 MTS 연결의 신뢰성을 향상시키기 위해 개발되었다.[23]

A very wide range of terminals are supported including the 10 character per second (cps) Teletype Model 33, the 30 cps LA-36 and 120 cps LA-120 DECWriter, the 14 cps IBM 2741, and at ever increasing speeds up to 56,000 bits per second, the VT100 display, the Visual 550 display, the Ontel OP-1 and OP-1/R displays, Tektronix 4000 series of graphic diMTS와 함께 사용하기 위해 특별히 개발된 것을 포함하여, 애플 (애플의 AMIE ][), IBM (DOS의 PCTie) 및 터미널 에뮬레이션 프로그램을 실행하는 기타의 splay, 개인용 컴퓨터. 이러한 모델들 중 어느 것과도 호환되는 대부분의 터미널도 지원된다.

MTS는 또한 IBM 7772 오디오 응답 장치를[24][25] 통해 10단추 또는 12단추의 터치전화기로부터의 접근을 지원하며, 이후 Botrach 오디오 응답 장치,[26][27] IBM 1052 콘솔, IBM 3066 콘솔 디스플레이 및 IBM 3270 로컬 연결 디스플레이 제품군(IBM 3272 및 3274 제어 장치, 원격 3270 디스플레이는 아님)에서 접속을 지원한다.

프런트 엔드 통신 프로세서

MTS는 IBM 2703Memorex 1270과 같은 통신 컨트롤러를 사용하여 전화 접속 및 전용 데이터 회로를 통한 전화 접속 단말과 원격 배치 스테이션을 지원할 수 있으며, 이러한 컨트롤러는 많은 수의 다양한 단말기와 termi를 실행하는 이후의 개인용 컴퓨터를 연결하는 데 상당히 유연하지 않고 만족스럽지 못하다는 것이 입증되었다.Nal 에뮬레이션 소프트웨어로 데이터 전송 속도 향상대부분의 MTS 사이트는 자체적인 프런트 엔드 프로세서를 구축하거나 다른 MTS 사이트 중 한 곳에서 개발한 프런트 엔드 프로세서를 사용하여 터미널 지원을 제공하기로 선택한다.

이러한 프런트 엔드 프로세서(보통 DEC PDP-8, PDP-11 또는 로컬로 개발된 맞춤형 하드웨어와 소프트웨어를 기반으로 하는 LSI-11)는 한쪽의 IBM 입출력 채널과 다른 한쪽의 모뎀 및 전화선에 부착된 IBM 제어 장치 역할을 할 것이다.미시간 대학에서 프런트 엔드 프로세서는 데이터 집선 장치(DC)로 알려져 있었다.[28]DC는 Dave Mills 등에 의해 CONCOMP 프로젝트의 일부로 개발되었으며 IBM I/O Channel에 부착하기 위해 개발된 최초의 비 IBM 장치였습니다.[29]초기에는 PDP-8 기반 시스템을 업그레이드하여 PDP-11 하드웨어를 사용하였고, 동기식 데이터 회로를 통해 DC에 다시 연결된 LSI-11 하드웨어를 사용하는 원격 데이터 집선 장치(RDC)가 개발되었다.브리티시 컬럼비아 대학(UBC)은 호스트 인터페이스 머신(HIM)과 네트워크 인터페이스 머신(NIM)이라는 두 가지 PDP-11 기반 시스템을 개발했다.앨버타 대학은 PDP-11 기반의 프런트 엔드 프로세서를 사용했다.

이러한 프런트 엔드 시스템은 "기기 명령"의 자체 명령어를 지원하는데, 사용자가 연결을 구성하고 제어할 수 있도록 보통 백분율 부호(%)와 같은 특수 문자로 접두사가 붙은 행이다.[30]MTS에서 실행되는 $Control 명령과 프로그램은 CONTROL 서브루틴을 사용하여 프런트 엔드 및 네트워크 제어 장치에 장치 명령을 내릴 수 있다.

네트워크 지원

시간이 지남에 따라 일부 프런트 엔드는 MTS 연결에 대한 지원을 제공하는 것이 아니라 진정한 네트워크 지원을 제공하도록 진화했다.

미시간 대학교(UM)와 웨인 주립 대학교(WSU)에서는 네트워크 지원을 개발하기 위한 메리트 네트워크의 병행 개발 노력이 있었다.Merit 노드는 PDP-11 기반의 사용자 지정 하드웨어 및 소프트웨어를 사용하여 MTS 시스템 간 및 MTS와 Michigan State University(MSU)의 CDC SCAPE/HUSTLER 시스템 간 상호 접속 호스트용 호스트를 제공했다.Merit 노드는 통신 컴퓨터(CC)로 알려졌으며, 한쪽에서는 IBM Control Units의 역할을 하면서 다른 쪽에서는 다른 쪽 CC와의 링크를 제공하였다.초기 호스트와 호스트 쌍방향 연결은 나중에 터미널에서 호스트(TL) 연결로 보완되었고, 나중에 호스트와 호스트 배치 연결로 인해 한 시스템에서 제출된 원격 작업이 인쇄된(PR)과 펀치된 카드 출력(PU)이 제출 시스템 또는 다른 호스트로 반환되는 다른 시스템에서 실행(EX)할 수 있게 되었다.네트워크상에서원격 배치 작업은 실제 카드 판독기에서 제출하거나 작업 전면에 있는 #NET "카드"를 사용하여 *Batch*를 통해 제출될 수 있다.

Merit는 통신 컴퓨터의 이름을 PCP(Primary Communication Processors)로 바꾸고 LSI-11 기반 SCP(Secondary Communication Processors)를 만들었다.PCP는 네트워크의 핵심을 형성하고 이더넷과 전용 동기식 데이터 회로를 통해 서로 연결되었다.SCP는 동기식 데이터 회로를 통해 PCP에 부착되었다.PCP와 SCP는 결국 이더넷 인터페이스를 포함하고 LAN(Local Area Network) 첨부를 지원할 것이다.PCP는 또한 GTE의 텔넷(Later SprintNet), Tymnet, ADP의 오토넷과 같은 상용 네트워크에 대한 게이트웨이 역할도 할 수 있을 것이다. MTS에 대한 국내 및 국제 네트워크 접속을 제공한다. 후에 PCP는 오늘날의 인터넷이 된 TCP/IP 네트워크에 게이트웨이 서비스를 제공했다.

메리트 PCP와 SCP는 결국 미시간 대학의 데이터 집선기와 원격 데이터 집선기를 대체했다.절정기에는 300대 이상의 메리트 PCP와 SCP가 설치되어 1만 대 이상의 터미널 포트를 지원하였다.

가상 환경

UMMPS는 가상 머신이나 가상 운영 체제 등 가상 환경을 만들 수 있는 시설을 제공한다.둘 다 MTS에서 실행되는 사용자 프로그램으로 구현된다.

최초의 MTS 가상 머신에 대한 초기 작업은 미시간 대학에서 IBM S/360-67을 시뮬레이션하고 UMMPS와 MTS의 디버깅을 허용하기 위해 수행되었다. 후에 브리티시 컬럼비아 대학은 S/370 MTS 가상 머신을 만들기 위한 초기 작업을 수행했다.이론적으로 이러한 가상 머신은 S/360 또는 S/370 시스템을 실행하는 데 사용될 수 있지만, 실제로 가상 머신은 MTS를 디버그하는 데만 사용되었기 때문에 MTS에서 완전하거나 정확하게 구현되지 않은 미묘한 기능이 있을 수 있다.MTS 가상 머신은 S/370-XA 아키텍처를 지원하도록 업데이트되지 않았다(대신 MTS를 디버깅하는 데 SWAT 및 PEEK와 같은 다른 도구가 사용되었고 UMMPS를 디버깅하는 데 IBM의 VM/XA 또는 VM/ESA가 사용됨).

1970년대 초 Wayne State University에서 생산 서비스로서 MTS에 따라 수정된 가상 머신(VOS)[31]에서 OS/MVT 버전을 실행하는 작업이 수행되었다.

MTS의 "학생" 가상 머신 또한 교육 도구로 만들어졌다.여기서 가상 머신에서 실행 중인 OS(학생이 작성한 OS)는 시뮬레이션된 디바이스를 사용하며 외부 세계(가능한 콘솔 제외)에 전혀 연결되지 않는다.

MTS는 가상 머신 외에도 가상 운영 체제 환경을 구현하는 두 가지 프로그램을 제공한다.[32]*FAKEOS, 미시간 대학에서 개발한 OS/360에서 프로그램 MTS. *VSS에 사용자 프로그램을 브리티시 컬럼비아 대학교의 발전으로 출마하기, OS/VS1과 MVS/370에서 프로그램 사용자 프로그램으로 MTS.[33]도 프로그램은 사실상 IBM운영 제도를 운영하고 있에서 실행할 수 있도록, 대신 그들이 충분히 운영 environ의 가장한 수 있습니다.남자들운영 체제를 위해 개발된 개별 프로그램을 실행할 수 있도록 허용한다.두 프로그램 모두 직접 실행할 수 있지만, 일반 MTS 사용자 프로그램을 실행하고 있다는 인상을 주는 드라이버 파일에서 실행하는 경우가 많다.

전자우편

MTS에서는 다른 시기에 적어도 세 가지 다른 전자우편 구현을 사용할 수 있었다.

  • *NUMAC에서 발송되는 메일(일부 MTS 사이트에서는 제공되지 않음)
  • UM에서 Robert Parnes가 작성한 컴퓨터 회의 시스템인 CONERVER
  • 미시간 대학 컴퓨터 센터의 $MESSAGESSTEM.[4][34]

CONERV와 *MAIL은 "로컬" 사용자들에게만 메일을 주고 받았다.

1981년 7월 이용자들이 이용할 수 있는 $[35]MESSAGESSYSTEM은 3대 시스템 중 마지막으로 구현되어 가장 널리 이용되고 있는 시스템이 되었다.1981년과 1993년 사이에 미시간 대학에서 1800만 건 이상의 메시지를 보내고 받는 데 사용되었다.[36]전송 가능한 항목:

  • 로컬 및 네트워크 전자 메일 메시지,
  • 디스패치(다른 사용자가 디스패치를 차단하지 않는 한 다른 사용자의 단말기에 표시되는 메시지 표시)
  • 게시판(시스템 운영자가 MTS 세션이 시작될 때 자동으로 배달된 특정 사용자에게 보낸 메시지)
  • 로그인 메시지(시스템 운영자가 MTS 세션이 시작되기 전에 자동으로 배달된 모든 사용자에게 보낸 메시지).

$MESSAGESSYSTEM의 몇 가지 주목할 만한 특징은 다음과 같다.

  • 서명자 ID 또는 이름으로 개인에게, 서명자 ID, 프로젝트 ID 또는 그룹 이름으로 개인 그룹에 또는 시스템 운영자에게 발송.
  • 파일에 저장된 목록으로 보내기;
  • *USERDirectory 프로그램을 사용하여 원격 또는 네트워크 사용자를 포함하는 이름 및 그룹을 포함한 개인 및 그룹을 위한 전자우편 이름 데이터베이스를 만들고 유지 관리
  • 아직 읽지 않은 메시지를 리콜/삭제한다.
  • 수신인이 발송된 후 메시지에 수신인을 추가하거나 삭제하는 방법
  • 각 새 메시지에 오래된 메시지의 텍스트를 포함하지 않고 전자 메일 체인에 메시지 기록을 표시
  • 전자우편 메시지의 날짜 및 시간까지 만료 및 보류 설정
  • 수신 및 발신 메시지의 상태를 표시한다.
  • 데이터베이스 모델(수신인, 발신인, 새 메시지, 이전 메시지/표시된 메시지, 수신인, 메시지 번호, 보낸 날짜, 만료 날짜, ...)을 사용하여 수신 및 발신 메시지를 검색하려면
  • 사서함 소유자의 것이 아닌 서명자 ID로 사용을 허용하는 사서함
  • 한 우편함에서 다른 우편함으로 메시지를 자동으로 전달한다.
  • 이전 메시지를 보관하려면
  • 명령 외에 서브루틴 인터페이스를 사용하여 메시지를 보내고 받는다.

Apple Macintosh를 위한 애플리케이션인 InfoX(MacHost라고도 함)는 MTS Message System 및 *USERDirectory에 현대적인 인터페이스를 제공하기 위해 개발되었다.

1984년에 MTS는 전 세계 300개 이상의 사이트와 원격 이메일을 주고 받는 데 사용될 수 있었다.[4]

원격 시스템(원격 메시지 또는 네트워크 메일)에서 사용자로부터 전자 메일 메시지를 주고받을 수 있는 첫 번째 능력은 MAILNET 프로젝트의 일환으로 1982년에[35] 구현되었으며, 16개 대학과 카네기 주식회사의 자금 지원을 받아 EDUTOM(Educater EducationAUSE)이 공동 노력하였다.MIT served as a relay hub between the MAILNET sites and as a gateway to CSNET, ARPANET, and BITNET. MTS at the University of Michigan used its connections to the Merit Network and through Merit to GTE's commercial X.25 network, Telenet (later SprintNet), to communicate with MIT. MTS at the University of Michigan served as a relay site for other siMIT의 MAILNET 릴레이에 직접 액세스하지 못한 다른 MTS 사이트와 UM 캠퍼스의 테스.

미시건 대학의 MTS 사용자의 원격 이메일 주소는 다음과 같다.

  • 이름@UMICH-MTS.메일넷(MAILNET 및 BITNET 사이트)
  • 이름 %UMIH-MTS.메일넷@MIT-멀티틱스.ARPA(CSNET 및 ARPANET 사이트)
  • name@UM(다른 UM 또는 MTS 사이트에서)

원격 사이트로 이메일을 보내기 위해 미시건 대학의 MTS 사용자는 다음과 같은 형식의 주소를 사용했다.

  • name@CARnegie (Carnegie-Mellon University a MAILNET 사이트)
  • 이름@CARnegie.MAILNET (CMU의 공식 명칭은 더 길지만 더 길다)
  • name@WSU (Wayne State University a MTS 사이트)
  • name@Wayne-MTS.메일넷(WSU의 더 공식적이지만 긴 이름)
  • 이름%brown@CSNET-RELAY.ARPA(브라운 대학교 CSNET Fonenet 사이트로)
  • name@190.ARPA(Cornell University CSNET 또는 ARPANET 사이트로)
  • 이름@STANford.BITNET(스탠퍼드 대학교 BITNET 사이트로)

시간이 지남에 따라 점점 더 많은 컴퓨터가 인터넷에 직접 연결됨에 따라 MAILNET 릴레이 접근방식은 현재 사용 중인 전자 메일 주소의 보다 직접적이고 더 신뢰할 수 있는 피어 투 피어 전자 메일 배달과 인터넷 도메인 스타일로 대체되었다.

인포엑스

InfoDisk 정보 창 스크린샷, 1988년 9월

InfoX("info-ex", 원래 InfoDisk)는 미시간 대학교 정보 기술부에서 개발한 애플 매킨토시용 프로그램이다.[34]MTS 전자우편 확인, COURNE II 컨퍼런스에 참가, MTS 사용자 디렉토리에 접속, 파일 작성, 편집, 조작 등에 사용할 수 있는 현대적인 사용자 인터페이스(메뉴, 아이콘, 윈도우, 버튼)를 제공한다.InfoX는 매킨토시 스타일의 워드 프로세싱 기능을 MTS, $Message, $Edit 및 CONERVER 명령줄 인터페이스에서 사용할 수 있는 보다 전통적인 편집 기능에 추가한다.Macintosh Edit 메뉴의 표준 Cut, Copy 및 Paste 명령을 사용하여 Macintosh 파일에서 텍스트를 이동할 수 있다.

회계 및 과금

각 사인온 ID에는 자원한계(돈, 디스크 공간, 연결 시간 등)가 할당되어 ID로 할 수 있는 작업량과 종류를 통제한다.[4]ID는 단지 터미널 세션이나 일괄 작업만 사용하는 것으로 제한하거나 충전 속도가 더 낮은 요일 또는 요일 중에 작업하는 것으로 제한될 수 있다.각 서명 ID에는 만료 날짜가 할당된다.

비용을 청구할 수 있는 리소스에는 다음이 포함된다.

  • CPU 시간 - CPU 시간(초)
  • 메모리 사용—CPU-VM 통합으로 충전... 예: 10초 동안 40페이지의 가상 메모리가 400페이지 초로 충전됨
  • 프린터 사용—종이 페이지 및 출력 라인(라인 프린터용) 또는 페이지 및 시트(페이지 프린터용)로 충전
  • 사용된 디스크 공간—페이지 월 단위로 충전(1페이지=4096바이트)
  • 단자 또는 네트워크 연결 시간 충전(분)
  • 카드로 읽고 충전한 카드
  • 발에 의해 충전된 종이 테이프
  • 테이프 장착 및 테이프 드라이브 사용량이 탑재된 테이프 수 및 분 단위 사용량에 따라 시간 소모됨
  • 프로그램 제품 할증료(특정 라이선스 프로그램 제품에 대해 프로그램별로 부과)
  • 기타 리소스(예: 플로터, 사진 형식 지정자 등)

사용된 가상 메모리에 대해서는 요금이 부과되지만 실제 메모리에 대해서는 요금이 부과되지 않는다는 점에 유의하십시오.페이지인 작업은 로그오프 시 보고되는 세션 요약 정보에 포함되지만 변경 사항은 없다는 점에 유의하십시오.

프로젝트 클래스(내부, 외부, 상업, ...)와 요일 또는 요일의 시간에 따라 다른 요율을 변경할 수 있다.각기 다른 사이트의 정책과 관행에 따라 요금은 '진짜 돈'이나 '소프트 머니'(소프트 머니라고 부르기도 하는데 보통 얼마나 웃기는지는 누가 계산하느냐, 안 하느냐에 따라 달라지지만 소프트 머니는 '재미디 머니(소프트 머니 머니'라고 불린다.

사용자는 $DISPLAY COST 명령을 사용하여 세션 비용을 표시할 수 있으며, $ACCOUNTING 명령을 사용하여 계정 잔액을 표시할 수 있으며, 작업 또는 세션이 종료될 때 세션 비용과 계정의 잔여 잔액이 표시된다.또한 각 MTS 명령이 실행된 후 증분 및 누적 세션 비용이 표시되도록 하는 옵션($SET COST=ON)도 있다.

사용자가 계정을 초과 인출하는 것을 방지하기 위해 사용자가 로그인하려고 할 때 금전적 한도를 확인한다.계좌 잔액이 0이거나 음수일 경우 사인온을 허용하지 않는다.일괄 작업의 경우, 계정 잔액이 해당 작업에 대해 추정된 비용을 충당할 만큼 충분하지 않으면 작업이 실행되지 않는다.터미널 세션의 경우, 계좌 잔액이 1달러 미만으로 떨어질 때, "돈이 떨어졌구나"라는 경고와 함께 현재 잔액이 인쇄된다.이 "돈 부족" 메시지는 사용자가 로그오프할 때까지 정기적으로 반복된다.사인온 ID는 마이너스 밸런스를 실행할 수 있지만 보통 큰 잔액이나 사고로 인한 잔액은 아니다.특정 현장의 행정정책에 따라 사업들은 허가된 금액을 초과하더라도 사용 자원에 대한 비용을 부담해야 하는 경우가 많다.

원하는 것보다 더 많은 리소스를 빠르게 사용할 수 있는 사고에 대한 추가적인 보호를 제공하기 위해 사용자는 CPU 시간 사용량에 대한 전역 및 로컬 제한을 설정할 수도 있다.글로벌 시간 제한($SIGN ccid T=maxtime)은 전체 작업 또는 세션에 적용된다.현지 시간 제한은 개별 프로그램 실행($RUN 프로그램 T=maxtime)에 적용된다.인쇄할 페이지 수와 펀치할 카드 수에 대한 글로벌 및 로컬 제한도 설정할 수 있다($SIGN ccid P=maxpage C=maxcards$RUN 프로그램 P=maxpage C=maxcard).$SET TIME=maxtime 명령을 사용하여 기본 로컬 CPU 시간 제한을 설정할 수 있다.

참조

  1. ^ MTS 강의 1은 마이크 알렉산더, 돈 보엣너, 짐 해밀턴, 더그 스미스(c. 1972년)가 연재한 미시건 터미널 시스템의 내역에 대한 일련의 강의 중 첫 번째 내용을 필사한 것이다.
  2. ^ a b c d e f g h i j Gary C. "일반적인 목적 시간 공유 환경에서 정보 보호"Pirkola와 John Sanguinti, 1977년 IEEE 경향적용 심포지엄 진행: 컴퓨터 보안무결성, 제10권 제4호, 페이지 106-114
  3. ^ a b c d "미시간 터미널 시스템의 구성 특징", M. T. 알렉산더, 페이지 586, 1972년 5월 AFIPS 스프링 공동 컴퓨터 회의
  4. ^ a b c d e f g h i j k MTS 제1권: 미시간 터미널 시스템, 1991년 11월 913-14페이지, 미시간 주 앤아버에 있는 미시간 대학교 컴퓨팅 센터
  5. ^ a b c d MTS 제3권: 미시건 주 앤아버 미시간 대학교 컴퓨팅 센터 시스템 서브루틴 설명
  6. ^ Michigan Terminal System(MTS) 서브시리즈, Computing Center 출판물, 1965-1999, University of Michigan University Bentley History Library,
  7. ^ a b c d e f g h i j k MTS 1권: 시스템 에디션, 구식 및 내부 MTS 명령, 1991년 11월, 미시건 대학교, 60pp.
  8. ^ a b "시간 공유 감독자 프로그램"CP-67, TSS/360, MTS 및 Multics의 감독자 프로그램을 Michael T에 의해 비교한 것이다.Alexander, Systems Programming의 고급 주제(1970, 개정 1971), University of Michigan Engineering Summer Conference
  9. ^ a b UMMPS D6.0 감독자 통화 설명, 1987년 11월, 미시건 대학교 156p.
  10. ^ MTS 제14권: 미시건 주 앤아버, 미시간 대학교 컴퓨팅 센터 MTS360/370 조립자
  11. ^ MTS 배포에 포함된 업데이트 로그의 리뷰를 통해 입증된 MTS 개발자의 회상, MTS(Michigan Terminal System), 1968-1996, Computing Center(University of Michigan) 레코드 1952-1996, Bentley History Library, University of Michigan, University of Missan)
  12. ^ "IBM 370 아키텍처에서 도메인 전환을 구현하기 위한 모니터 호출 지침의 사용", 존 상규이네티, 미시건 대학 컴퓨팅 센터, ACM SIGOPS 운영 체제 검토, 15권, 4호(1981년 10월), 페이지 55-61
  13. ^ "미시간 터미널 시스템의 침투 분석", B.Hebard, P. Groso, et. al., ACM SIGOPS 운영 체제 검토, 14권, 제1호(1980년 1월), pp.7-20
  14. ^ "대형 시간 공유 시스템에서 솔리드 스테이트 페이징 장치가 미치는 영향", 존 상귀네티, 미시건 대학 컴퓨팅 센터, ACM SIGMETRICS 성능 평가 검토, 10권, 이슈 3(1981년 가을), 페이지 136–153, ISSN 0163-5999
  15. ^ MTS Volume 21: MTS Command Extensions and Macros, University of Michigan, University of Michigan Computing Center, Ann Arbor, Michigan.
  16. ^ a b "범용 시간 공유 환경을 위한 파일 시스템", G. C. Pirkola, IEEE 절차, 1975년 6월, 제63권 6, 페이지 918–924, ISSN 0018-9219
  17. ^ 「MTS 파일 시스템의 진화」, 게리 피콜라, 마이크 알렉산더, 미시간 터미널 시스템 아카이브의 제프 오그덴이 2014년 6월 7일에 접속했다.
  18. ^ MTS Volume I: Michigan 터미널 시스템, Second Edition, Computing Center, University of Michigan, 1967년 12월, 415페이지.
  19. ^ "Mike로부터 *PERMIT*COPY"에 대한 회신, Mike Alexander, 2014년 5월 24일 미시간 터미널 시스템 아카이브(Mike Terminal System Archive)가 2014년 6월 7일에 액세스했다.
  20. ^ "ShARED FILES—It's the Real Thing", Computing Center Newsletter, Computing Center Newsletter, University of Michigan, Volume 2, Number 15, 1972년 10월 23일 1페이지가 2014년 6월 7일에 접속했다.
  21. ^ a b c d MTS 제1권: 미시간 대학교 컴퓨터 센터, 미시간 터미널 시스템, 1991년 11월, 382페이지.
  22. ^ "부울 행렬에 대한 정리", 스티븐 워샬, ACM 저널, 제9권, 제1권(1962년 1월), 11-12페이지, 도이: 10.1145/321105.321107.
  23. ^ MTS 제4권: MTS, University of Michigan Computing Center의 터미널 및 네트워크
  24. ^ 오디오 응답 장치 사용자 가이드 더글라스 B.1970년 미시간 대학교 CONCOMP 프로젝트 스미스
  25. ^ "Voice Output from IBM System/360", A. B. Urquhart, IBM, afips, pp.857, Processions of the Fall Joint Computer Conference of the Fall Joint Computer Conference, 1965
  26. ^ "미시간 대학교 오디오 응답 시스템 및 음성 합성 시설", Edward J. Frontczak, 제2회 USA Japan 컴퓨터 회의, 절차, 380-84쪽, 1975년
  27. ^ "텍스트에서 세그먼트 음소 발생을 위한 미시간 대학교 오디오 응답 시스템의 내부 설계", Edward J. Frontczak 및 James F.블린, 국제 컴퓨터 심포지엄 1975년 8월 1일자 404-10면
  28. ^ 시스템/360 모델 67에 인터랙티브 단말기를 부착하기 위한 특수 용도 주변 장치인 데이터 집선 장치(Data Intensrator)는 개발 중에 프로젝트 리더 겸 수석 설계자인 Dave Mills의 개요와 사진을 제공했다.
  29. ^ 데이터 집중 장치, David L. Mills, ConCOMP 프로젝트, 1968년 미시간 대학교
  30. ^ 데이터 집선 장치 사용 설명서, David L. Mills, Jack L.1970년 4월 미시건 대학교 CONCOMP 프로젝트 Di Giuseppe와 W. Scott Gerstenberger.
  31. ^ "효율적인 가상 머신 구현", R. J. Srodawa 및 L. A. Bates, Wayne State University, app, 301페이지, National Computer Conference, 1973년 진행
  32. ^ MTS 제2권: 미시건 주 앤아버에 있는 미시간 대학교 컴퓨팅 센터의 공개 파일 설명
  33. ^ MSC/NASTRAN은 *VSS 사용의 초기 예일 수도 있지만 너무 이른 경우, 미시간 대학의 MSC/NASTRAN, William J. Anderson 및 Robert E. Sandstorm, 1982년 미시간 공과대학의 MSC/NASTRAN을 참조하십시오.
  34. ^ a b MTS 제23권: 미시건 주 앤아버 미시간 대학교 컴퓨팅 센터 MTS메시징회의
  35. ^ a b "MTS 타임라인", 미시간 대학교 정보 기술 다이제스트, 페이지 9-10, 제5권, 제5권(1996년 5월 13일)
  36. ^ 1993년 1월 12일자로 MTS 메시지 시스템의 전 UM Computing Center 직원이자 주요 저자인 James J. Duderstadt 미시간 대학교 총장이 Jim Sterken에게 보낸 편지