스트라투스 VOS

programmed_in = PL/I, C, 어셈블리어 **스트라투스 VOS**(Stratus VOS, Virtual Operating System, 가상 운영 체제)는 스트라투스 테크놀로지스의 내고장성 컴퓨터 시스템에서 실행되는 독점 운영 체제이다. VOS는 스트라투스의 ft서버 및 Continuum 플랫폼에서 사용할 수 있다.accessdate=2016년 5월 16일 VOS 고객들은 이를 사용하여 지속적인 가용성을 요구하는 대용량 트랜잭션 처리 애플리케이션을 지원한다. VOS는 완전히 록스텝 하드웨어에서 실행되는 몇 안 되는 운영 체제 중 하나로 유명하다. 1980년대에는 스트라투스 VOS의 IBM 버전이 존재했으며 **시스템/88 운영 체제**라고 불렸다.url=https://books.google.com/books?id=uIYmZuC4zzQC&pg;=PT7
# 역사
VOS는 처음부터 내고장성 하드웨어에 맞춰진 고보안 트랜잭션 처리 환경으로 설계되었다.accessdate=2016-05-21 이는 MIT/벨 연구소/제너럴 일렉트릭(후에 허니웰) 멀틱스 프로젝트에서 얻은 많은 설계 경험을 통합하고 있다. 1984년, 스트라투스는 유닉스 시스템 기능(USF)이라고 불리는 유닉스 시스템 V 구현을 VOS에 추가하여 커널 수준에서 유닉스와 VOS를 통합했다.url=https://books.google.com/books?id=CR4n14lZ9_wC&pg;=RA1-PA86 최근 몇 년 동안 스트라투스는 POSIX 준수를 추가했으며, 많은 오픈 소스 패키지가 VOS에서 실행될 수 있다.accessdate=2016년 5월 21일 경쟁하는 독점 운영 체제와 마찬가지로, VOS는 1990년대와 2000년대 초반에 시장 점유율이 꾸준히 감소하는 것을 목격했다.isbn=9780321118844
# 개발

## VOS 프로그래밍
VOS는 PL/I, 코볼, 파스칼, 포트란, C ((VOS C 및 GCC 컴파일러 포함)), C++ (또한 GCC)용 컴파일러를 제공한다.archive-date=2011년 9월 27일 각 프로그래밍 언어는 VOS 시스템 호출(예: 파일에서 레코드를 읽는 `s$seq_read`)을 할 수 있으며, PL/I 스타일의 가변 길이 문자열을 지원하는 확장 기능을 가지고 있다. 개발자들은 일반적으로 시스템에서 컴파일하기 전에 자신이 선호하는 VOS 텍스트 편집기나 오프라인에서 코드를 작성한다. VOS IDE 애플리케이션은 없다. 역사적으로 스트라투스는 모토로라 68000 마이크로프로세서 제품군("FT" 및 "XA" 시리즈), 인텔 i860 마이크로프로세서 제품군("XA/R" 시리즈), HP PA-RISC 프로세서 제품군("Continuum" 시리즈), 인텔 제온 x86 프로세서 제품군("V 시리즈")을 기반으로 하는 하드웨어 플랫폼을 제공했다. 모든 VOS 버전은 네이티브 명령어 세트를 대상으로 하는 컴파일러를 제공하며, 일부 VOS 버전은 크로스 컴파일러를 제공한다. 스트라투스는 VOS 릴리스 14.3(Continuum에서)에 POSIX API 지원을 추가했으며, VOS 릴리스 14.4에 GNU C/C++ 컴파일러, GNU gdb 디버거 및 많은 POSIX 명령에 대한 지원을 추가했다. VOS의 각 추가 릴리스는 더 많은 POSIX.1 기능을 추가하여, 이제 많은 사용자 모드 오픈 소스 패키지를 성공적으로 빌드할 수 있다. 이러한 이유로, 릴리스 17.0부터 스트라투스는 VOS의 이름을 OpenVOS로 변경했다. 스트라투스는 삼바, 오픈SSL, 오픈SSH, GNU 프라이버시 가드, OpenLDAP, 버클리 DB, MySQL 커뮤니티 서버, 아파치, IBM WebSphere MQ, 및 기타 많은 패키지의 지원되는 포트를 제공한다. VOS의 숫자 값은 기본 하드웨어 플랫폼의 엔디언과 관계없이 항상 빅 엔디언이다. x86 프로세서를 사용하는 리틀 엔디언 서버에서는 컴파일러가 값을 읽거나 쓰기 전에 바이트 스왑을 수행하여 데이터를 네이티브 리틀 엔디언 형식으로 변환한다.
## 명령 매크로 언어
VOS는 메뉴 시스템을 만들거나 작업을 자동화하는 데 사용할 수 있는 상당히 완전한 명령 매크로 언어를 가지고 있다. VOS 명령 매크로는 명령줄 또는 사용자 인터페이스 "폼"을 통해 인수를 받는다. 인수는 명령 매크로 시작 부분의 "parameters" 섹션에서 정의된다. 이 언어는 if/then/else, 부울 연산, "while" 루프, "goto" 및 우수한 오류 보고를 포함한 다양한 문을 지원한다. 명령 매크로 언어는 대화형 및 비대화형(배치 또는 시작된 프로세스) 모드에서 실행될 수 있다. 이는 프롬프트를 캡처하고 적절한 응답을 보내는 프로그램을 자동화하는 데 사용될 수 있다. 이로 인해 스트라투스는 명령 매크로 언어의 기능을 제한하게 되었다.accessdate=2016년 5월 16일 매크로 언어는 사용자 정의 함수를 지원하지 않으며 포함 파일을 쉽게 지원하지 않는다. 문자열 처리는 특히 내장된 제어 문자가 있는 경우 오류가 발생하기 쉽다. VOS 명령 매크로용 비주얼 스튜디오 코드 구문 강조 확장은 비주얼 스튜디오 마켓플레이스에서 찾을 수 있다.
# 개요
VOS는 ftServer 시리즈로 마이그레이션되기 전까지 주로 PL/I와 약간의 어셈블리어로 코딩되었다. 1991년 기준으로, 이 시스템은 PL/I와 C로 작성되었으며, 어셈블리어는 3%에 불과했다.url=https://books.google.com/books?id=sXM8jj29gfIC&pg;=PA25 전반적인 구조는 멀틱스와 많은 공통점을 가지며, 시스템 기능 중 상당수는 멀틱스로부터 다양한 정도로 파생되었다. 이 시스템은 소프트웨어 설계자 또는 프로그래머에게 여러 가지 근본적인 추상화를 제공하며, 가장 주목할 만한 것은 다음과 같다: * 프로세스 * 장치 * 하드 디스크 * 다양한 프로세스 간 통신 메커니즘 * 작업 프로세스는 VOS에서 스케줄링되는 엔터티이며, 각 프로세스는 시스템에 의해 조작되는 방식을 제어하는 일련의 속성을 가진다. 예를 들어, 프로세스는 사용자 이름과 프로세스 이름을 가진다. 전자는 VOS가 외부 장치 및 파일 시스템 항목에 대한 프로세스의 접근 권한을 결정하는 데 사용된다. 근본적으로 중요한 것은 프로세스의 특권 플래그인데, 이는 이진 속성이다. 특권 프로세스는 특권 작업을 수행할 수 있다. 이 메커니즘은 시스템 전체에 영향을 미칠 수 있는 특정 강력한 작업(예: 시스템 종료, 하드 디스크 마운트 해제 등)을 제한하는 데 사용된다.
# 배포
VOS는 스트라투스 테크놀로지스에서만 배포한다. 배포 매체는 Continuum용 3.5mm DAT 테이프와 초기 V 시리즈 플랫폼용 SDLT 테이프이다. OpenVOS 릴리스 17.0부터 스트라투스는 DVD 또는 릴리스 파일 다운로드를 통해 OpenVOS를 배포하는 것을 지원한다. 소프트웨어 설치는 스트라투스 현장 엔지니어 또는 고객의 시스템 관리자가 수행할 수 있다.
# 인터페이스
명령줄 인터페이스는 VOS 시스템의 주요하고 가장 강력한 사용자 인터페이스이다. 사용자는 필요에 따라 명령 매크로 스크립트를 통해 "폼" 기반 서브시스템에 고정될 수 있지만,accessdate=2016년 5월 21일 숙련된 사용자는 이를 벗어나 명령줄 접근 권한을 얻을 수 있다. (실제로 스트라투스 시스템 관리자가 사용자 계정을 설정하여 Stratus Forms Management System(FMS)을 벗어나 명령줄에 접근하려는 시도가 사용자를 로그아웃시키는 결과를 초래할 수 있다.) 명령 매크로와 프로그램은 모든 사용 가능한 매개변수를 나열하는 양식을 표시하는 인수를 사용하여 호출할 수 있으며, 사용자는 "탭" 키를 사용하여 탐색할 수 있다. 각 매개변수는 일반적으로 사용자가 입력할 수 있는 내용을 제어하도록 제한된다. 여기에는 유효한 값 목록, 숫자 전용, 텍스트 전용 등이 포함된다. 매개변수는 "secret" 태그를 사용하여 숨기거나 필수로 만들 수도 있다. VOS의 모든 명령은 단어를 밑줄로 구분하여 전체적으로 정의된다. 예를 들어, change_current_dir는 작업 디렉토리를 변경한다. VOS 도움말 시스템은 이 규칙을 사용하여 가능한 명령의 하위 집합을 찾는 사용자를 돕는다. 예를 들어, "change"와 관련된 명령은 help -match change를 통해 찾을 수 있다. 사용자는 명령에 대한 약어가 포함된 파일을 사용하여 명령 인터페이스를 사용자 정의할 수 있다. 명령 약어는 일반적으로 해당 명령의 첫 글자를 따서 명명되므로, ccd는 change_current_dir foodir로 확장될 수 있다.
# 애플리케이션

## 시스템 애플리케이션
VOS는 Continuum 및 ftServer 시스템에서 사용되며, 둘 다 높은 내고장성을 갖도록 설계되었다. 따라서 이러한 시스템은 일반적으로 안전 필수 또는 임무 필수 애플리케이션, 특히 은행, 병원, 통신 및 트랜잭션 처리 회사에서 사용된다.archive-date=2007년 7월 3일
## 통신
VOS는 다음 프로토콜을 지원한다. * TCP/IP * X.25 * SNA *SDLC/QLLC *Async * Bisync * LAPB *폴/셀렉트 * RJE/HASP *ALC/SLC * 비자, S.W.I.F.T., 나스닥, FAS, CHIPS, AMEX * MQ 시리즈 이전 버전의 VOS는 OS TCP/IP(Operating System TCP/IP)로 알려진 비-OSI 표준 TCP/IP를 구현했다. VOS는 14.x 버전부터 OSI 준수 스트림즈-TCP를 구현했다. OS TCP/IP를 사용하는 이전 애플리케이션은 STCP를 사용하려면 포팅해야 한다.accessdate=2016년 5월 21일 이는 OS TCP/IP가 OSI를 준수하지 않아 폐기된 여러 기능을 지원했기 때문에 기능 손실을 의미할 수 있다. V 시리즈가 실행되는 ft서버 하드웨어는 TCP/IP 및 X.25(X.25는 선택적 NIO 장착 시에만)만 지원한다. 웹스피어 MQ 6.0(일명 MQ 시리즈)은 TCP/IP 기반이므로 ft서버 하드웨어에서도 지원된다. 레거시 프로토콜을 지원하는 장치는 Continuum 하드웨어에서 실행되며, Open StrataLINKpublisher=Stratus Technologies 네트워크를 통해 현재 하드웨어에서 접근할 수 있다.
# 내고장성
내고장성은 VOS에 처음부터 내장되어 있다. 하드웨어 수준에서 주요 장치는 록스텝 이중화 모드로 실행된다. 이는 두 개의 동일한 장치가 동시에 동일한 작업을 수행함을 의미한다. (또한, 각 장치 또는 보드는 내부 보드 오류를 하드웨어 수준에서 식별하기 위해 이중화되어 있으며, 이것이 스트라투스 하드웨어가 "록스텝"으로 정의될 수 있는 이유이다.) 이 보드들은 운영 체제에 의해 적극적으로 모니터링되며, 운영 체제는 사소한 불일치(예: 잘못된 디스크 쓰기 또는 읽기)를 수정할 수 있다. 허용할 수 없는 수의 오류를 보고하는 보드는 시스템에 의해 서비스에서 제거된다. 이중화된 보드는 핫픽스를 통해 문제가 해결될 때까지 계속 작동한다. 여기에는 CPU, 디스크 드라이브 및 논리적으로 이중화될 수 있는 다른 모든 장치(정의상 통신 장치는 제외)가 포함된다. 시스템은 정상적으로 처리를 계속하며 RSN(원격 서비스 네트워크)을 통해 스트라투스 고객 서비스에 자동으로 장애 티켓을 발행한다. 그러면 스트라투스 고객 서비스는 RSN을 사용하여 시스템에 접속하여 문제를 조사하고 교체 부품을 발송한다. 운영 체제는 단일 하드웨어 오류로 인한 충돌을 방지하도록 설계되었다.
# 파일 시스템
VOS는 여러 고유한 파일 유형을 지원한다. * 스트림 파일: 다른 운영 체제의 파일 개념과 직접적으로 일치하는 이진 데이터 스트림. * 고정 파일: 고정 크기 레코드의 시퀀스. * 상대 파일: 임의 접근을 지원하는 고정 최대 레코드 길이의 레코드 시퀀스. * 순차 파일: 가변 크기 레코드의 시퀀스. * 큐 파일: 메시지 큐를 위한 파일 시스템 기반 백업. * 파이프: 프로세스 간 통신을 위한 명명된 파이프. * 트랜잭션 파일: 저널 기반 롤백을 지원한다. VOS API는 파일당 여러 인덱스 생성을 허용하며, 레코드 내용, 외부 키, 내부 키 또는 잘 정의된 다중 키 세트에 따라 정렬한다. 하나 이상의 인덱스를 가진 VOS 파일은 C-ISAM 데이터베이스 테이블로 사용할 수 있다. VOS는 시스템 이름, 디스크 이름 및 디렉토리를 포함하는 독점적인 파일 이름 구문을 사용하며, 구성 요소는 ">" 기호로 구분된다. 일반적으로 시스템 디스크는 CPU와 동일한 모듈인 `#m1`에S 존재하므로, VOS 클러스터의 시스템 파일은 다음과 같이 참조된다. (%system)#m1_d01>system>devices.table VOS 디스크 할당 및 메모리는 각 블록이 4,096바이트인 "블록"으로 구성된다. 메모리는 RAM 또는 페이징 형태를 취한다. VOS 시스템은 페이징 파티션과 페이징 파일을 지원한다. 최신 버전의 VOS에서는 시스템 관리자가 페이징 파일을 동적으로 생성할 수 있다(재부팅 없이는 제거할 수 없음). 이론적으로 이러한 페이징 파일은 하나 이상의 범위(커널에 의해 미니 페이징 파티션으로 간주됨)로 구성될 수 있으며, 이는 연속적일 수도 있고 아닐 수도 있다. 그러나 비연속적 범위는 디스크 활동을 크게 증가시키므로 권장되지 않는다. 관리자는 시스템 부팅 직후 가능한 한 빨리 페이징 파일에 대한 가장 큰 범위를 만들어야 한다.accessdate=2016년 5월 16일
## 파일 시스템 보안
VOS는 모든 파일, 디렉터리 및 장치에 대한 쓰기, 읽기, 실행 및 Null(없음) 접근을 지원한다(단, 디렉터리와 파일은 약간 다른 접근 목록을 가짐). 접근 권한은 사용자, 그룹 또는 전체 시스템에 할당될 수 있다. 사용자가 해당 프로그램이 있는 디렉터리에 "status" 접근 권한을 가지고 있다면 실행 파일을 실행하는 데는 읽기 접근 권한만 필요하다. VOS는 멀틱스에서 접근 제어 목록을 상속받았으며 디렉터리 접근 제어 목록도 구현한다. 파일에 접근 제어 목록이 없으면, 포함하는 디렉터리의 기본 접근 제어 목록이 적용된다. 장치에 대한 접근은 일반적으로 관리자가 장치에 연결된 파일을 생성하여 제어한다. (이것은 OpenVOS에 해당될 수 있지만, 원래 운영 체제에는 적용되지 않는다.) 그런 다음 이 파일에 접근 권한이 부여되고, 이것이 장치에 대한 접근을 설정한다.
# Open StrataLINK
VOS는 항상 네트워크 인식 운영 체제였다. 기본 API의 거의 모든 시스템 호출에는 작업이 영향을 미치는 컴퓨터를 결정하는 매개변수가 있다.publisher=Stratus Technologiespublisher=Stratus Technologies 작업이 로컬이 아니면 원격 서브루틴 호출을 통해 대상 컴퓨터로 리디렉션된다. 예를 들어, 파일 이름은 파일이 상주하는 컴퓨터를 나타내도록 구문 분석된다. StrataLINK 네트워킹 모델은 컴퓨터 이름 지정에 대해 두 가지 수준의 계층 구조를 가진다. 각 컴퓨터는 모듈이라고 불리며 모듈은 시스템으로 집계된다. 각 시스템은 단위로 관리된다. 즉, 시스템의 모든 모듈은 해당 시스템의 모든 디스크와 하드웨어 장치를 인식한다. 이 결과로 시스템 이름으로 시작하는 파일 이름은 다른 컴퓨터의 파일을 참조하며 특별한 네트워킹 필요 없이 열 수 있다. 장치도 마찬가지이다. 프로세스와 같은 다른 시스템 엔터티는 %system#module로 작성된 모듈 이름을 사용하여 참조된다. VOS 시스템 및 모듈 이름은 IP 주소 또는 도메인 이름과 정의된 관계가 없다. VOS API는 인터넷이 널리 채택되기 훨씬 전인 1980년대 후반에 개발되었으며 URL은 발명되기 훨씬 전이다. 역사적으로 StrataLINK는 독점적인 10Mb CSMA/CD 링 네트워크로, 당시에는 매우 낮은 메모리 오버헤드와 CPU 활용률로 높은 성능을 제공했다. 이는 10Mb 이상으로 개발되지 않았고, 이더넷이 지배적인 네트워킹 표준이 되고 메모리 및 CPU 처리 비용이 저렴해지면서 TCP/IP 사용으로 전환되었다. Open StrataLINK는 광역 통신을 위해 X.25도 사용할 수 있다. 광역 통신을 위해 Open StrataLINK 프로토콜을 사용하는 것은 StrataNET이라고도 한다.