Stratus VOS
1208810
217803646
2008-06-07T19:24:10Z
Ghettoblaster
6603820
/* References */
{{infobox OS
| name = VOS
| caption = Stratus VOS
| family = [[multics]]-like
| kernel_type = [[Monolithic kernel]]
| license = Kernel: [[Stratus Technologies]]<br />Drivers, libraries, and user-land programs: [[Stratus Technologies]], Other
| working_state = Current
}}
'''VOS''' is a proprietary [[operating system]] running on [[Stratus Technologies]] computer systems. Currently VOS is only available on Stratus's ftServer and Continuum platforms [http://www.stratus.com/products/index.htm], and is typically used in critical transaction processing scenarios where the built-in fault-tolerance delivers extremely high-availability.
==History==
According to the Stratus FAQ,<ref name="Stratus FAQ">ftp://ftp.stratus.com/vos/faq.txt</ref> VOS was designed from its inception as a high-security transaction-processing environment tailored to fault-tolerant hardware. It incorporates much of the design experience that came out of the famous MIT/Bell-Laboratories/General-Electric (later Honeywell) [[MULTICS]] project.
In recent years efforts have been made towards [[POSIX]]-compliance,<ref name="VOS POSIX">[ftp://ftp.stratus.com/vos/posix/posix.html VOS POSIX and Open-Source Software<!-- Bot generated title -->]</ref>, and a number of open source projects can run on VOS.
==Development==
===Programming in VOS===
VOS supports its own non-standard dialects of [[PL/I]], [[COBOL]], [[Pascal (programming language)|Pascal]], [[FORTRAN]], [[VOS C]], [[BASIC]], and POSIX [[C++]].<ref name="Vos Specifications">[http://www.stratus.com/products/vos/tech.htm Stratus Technologies : Products : Operating Systems : VOS : VOS Technical Specifications<!-- Bot generated title -->]</ref> Most of these languages are extended to be able to make VOS system calls (e.g. <code>s$seq_read</code> to read a record from a file), and to support variable length strings in PL/1 style. Developers typically code in their favourite text editor, or offline, before compiling on the system. In older versions of VOS, program modules must be compiled on the system they are to be used on. Modern versions of VOS offer cross compilers.
VOS now has support for CORBA and POSIX.1.
Values in VOS are generally [[big endian]], and the built-in indexing of files often relies on this. On servers with [[Pentium]] processors, the compilers do a byte swap before reading or writing values to memory.
===Command Macro Language===
VOS has a fairly complete command macro language which can be used to create menu systems, automate tasks etc. VOS command macros accept arguments on the command-line or via a user interface "form". Arguments are defined at the beginning of the command macro in a "parameters" section. The language supports a range of statements, including if/then/else, boolean operations, "while" loops, "goto" and excellent error reporting. The command macro language can be executed in interactive and non-interactive modes. It can be used to automate programs, capturing prompts and sending appropriate responses. This has led Stratus to limit the capabilities of the command macro language.<ref name="Paging discussion">http://groups.google.ie/group/comp.sys.stratus/browse_thread/thread/521e96daaf84d858?hl=en</ref>
The macro language lacks support for user-defined functions and does not easily support include files. The string handling is prone to errors, especially with embedded control characters.
==Overview==
VOS was coded mainly in PL/I with a small amount of assembly language before it was migrated to ftServer series but now it is coded in POSIX compliant C & C++, assembly language & legacy PL1. It's overall structure has much in common with Multics, and many of the systems sophisticated features can be traced back to Multics to varying degrees. The system exposes a number of fundamental abstrcations to the software deisgner or programmer, most notable being
*Processes
*Devices
*Hard Disks
*Various IPC mechanisms
*Tasks
A process is the scheduled entity in VOS and each process has a set of attributes that govern how it is manipulated by the system, for example processes have a ''user name'' and ''process name'', the former is used by VOS to determine the processes access rights to external devices and items with the file system, of fundamental significance is a processes privileged flag which is a binary attribute; privileged processes may perform privileged operations, this mechanism being used to restrict certain potentially powerful operations that can have system wide consequences (e.g shutting down the system, dismounting a hard disk etc)
==Distribution==
VOS is distributed only by [[Stratus Technologies]], usually arriving on a 3.5 mm DAT tape. Installations may be done by the Stratus Field Engineer or by the systems' SysAdmin.
==Interface==
The command-line interface is the main, and most powerful, user interface for a VOS system.
Users may be locked into "form" based sub-system by command macro scripts<ref name="backup operator">http://stratadoc.stratus.com/vos/14.7.1/r285-03/wwhelp/wwhimpl/js/html/wwhelp.htm?context=r285-03&file=ch1r285-03.html</ref> if required, although a skilled user would be able to break out of this and get command-line access.
Command macros and programs can be invoked with an argument to display a form listing all the available parameters, which the user can navigate using the "tab" key. Each parameter can be restricted to control what the user can input. This includes lists of valid values, numeric-only, text-only, etc. Parameters can also be hidden using a "secret" tag, or made mandatory.
All commands in VOS are typed out in full with underbars to separate words, for example <code>change_current_dir</code> to change directory to a given path.
Every user has a file which contains a list of standard abbreviations for common commands, command strings, or commands with common variables. Command abbreviations are conventionally named after the first letters of the command they represent, so <code>ccd foodir</code> may be expanded to <code>change_current_dir foodir</code>.
The user can add, delete or modify the abbreviations, and many experienced VOS users have an abbreviations file built up over a long time that they bring with them to new systems and jobs.
VOS processes run a start-up command <code>start_up.cm</code> on login (and also for non-interactive processes). This command macro can be used for a variety of purposes including loading multiple custom abbreviations file, setting custom file-paths, loading emacs customisations etc. Experienced users will also generally have a custom start-up command macro that they may wish to use on new systems.
==Applications==
===System applications===
VOS is used on Continuum and ftServer systems, both of which are designed to be highly fault-tolerant. As such, these systems are typically used in safety-critical or mission-critical applications, typically banks, hospitals, telecommunications and transaction processing companies.<ref name="Stratus References">[http://www.stratus.com/products/reference/index.htm Stratus Technologies : Client Success Stories<!-- Bot generated title -->]</ref>
===Communications===
VOS supports the following protocols<ref name="VOS info page">[http://www.stratus.com/products/vos/tech.htm Stratus Technologies : Products : Operating Systems : VOS : VOS Technical Specifications<!-- Bot generated title -->]</ref>
*TCP/IP
*X.25
*SNA
*SDLC/QLLC
*Async
*Bisync
*LAPB
*Poll/Select
*RJE/HASP
*ALC/SLC
*Visa, S.W.I.F.T., NASDAQ, FAS, CHIPS, AMEX
*MQ Series
Older versions of VOS implemented a non-OSI standard TCP/IP known as OS-TCP. VOS since version 14.x has implemented OSI-compliant Streams-TCP. Older applications using OS-TCP have to be ported in order to use STCP.<ref name="Porting OS-TPP">http://stratadoc.stratus.com/vos/14.7.1/r418-03/wwhelp/wwhimpl/js/html/wwhelp.htm?context=r418-03&file=ch1r418-03.html</ref> This can mean the loss of functionality as OS-TCP supported several functions that are no OSI-compliant and have therefore being abandoned.
==Fault tolerance==
Fault tolerance is built into VOS from the bottom up. On a hardware level, major devices are run in lock stepped duplex mode, meaning that there are two identical devices performing the same action at the same time. These devices are actively monitored by the operating system which can correct any minor inconsistencies (such as bad disk-writes or reads). Any devices which report an unacceptable number of faults are removed from service by the system. This includes CPUs, disk drives, communications devices etc. The system will continue processing as normal and if properly configured, a Stratus-supported system will automatically raise a fault ticket with Stratus Customer Service, who can dial into the system using a dedicated link to investigate the problem and dispatch replacement parts.
Typically a modern Stratus ftServer or Continuum can expect to see 99.999% uptime. This is not to say that the applications running on these systems will achieve this level of uptime, only that the operating system will not crash due to an operating system bug.
==File system==
VOS supports a number of unique file types:
* Stream files: a stream of binary data, corresponding directly with the concept of a file on other operating systems.
* Fixed files: a sequence of records of a fixed size.
* Relative files: a sequence of records of a fixed file supporting random access
* Sequential files: a sequence of records of variable size
* Queue files: file-system based backup for [[message queue]]s
* Pipes: [[named pipe]]s for [[inter-process communication]]
* Transaction files: these provide support for journal based rollback
The VOS API allows the creation of multiple indexes a file, sorting according to the contents of a record, or an external key. A VOS file can be used as a sorted database table.
VOS uses a proprietary file naming syntax which includes the system name, module name, disk number, and directory, with components separated by the ">" symbol. Typically the system disk will be housed in the same module as the CPU, <code>#m1</code>, so a text file in a SysAdmin home directory would be referenced as
%systemname#m1_d01>SysAdmin>Joe_Bean>testfile.txt
VOS disk allocation and memory is organised in "blocks", each block being 4,096 bytes. Memory takes the form of RAM or paging. VOS systems support paging partitions and paging files. In modern versions of VOS, paging files can be created dynamically by the SysAdmin (but not removed without a reboot). These paging files can in theory consist of more than one extent (which is viewed by the kernel as a mini-paging partition) which may or may not be contiguous. However, non-contiguous extents are NOT recommended as they greatly increase disk activity. Admin should create the largest possible extent for the paging files as early as possible after the system has been booted.<ref "Paging Discussion">http://groups.google.ie/group/comp.sys.stratus/browse_thread/thread/0cd3ca08e000cd2e?hl=en</ref>
===File system security===
VOS supports write, read, execute, and null access to all files, directories and devices. Access can be assigned to users, groups, or the world. Only read access is required to run an executable program.
VOS inherited access control lists from [[multics]] and also implements directory access control lists. If a file does not have an access control list, the containing directory's default access control list applies.
Access to devices is typically controlled by creating a file which is linked to the device by the administrator. Access is then given to this file, and this sets the access on the device.
Access to operating systems commands is controlled by adding the command to a table in the system directory, and defining which users or groups have access to that command. Badly configuring this file has been known to force reboots of systems.
== See also ==
* [[Stratus Technologies]]
* [[Fault tolerant]]
== References ==
{{reflist|2}}
== External links ==
* [http://www.stratus.com/] Stratus Technologies homepage
* [http://groups.google.com/group/comp.sys.stratus] Comp.Sys.Stratus
* [http://ftp.stratus.com/index.html] Stratus Public FTP Server
* [http://stratadoc.stratus.com/splash/vos.html] Stratus Documentation Site
[[Category:Operating systems]]