감독자 호출 지침

Supervisor Call instruction
이 문서는 IBM System/360과 후속 메인프레임 컴퓨터 및 호환 기계에 대한 구체적인 지침을 다룬다.운영 체제에 대한 호출을 위한 지침의 일반적인 개념은 시스템 호출을 참조하십시오.

한 감독자 호출 명령(SVC)가 하드웨어 명령 IBM메인 프레임 컴퓨터를 현대 zSeries, 암달 470V/5, 470V/6, 470V/7, 470V/8, 580,5880, 5990M, 5990A고, 다른 이들은;Univac 90/60, 90/70과 90/80, 그리고 다른 사람;중에 후지쯔 M180(UP)[1]과 M200(MP)등이 살고의 시스템/360가족들이 사용하고, 또한 사용이다.d나는n 헤라클레스 오픈 소스 메인프레임 에뮬레이션 소프트웨어.그것은 운영체제에 서비스를 요청하는데 중단을 야기한다.서비스를 제공하는 시스템 루틴을 SVC 루틴이라고 한다.SVC는 시스템 호출이다.

이론적 근거

시스템/360 및 후속 제품군의 IBM 메인프레임은 문제 상태 또는 감독자 상태와 16개의 스토리지 액세스 키 중 하나(0 ~ 15)에서 작동한다.문제 상태에서는 사용자 프로그램이 범용 비특권적 지침의 대규모 집합을 사용할 수 있다.감독자 상태에서 시스템 프로그램은 일반적으로 감독 기능을 목적으로 하는 소수의 특권적 지침을 추가로 사용할 수 있다.이러한 기능은 다른 사용자, 다른 프로세서 또는 전체 컴퓨터 시스템에 영향을 미칠 수 있다.스토리지 키 0에서 프로그램은 주소 지정이[a] 가능한 모든 스토리지에 액세스할 수 있으며, 그렇지 않으면 일치하는 키를 가진 스토리지 영역으로 제한된다.프로그램은 운영체제의 철저한 허가확인(DECCHK, SVC 117), TESTAUTH(SVC 119), 그리고 가능한 추가 시험 후에만 특정 감독기능에 접근할 수 있다.이러한 시험 중 어느 것도 불합격하는 프로그램은 ABENDED이며, 비정상적으로 종료되어 즉시 처리를 중단한다.이러한 테스트 중 일부는 OS/360에서는 사용할 수 없었으나 OS/VS1, SVS 또는 MVS/370에서는 추가되었지만, 모두 MVS/370 또는 이후 버전에서는 사용할 수 있었으며, 오늘날까지 계속 사용할 수 있다.

In OS/VS1, OS/VS2 (SVS), MVS/370 and subsequent versions of the OS, the MODESET function (SVC 107) obviated the need for many user-written SVCs as this system SVC accommodated both changes in mode (problem state to supervisor state) and key (8-15 [ user ] to 0-7 [ system ] ) in a single operation, and many user-written SVCs were originally intended어쨌든, 간단한 모드와 주요 변경사항의 경우, 그리고 그 이후에 유일한 특별한 요건은 작업 단계가 APF 인가되고[b][c] MODESET-흡연 프로그램이 모두 인가된 도서관으로 식별된 도서관의 연결에 상주해야 한다는 것이었다. 그리고 이 안전한 접근방식은 설치 관리 하에 완전히 있었다.이 접근방식은 일반적으로 권한에 대한 사용자 통제를 단순화했지만, 애플리케이션에 대한 간단한 변경이 필요했다.일반적으로 사용자 설치는 이러한 접근방식을 선호하였고, 이에 따라 시스템의 전반적인 신뢰성이 크게 개선되었다.

메인프레임 애플리케이션은 일반적으로 동기식 프로세스지만, 운영 체제 자체는 자연적으로 동기식인 많은 프로세스를 지원하지만, 운영 체제 자체는 자연적으로 비동기식이다.애플리케이션이 입출력 처리 등 자연적으로 비동기적인 시스템 서비스를 요청할 때는 애플리케이션과 운영 체제를 동기화하는 메커니즘을 이용해야 한다.이 필수 메커니즘은 운영 체제에 내장되거나 운영 체제에 의해 특별히 지원되는 기능을 통해 이루어진다. WAIT(외부 이벤트가 발생할 때까지 일시적으로 애플리케이션 처리를 중지함), POST(애플리케이션 처리를 계속할 수 있도록 외부 이벤트의 발생을 나타냄), SYNCH(시스템 처리 모드 변경)e—사용자 및 시스템 키에 대한 접근—시스템 무결성을 유지하면서 동시에 애플리케이션을 대신하여 기능을 수행하며, 이후 감독자 처리가 계속될 수 있다.)

아래의 OS/360 SVC 표는 이러한 동기화 설비를 사용할 수 있는 조건을 나타낸다.

실행

SVC는 16진수 작동 코드를 가진 2바이트 명령이다. 0A; 명령의 두 번째 바이트인 SVC 번호는 특정 요청을 나타낸다.[2]SVC 번호는 0부터 255까지의 값일 수 있으며, 예를 들어, IBM의 MVS에서는 SVC 3이 프로그램을 종료하는 데 사용되며, UNIVAC VS/9 및 Fujitsu BS2000 운영 체제에서는 SVC 9가 동일한 목적으로 사용되었다.

프로그램이 SVC를 발행하면 인터럽트가 발생한다.PSW, 8바이트(시스템 360 및 S/370) 또는 16바이트(z/시스템)의 특권 레지스터, 그 중에서도 실행할 명령의 현재 주소, 특권 비트(특권 있는 경우 1), 저장 키를 포함하는 특권 레지스터는 실제[d] 주소에 저장된다.360 및 370의 32-39 위치, z/시스템에 320-335 위치.그런 다음 PSW는 다른 리얼애드에서[d] 로드된다. PSW는 360에서 96-103, z/시스템에서 370, 448-463이다.PSW에 로드된 주소에서 실행이 재개된다. 저장된 PSW의 비트 24-31(360 및 370의 realadres[d] 35, z/시스템 323)에는 감독자 호출 번호가 포함되어 있다.

SVC는 감독 기능을 호출한다. 일반적으로 시스템의 SVC 인터럽트 핸들러의 "폐쇄 서브루틴"으로 구현된다.SVC 루틴에 전달된 정보는 일반 목적 레지스터나 메모리에 전달된다.

Under OS/360 and successors, return from an SVC routine is, for type 2, 3 and 4 SVC routines, via an SVC 3 (EXIT) invocation, and for other SVC types by the privileged Load PSW (LPSW) instruction, and which is executed on behalf of the SVC routine by the control program's dispatcher or SVC interrupt handler.

On non-IBM developed operating systems such as MUSIC/SP developed by McGill University in Montreal, Canada for IBM mainframes, and for non-IBM mainframes, VS/9, developed by Univac (from the TSOS operating system for the RCA Spectra 70 series computers) for the UNIVAC Series 90 mainframe line, and the B800 operating system (also developed from theFujitsu의 메인프레임용 TSOS 운영 체제)는 모두 LPSW 명령을 사용하여 슈퍼바이저 호출을 종료한다.

감독관이 LPSW 지시를 통해 직접 통화 프로그램에 복귀하게 할 것인지 아니면 서브루틴 복귀 지침이나 감독자 통화 자체와 같은 다른 방법을 통해 복귀하게 할 것인지에 대한 선택은 설계상의 문제다.이것을 하기 위한 명백한 "올바른" 방법은 없다; 두 가지 방법 모두에 이유가 있을 수 있다.LPSW 명령을 사용하여 SVC 루틴을 종료하면 더 빨리 실행될 수 있지만, 루틴의 실제 테스트는 실제 운영 체제 감독자의 일부로 코드를 실행하는 전용 기계에서 수행되어야 함을 의미한다.코드가 일반 서브루틴으로 작성된 경우 일반 프로그램과 동일한 방식으로 테스트할 수 있으며, 코드를 수정할 필요 없이 잠재적으로 배포할 수 있다.또한 감독자 호출 루틴이 업무를 완료하는 데 얼마나 걸렸는지에 대한 측정기준을 측정하여 실행 시간이 지나치게 긴 루틴(또는 매우 빠른 루틴)을 분석할 수 있게 한다.

OS/360 이후 버전에서 OS, 지점 및 링크 진입점은 일부 감독자 모드 루틴에 대한 SVC 호출의 대안이다.OS의 MVS/SP V1R3 이상 수용에서, 프로그램 호출(PC) 항목은 인가된 프로그램과 허가되지 않은 프로그램에 의한 많은 감독 기능의 호출에 대해 SVC를 강화했으며, 일부 기능은 지점 또는 PC 항목(예: STARTIO)에서만 호출될 수 있다(이는 IBM 운영 체제가 실행되는 것을 방지하는 이점도 가지고 있다).비 IBM 하드웨어).

다른 IBM 운영 체제는 사용되는 특정 코드 또는 실행될 수 있는 감독자 서비스에서 호환성이 거의 없다.VM/370 z/VM 시스템은 유사한 방식으로 DIAG 지침을 사용하며, 가상 시스템에서 실행 중인 운영 체제에서 사용할 수 있도록 SVC를 그대로 둔다.대부분의 OS/360 SVC는 "레거시" 프로그램을 위해 유지되었지만, 일부 SVC는 시간이 지나면서 "확장"되었다.

OS/360 및 후속 시스템 SVC

OS/360 및 후속 시스템에서는 IBM에 의해 SVC 번호 0 ~ 약 127이 정의되며, 255는 설치의 시스템 프로그래밍 직원이 사용할 수 있다. z/OS는 이를 SVC 번호 0 ~ 약 200으로, 255는 주로 암호화를 지원하기 위해 추가 시스템 서비스로서 SVC 번호 0 ~ 200까지로 변경했다.IBM은 SVC를 사용하여 ption/decryption을 구현하고 있었다.SVC 루틴에는 IGC로 시작하는 특정 형식의 모듈 이름이 있어야 한다.

시스템 설계상 "장애"란 MVS/370 이전 시스템에서 기계 점검 중단을 제외한 모든 장애에 대해 비활성화된 것을 말하며, MVS/370 및 이후의 모든 시스템에서는 "장애"가 아닌 "로컬 잠금"이 유지된 상태에서 비활성화된 것을 말한다.전자는 물리적인 불능화, 후자는 논리적 불능화인데, 주소 공간의 "로컬 잠금"은 주소 공간 내에서 물리적 불능화와 동일한 영향을 미치지만 다른 주소 공간에는 영향을 미치지 않기 때문이다.

OS/360은 "유형 1"에서 "유형 4"까지라고 불리는 4가지 유형의 SVC 루틴을 정의했고, MVS/370은 SVC 루틴이 물리적으로 비활성화된 것을 제외하고 "유형 1"과 유사한 "유형 6"을 추가했다."유형 5"는 정의되거나 구현되지 않았다.MVS/370 및 후속 시스템을 위해 강화된 OS/360용 표의 일부인 다음 정보는 SVC 루틴 작성에 관련된 고려사항을 제공한다.

관습 타입 1/타입 6 유형 2 형식 3. 타입 4
거주자 통제 프로그램의 일부 아니요. 아니요.
루틴의 크기 아무거나 아무거나 단일 부하 모듈
≤ 1024바이트
각 부하 모듈
≤ 1024바이트
반복 가능한 루틴 선택 사항이지만 연속적으로 재사용 가능해야 함
간섭을 허용할 수 있음 아니요.
입력 시 내용 등록 레지스터[e] 3, 4, 5, 6, 7 및 14는 통신 포인터를 포함하고 있으며 레지스터 0, 1 및 15는 파라미터 레지스터다.
다시 연결 가능한 데이터를 포함할 수 있음 아니요. 아니요.
다른 유형의 SVC 루틴에 대한 제어 권한을 전달할 수 있음 없음 아무거나
대기발급 가능 아니요. 예, "WAIT"(SVC 1) 사용
POST를 발행할 수 있음 예, 그러나 "게시" 비활성화 분기 항목을 사용해야 함 예, "POST"(SVC 2) 사용
동기식 종료 예약 가능 예, 그러나 "Exit Effector" 사용 안 함으로 설정된 분기 항목을 사용해야 함 예, "SYNCH"(SVC 12) 사용
비정상적인 종료를 예약할 수 있음 예, "Abterm" 비활성화 분기[3] 항목 사용 예, "ABEND"(SVC 13) 사용
IBM System/360 Operating System Programmer's Guide C28-6550-2에서[4]: p.33 요약한 표

타입 3과 타입 4 SVC 루틴의 크기 제한은 호출 시 지정된 "전환 영역"(PDPA in post-MVT)에 로딩되기 때문에 필요하다.

  • 유형 1의 예로는 GETMAIN과 FREEMAIN에 모두 사용되는 SVC 10이 있으며, 이는 각각 작업에 메인 스토리지 영역을 할당하고 이후 이를 해제하는 데 사용된다.SVC 10은 범용 레지스터를 통해서만 파라미터를 교환하고 GET와 FREE 스토리지가 모두 가능하기 때문에 비공식적으로 "REGMAIN"으로 알려져 있다.SVC 4와 SVC 5는 각각 유사한 GET 및 FREE 기능을 수행할 수 있지만, 저장 내 매개변수 목록을 통해 매개변수를 교환한다.
  • 타입 2의 예로는 SVC 42, ALTITY가 있는데, 이것은 새로운 작업을 생성한다.
  • 타입 3의 예로는 비 DASD 장치에서 I/O 작업을 종료하는 SVC 33, IOHALT가 있다.IOHALT는 많은 텔레 프로세싱 기반 시스템에서 활용도가 높기 때문에 OS/VS에서 Type 2로 변경되었다.
  • 유형 4의 예로는 SVC 19, OPEN을 들 수 있으며, 모든 액세스 방법에 공통적인 모듈을 포함하고 각 액세스 방법에 특정한 추가 모듈을 호출하는 사용자 프로그램이 데이터 집합을 사용할 수 있도록 하는 데 사용된다.OPEN은 또한 EXCP를 사용하여 액세스하는 데이터셋과 같이 "자신의 데이터 롤링" 액세스 방법으로 운용되는 데이터셋을 지원한다.
  • 타입 6의 예로는 SVC 107, MODESET이 있다. SVC 107, MODESET는 잠금장치를 확보하지 않지만, 통과된 파라미터에 따라 시스템 모드와 시스템 키를 변경할 수 있다.

보안

OS/360은 일반적으로 SVC의 사용을 제한할 어떠한 방법도 가지고 있지 않았다.따라서 SVC의 특정 시퀀스 및 기타 지침을 채택함으로써 가능한 의도하지 않은 시스템 및 데이터 무결성 노출이 상당히 많았다.호기심 많은 사용자들이 이러한 노출을 발견하려고 시도하는 것이 일반적이 되었지만, 일부 시스템 프로그래머들은 자체 사용자 작성 SVC를 개발하기보다는 이러한 노출을 사용했다.

MVS/370을 시작으로, IBM은 시스템 설계 오류가 애플리케이션 프로그램이 허가 없이 감독자 상태로 들어갈 수 있게 하는 경우 이를 제품 결함으로 간주했다.그들은 모든 IBM SVC가 모든 시스템 및 데이터 무결성 노출을 종결하도록 보호해야 한다고 의무화했다.그들은 이러한 노출이 발견되었을 때 그러한 노출을 종결할 것을 "보증"했다.1977년 MVS/370의 릴리스 3.7을 통해 거의 모든 그러한 노출이 10만 건의 공인 프로그램 분석 보고서(APAR) 및 관련 프로그램 임시 수정사항(PTF)의 비용으로 실제로 확인 및 종결되었다.이것은 주목할 만한 성과였는데, 이후 시스템 "업타임"이 며칠 또는 심지어 몇 시간 내에 측정되지 않고 년 단위로 측정되었기 때문이다.

메모들

  1. ^ 즉, 현재 발송 장치에서 액세스할 수 있는 주소 스페이스의 모든 저장소.
  2. ^ 처음에 이것은 잡스텝 프로그램이 AC(1)와 연결되었고 라이브러리의 공인된 연결에서 나왔다는 것을 의미했다.TSO/E는 후에 승인된 TSO 명령을 위한 기능을 추가했다.
  3. ^ 여러 시스템 라이브러리는 항상 암시적으로 연결의 일부였다.
  4. ^ a b c 즉, 접두사는 적용되지만 동적 주소 변환은 적용하지 않는 주소.IBM은 DAT나 접두사의 대상이 아닌 주소에 대해서만 절대 주소라는 용어를 사용한다.
  5. ^ OS/360 및 MVS에서 SVC 레지스터 사용량은
    • R3 CVT 주소
    • R4 TCB 주소
    • R5 RB 주소
    • R6 진입점 주소(MVS에만 해당)
    • R7 ASCB 주소(MVS에만 해당)
    • R14 반송 주소 CVTEXIR 또는 SVC SLIH

참조

  1. ^ 조립자 지침 V1.3 사용 설명서, Fujitsu Solutions GmBH, https://bs2manuals.ts.fujitsu.com/download/manual/959.1 (PDF) 2010년 6월, 페이지 167(2020년 11월 9일 회수)
  2. ^ IBM Corporation. IBM System/360 Principles of Operation (PDF). p. 72.
  3. ^ ABEND를 채용할 수 있지만, 이는 모범 사례로 간주되지 않는다.
  4. ^ IBM Corporation (1967). IBM System/360 Operating System System Programmer's Guide (PDF).

추가 읽기