# Stratus VOS

Stratus VOS (Virtual Operating System) è un sistema operativo proprietario in esecuzione sui sistemi informatici a tolleranza dei guasti di proprietà di Stratus Technologies. VOS è disponibile sulle piattaforme ftServer e Continuum della Stratus. I clienti VOS lo utilizzano per supportare applicazioni di elaborazione di transazioni ad alto volume che richiedono una disponibilità continua. VOS è noto per essere uno dei pochi sistemi operativi che girano su hardware totalmente ridondante.
Durante gli anni '80, esisteva una versione IBM di Stratus VOS che veniva chiamata System / 88 Operating System.

## Storia

VOS è stato progettato sin dall'inizio come un ambiente per l'elaborazione di transazioni ad elevata sicurezza su hardware a tolleranza di guasti. Incorpora gran parte dell'esperienza progettuale acquisita con il progetto Multics del MIT / Bell-Laboratories / General-Electric (in seguito Honeywell).
Nel 1984, Stratus ha aggiunto un'implementazione di UNIX System V chiamata Unix System Facilities (USF) a VOS, integrando Unix e VOS a livello di kernel.

## Sviluppo

VOS fornisce compilatori per PL/I, COBOL, Pascal, FORTRAN, C (con i compilatori VOS C e GCC) e C++ (anche GCC). Ognuno di questi linguaggi di programmazione può effettuare chiamate al sistema VOS (ad esempio s$seq_read per leggere un record da un file) e ha estensioni per supportare stringhe di lunghezza variabile in stile PL/I. Gli sviluppatori in genere codificano nel loro editor di testo VOS preferito, o offline, prima di compilare sul sistema; non ci sono applicazioni VOS IDE.
Nella sua storia, Stratus ha offerto piattaforme hardware basate sulla famiglia di microprocessori Motorola 68000 (serie "FT" e "XA"), la famiglia di microprocessori Intel i860 (serie "XA / R"), la famiglia di processori HP PA-RISC ("Continuum" serie) e la famiglia di processori Intel Xeon x86 ("Serie V"). Tutte le versioni di VOS offrono compilatori mirati al set di istruzioni nativo e alcune versioni di VOS offrono cross-compilatori.
Stratus ha aggiunto il supporto per l'API POSIX in VOS versione 14.3 (su Continuum) e ha aggiunto il supporto per il compilatore GNU C / C ++, il debugger gdb GNU e molti comandi POSIX in VOS versione 14.4. Ogni versione aggiuntiva di VOS ha aggiunto ulteriori funzionalità POSIX.1, al punto in cui molti pacchetti open source in modalità utente possono ora essere creati con successo. Per questo motivo, a partire dalla versione 17.0, Stratus ha rinominato VOS in OpenVOS.
Stratus offre porte supportate di Samba, OpenSSL, OpenSSH, GNU Privacy Guard, OpenLDAP, Berkeley DB, MySQL Community Server, Apache, IBM WebSphere MQ e l'edizione della comunità di Java.
I valori numerici in VOS sono sempre big endian, indipendentemente dall'endianness della piattaforma hardware sottostante. Sui server little endian con processori x86, i compilatori eseguono uno scambio di byte prima di leggere o scrivere valori in memoria per trasformare i dati nel o dal formato nativo little endian.

### Comando Macro Language

VOS ha un linguaggio macro comando abbastanza completo che può essere utilizzato per creare sistemi di menu, automatizzare attività ecc. Le macro dei comandi VOS accettano argomenti sulla riga di comando o tramite un "modulo" di interfaccia utente. Gli argomenti sono definiti all'inizio della macro di comando in una sezione "parametri". Il linguaggio supporta una serie di istruzioni, tra cui if / then / else, operazioni booleane, "while" loops, "goto" e eccellente segnalazione degli errori. Il linguaggio delle macro dei comandi può essere eseguito in modalità interattiva e non interattiva (batch o processo avviato). Può essere utilizzato per automatizzare i programmi, acquisire prompt e inviare risposte appropriate. Ciò ha portato Stratus a limitare le capacità del linguaggio macro dei comandi.
Il linguaggio macro non supporta le funzioni definite dall'utente e non supporta facilmente i file di inclusione. La gestione delle stringhe è soggetta a errori, specialmente con caratteri di controllo incorporati.

## Panoramica

VOS è stato codificato principalmente in PL/I e in piccola parte in linguaggio assembly prima di essere migrato alla serie ftServer. A partire dal 1991, il sistema è stato scritto in PL/I e C, con solo il 3% in assembly. Questo e i compilatori avanzati di Stratus hanno reso VOS più portabile rispetto ad analoghi sistemi come VMS o Domain/OS.
Complessivamente la sua struttura ha molto in comune con Multics e molte delle funzionalità del sistema possono essere ricondotte ad esso su vari livelli. Il sistema espone una serie di astrazioni fondamentali al progettista o programmatore di software, in particolare per:
* Processi
* Dispositivi
* Dischi rigidi
* Vari meccanismi IPC
* Tasks
Un processo è l'entità pianificata in VOS e ogni processo ha una serie di attributi che regolano il modo in cui viene manipolato dal sistema. Ad esempio, i processi hanno un nome utente e un nome processo . Il primo viene utilizzato da VOS per determinare i diritti di accesso al processo su dispositivi esterni ed elementi con il file system. Di fondamentale significato è il flag privilegiato di un processo, che è un attributo binario. I processi con privilegi possono eseguire operazioni privilegiate. Questo meccanismo viene utilizzato per limitare alcune operazioni potenzialmente potenti che possono avere conseguenze a livello di sistema (ad es. Spegnimento del sistema, smontaggio di un disco rigido ecc.).

## Distribuzione

VOS è distribuito solo da Stratus Technologies. Il supporto di distribuzione inizialmente era su nastro. A partire dalla versione 17.0 di OpenVOS, Stratus offre supporto per distribuire OpenVOS su un DVD o scaricando un file di rilascio.

## Tolleranza ai guasti

La tolleranza ai guasti è integrata in VOS dal basso verso l'alto. A livello hardware, i dispositivi principali vengono eseguiti in modalità duplex bloccata, ovvero due dispositivi identici eseguono la stessa azione contemporaneamente. (Inoltre, ogni dispositivo o scheda è anche fronte-retro per identificare i guasti della scheda interna a livello hardware, motivo per cui l'hardware Stratus può essere definito come "blocco graduale"). Queste schede sono attivamente monitorate dal sistema operativo che può correggere eventuali incoerenze minori (come scritture o letture errate del disco). Le schede che segnalano un numero inaccettabile di guasti vengono rimosse dal servizio dal sistema; la scheda duplex continuerà a funzionare fino a quando il problema non verrà risolto tramite una correzione rapida. Ciò include CPU, unità disco e qualsiasi altro dispositivo che può essere logicamente duplex (che per definizione esclude i dispositivi di comunicazione). Il sistema continuerà l'elaborazione normalmente e genererà automaticamente un ticket di errore con il servizio clienti Stratus tramite RSN (la rete di servizi remoti). Il servizio clienti Stratus si collegherà quindi al sistema utilizzando RSN per indagare sul problema e inviare i pezzi di ricambio.
Il sistema operativo è progettato per evitare arresti anomali dovuti a un errore hardware semplificato.