|
DataMuseum.dkPresents historical artifacts from the history of: CP/M |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CP/M Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 135552 (0x21180) Types: TextFile Names: »D49«
└─⟦2294a1cd1⟧ Bits:30005867/disk06.imd Dokumenter (RCSL m.m.) └─⟦this⟧ »D49«
i F_O_R_E_W_O_R_D_ First edition: RCSL No 31-D482. Second edition: RCSL No 31-D512. This manual describes the operating system SOS, as it appears in release 2.0, October 1978. The former version was a preliminary version intended for multiterminal jobs. The present version in- cludes interactive multiterminal jobs (using TEM), interactive single terminal jobs (with or without using TEM) and batch jobs. The present version supports in a primitive form access to de- vices like tape stations and flexible discs. This manual is an exhaustive description of SOS and it includes subjects of interest to users, programmers, operators and instal- lation staff. Niels Møller Jørgensen A/S REGNECENTRALEN, September 1978 Third edition: RCSL No 31-D662. The changes are indicated by correction lines in the left margin and concern mainly the description of the new facility for typing invisible password. Edith Rosenberg A/S REGNECENTRALEN af 1979, October 1981 \f ii \f iii T_A_B_L_E_ _O_F_ _C_O_N_T_E_N_T_S_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _P_A_G_E_ 1. INTRODUCTION ........................................... 1 2. USER'S Guide ........................................... 4 2.1 SOS Illustrated by Means of Examples .............. 4 2.2 SOS User Commands ................................. 13 2.2.1 Job Creation Commands ...................... 14 2.2.2 Multiterminal Commands ..................... 15 2.2.3 Job Intervention Commands .................. 17 2.2.4 Device Handling Commands ................... 18 2.2.5 Password ................................... 19 2.3 Terminal Access ................................... 20 2.4 Resource Allocated to SOS Jobs .................... 21 3. REFERENCE INFORMATION .................................. 22 3.1 Job Scheduling .................................... 22 3.2 Terminal Access ................................... 25 3.3 SOS - Job Intercommunication ...................... 26 3.3.1 Primary Input and Output ................... 27 3.3.2 Transparent Communication to TEM ........... 28 3.3.3 Parent Messages ............................ 30 4. OPERATING GUIDE ........................................ 33 4.1 Start-Up .......................................... 33 4.2 Operator Intervention ............................. 34 4.2.1 System Intervention ........................ 34 4.2.2 Job Intervention ........................... 35 4.2.3 Device Support ............................. 36 4.3 Close Down ........................................ 37 4.4 How to Handle System Failure ...................... 37 5. INSTALLATION NOTES ..................................... 40 5.1 System Distribution ............................... 40 5.2 System Trimming ................................... 41 5.3 User Catalog ...................................... 48 5.3.1 Data per Job (Process) ..................... 49 \f iv T_A_B_L_E_ _O_F_ _C_O_N_T_E_N_T_S_ _(_c_o_n_t_i_n_u_e_d_)_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _P_A_G_E_ 5.3.2 Creation and Change of the User Catalog .... 50 5.3.2.1 Creation .......................... 51 5.3.2.2 Change ............................ 53 5.3.2.3 Listing ........................... 55 5.3.3 Resources Needed for Creating a Catalog .... 55 5.3.4 Error Messages ............................. 56 5.4 Test Facilities ................................... 59 A_P_P_E_N_D_I_C_E_S_: A. REFERENCES ............................................. 63 B. SOS COMMANDS ........................................... 64 C. MESSAGES FROM SOS ...................................... 65 D. AN EXAMPLE OF A MULTITERMINAL PROGRAM .................. 71 E. EXAMPLE OF A USER CATALOG .............................. 72 F. THE AUXILIARY FILE "sostrim" ........................... 73 G. THREE VERSIONS OF A MASTER MIND PROGRAM ................ 75 G.1 Simple Single Terminal Version .................... 75 G.2 Single Terminal Version with Input Checking ....... 76 G.3 Multiterminal Version with Input Checking ......... 77 H. INDEX .................................................. 78 H.1 Survey of Examples ................................ 78 \f F_ 1_._ _ _ _ _ _ _ _ _I_N_T_R_O_D_U_C_T_I_O_N_ 1. The main purpose of an operating system is to serve the users by supervising the execution of their programs. In a multiprogram- ming environment with a number of users running their programs simultaneously the main tasks include: 1) facilitate resource sharing 2) control and facilitate the access to common equipment 3) prevent unauthorized access to private information In the case of RC8000 the supervisory functions are performed by the monitor (ref. 1). The resources of the computer may be par- titioned into so-called processes. A process is a set of re- sources used for program execution. In each process programs may be executed one at a time. A process may play the role of an operating system by creating and controlling child processes ac- cording to some strategy. SOS is an operating system process and each user logged in is served by a child process, created by SOS. In many computer systems the primary store is a key resource. To obtain a good machine utilization it is important that key re- sources are released, when they are not actively used. At interactive program execution there will be long periods du- ring which the process waits for the terminal operator to type some input. In case no resources are released during these per- iods, the machine utilization will become prohibitively poor. The main purpose of SOS is to make a number of programs (pri- marily interactive programs) share the same part of primary store. This is done by supervising the program execution and by swopping programs (writing the primary store to backing store during passive periods). SOS is mainly intended for supporting interactive program exe- cution. However, SOS includes facilities for executing batch\f jobs, too, and the resource scheduling is based on the following elements: A series of programs executed in the same process one after the other is called a "job". a) Any job running under SOS is in one of the following states: 1) running 2) suspended (ready to run, but the primary store is occupied by another job) 3) waiting (the job is not ready to run - e.g. waiting for terminal input) b) Execution time is allocated in slices (of a few seconds). In case a job does not suspend itself within a time slice it will be suspended by SOS. c) Highly interactive jobs will be favoured by a high prior- ity, while more CPU-bound jobs will get descreased prior- ity. The time slices are allocated according to the prior- ities of all jobs which are ready to run. d) Batch (or background) jobs are activated only during pe- riods where no interactive jobs are ready to run, and a running batch job is stopped immediately when some inter- active job becomes ready for activation (for instance when input arrives from a terminal). In RC8000 any program (utility or user defined program) is ex- ecuted in a so-called "process", no matter the operating system controlling the execution. Thus the access to the basic computing facilities (CPU, primary store and backing store) is not affected by the actual operating system, and all utility programs like compilers, editor, catalog handling programs etc. may be used under SOS exactly as under S or BOSS. However, SOS does not allow full and direct access to slow de- vices like printers, paper tape readers etc. This is so because\f the resources occupied by programs using slow devices are often poorly utilized - it is extremly inconvenient if interactive pro- grams are blocked by programs using slow devices. The use of slow devices is assumed to be undertaken by service modules like the printing module (PRIMO) or the file router. \f F_ 2_._ _ _ _ _ _ _ _ _U_S_E_R_'_S_ _G_U_I_D_E_ 2. The present chapter illustrates by means of examples some of the facilities offered by SOS. All facilities of SOS are described in detail in later sections. According to the intentions of SOS the examples mainly concern interactive program execution. 2_._1_ _ _ _ _ _ _ _S_O_S_ _I_l_l_u_s_t_r_a_t_e_d_ _b_y_ _M_e_a_n_s_ _o_f_ _E_x_a_m_p_l_e_s_ 2.1 Job creation. SOS is always accessed from a terminal and a session is initiated by a "job creation". At job creation SOS consults the user cata- log to check that the user is allowed to use the system and to know how much resources shall be allocated to him. The job crea- tion is initiated by pushing the attention key. The user is then asked for the name of the system, he is going to use. In case of SOS the user will be answered by a ">" and then he may type his command. (In the examples all output written on the terminal is printed with capital letters while terminal input is printed with small letters. @ denotes a push on the attention key). @ ATT sos > go rc pass nn 02.06 SOS: RC ENROLLED Example 1: Job creation. The command (go) creates a set of resources (a process) with the name "rc" and initiates this process by loading the file proces- sor FP (see ref. 3). In this example a password ("nn") is de- manded to create the job "rc". When a user has started a session by creating a job as explained in the former, his next command(s) will be interpreted by FP and he will be able to run the utility programs interactively. \f M_ claim AREA 24 BUF 25 SIZE 60416 FIRST CORE 65268 DISC: 21 SEGM/SLICE TEMP 504 SEGM 18 ENTR LOGIN 315 SEGM 5 ENTR P_ PERM 315 SEGM 5 ENTR Example 2: Executing utility program. Simple program development. The present part of the chapter primarily deals with interactive program development (typing and debugging), and readers who are not familiar with or not interested in program development, may skip this section and continue at "execution of interactive programs". Assume that some user wants to exercise his mind by playing the "master mind" game. Then he needs someone to set up random com- binations and to answer his guesses. He realizes that in case he could write a program enabling the computer to do the job, he would have the fastest, most reliable and most patient player ever seen. After some thinking the user has created a program in his mind (and on a piece of paper) and he wants to debug it. First of all he must type in the program text. This is done by using the utility program "edit". \f M_ mastertxt=edit EDIT BEGIN. i/ begin integer array solution,guess(1:4); integer i,j,x,digitok,digitincluded; setcombination: for i:=1 step 1 until 4 do begin random(x); solution(i):=x mod 10; for j:=1 step 1 until i do if solution(i) = solytion(j) and i <> j then i:=i-1; end; write(out,<:master mind program ready<10>:>); next: setposition(out,0,0); write(out,<: :>); for i:=1step 1 until 4 do read(in;guess(i)); digitok:=digitincluded:=0; for i:=1 step 1 until 4 do begin for j:=1 step 1 until 4 do if guess(i) = solution(j) then begin if i=j then digitok:=digitok+1 else digitincluded:=digitincluded+1; end; write(out,<<dd>,guess(i)); end; write(out,<: => :>,false add 43,digitok, false add 32,4-digitok, false add 45,digitincluded, false add 10,1); if digitok <4 then goto next else begin write (out,<:you got it !!<10>:>); goto setcombination; end; /, f P_ EDIT END. Example 3: Creating a text file. \f Now the program text has been created and stored in the file "mastertxt". To save the text for later use it may be permanented by means of the utility program "scope": M_ scope user mastertxt lookup mastertxt MASTERTXT =SET 2 DISC D.780930.0207 0 0 0 0 ; USER P_ ; 1886 135 3 810 819 Example 4: Executing utility programs. After this the program may be translated by calling the ALGOL compiler. M_ masterprog = algol mastertxt MASTERTXT D.780930.0207 1:BEGIN 37:END; 6. LINE 10 . 3 UNDECLARED LINE 16 . 6 TERMINATION LINE 16 . 8 DELIMITER P_ ALGOL END 22 Example 5: Program translation. The errors detected by the compiler may be corrected by means of the editor, like this: M_ newmaster = edit mastertxt EDIT BEGIN. 1./solytion/, r/solyt/solut/ IF SOLUTION(I) = SOLUTION(J) AND I <> J THEN I:=I-1; 1./read(in;/ FOR I:=1 STEP 1 UNTIL 4 DO READ(IN;GUESS(I)); r/in;/in,/ FOR I:=1 STEP 1 UNTIL 4 DO READ(IN,GUESS(I)); f EDIT END. mastertxt=move newmaster masterprog = algol mastertxt MASTERTXT D.780930.0217 1:BEGIN 37:END; P_ ALGOL END 25 Example 6: Text editing. \f The corrected version of the program is translated and in case the translation was successful the next step will be to run the program. Execution of interactive programs. All programs (utility or user defined) are activated by the file processor which reads the job control commands (program calls) loads the actual programs and hands over eventual parameters. The master mind program just created uses no parameters and it may be executed like this: M_ masterprog MASTER MIND PROGRAM READY 0 1 2 3 0 1 2 3 => -- 4 5 6 7 4 5 6 7 => - 1 0 7 8 1 0 7 8 => --- 7 9 1 0 7 9 1 0 => + - 7 8 0 2 7 8 0 2 => --- 6 2 8 0 6 2 8 0 => ++ 3 7 8 0 3 7 8 0 => ++++ YOU GOT IT !! P_ MASTER MIND PROGRAM READY Example 7: Execution of interactive program. The master mind program is by its nature an interactive program as it would not be possible to prepare the input (guesses) in advance - each new input will depend on all answers written by the program. \f The program developed will never terminate. When the user reaches the solution the program will generate a new one and try again. The only way to escape is to make a job intervention. To remove the job the user may proceed like this: M_ @ ATT sos >kill 02.23 SOS: READY P_ 02.23 SOS: RC REMOVED AFTER USER KILL Example 8: Job intervention. Job termination. However, most programs will terminate, and the usual way to close a terminal session is by calling the utility program "finis". This program tells SOS that the job has finished and the re- sources allocated may be released. M_ finis P_ 02.24 SOS: RC REMOVED AFTER FINIS Example 9: Job termination. The master mind program may be changed in different ways. In ap- pendix G is shown two new versions. One of them is a single ter- minal version performing input check. The other one is a multi- terminal version based on the context facility of ALGOL and ac- cessing the terminals via TEM. Accessing a Multiterminal Program. A Multiterminal version of the mastermind program (as shown in appendix G) may be accessed from a terminal by using the multi-\f terminal "login" and "logout" facilities of SOS. The session may look like this (the program is executed in the job "team"): M_ @ ATT sos >in team usera pass a1 02.52 SOS: TERMINAL CONNECTED FROM TEM MASTER MIND PROGRAM READY 0 1 2 3 0 1 2 3 = > - 4 5 6 7 4 5 6 7 => - 8 9 1 5 8 9 1 5 => + -- 9 8 2 5 9 8 2 5 => ++ - 9 3 8 5 9 3 8 5 => ++++ YOU GOT IT !! P_ MASTER MIND PROGRAM READY Example 10: Running a multiterminal program. Automatic Program Activation. In the examples shown so far the user has controlled his activ- ities by calling the programs one by one. In case a user from time to time runs exactly the same set of programs exactly the same way, he may get his programs activated automatically. This may be done by stating in the user catalog a set of commands that will be interpreted at login. \f Some service functions may be implemented by executing automati- cally activated programs. A program, listing the jobs currently enrolled, might be run this way: M_ @ ATT sos >run display FROM TEM 02.25 SOS: DISPLAY ENROLLED DISPLAY AF SOS DEN 78 09 30 KL. 2.25 CLAIM: NAVN START RØRT CPU SIZE BUF AREA RCSAVE 02.24 02.24 0.0 75264 3 6 TEAM 02.25 02.25 0.0 75264 3 6 DISPLAY 02.25 02.25 0.1 12800 3 5 END 21 P_ 02.25 SOS: DISPLAY REMOVED AFTER FINIS Example 11: Automatic program activation. Running batch jobs A number of activities are not suited for interactive execution. Often these activities are running for a long time without any communication with the user. Programs generating safety copies, translation of large systems or large database reorganizations are all examples of typical batch programs. Under SOS, batch programs may be executed, too. However, batch programs will never be activated when interactive programs are ready for running. \f A user who wants to "save" his files on a magnetic tape may do like this: M_ @ ATT sos >batch rcsave 02.27 SOS: RCSAVE ENROLLED save mtlk0001.1.label.private tsos ttem NO DUMPLABEL ON FILE 1 WRITTEN: DUMP MTLK0001 001 VERS. 300978.02 S=1 PRIVATE TSOS 144 PROJECT.DISC D.780929.2137 TTEM 67 PROJECT.DISC D.780926.2015 2 ENTR., 211 SEGM. WRITTEN: DUMP MTLK0001 002 EMPTY 300978.02 PRIVATE END 75 finis P_ 02.29 SOS: RCSAVE REMOVED AFTER FINIS Example 12: Running a batch job from a terminal. In case many interactive users are active in the system or in case the user saves many large files he will have to spend rather a long time between the "save-command" and the "finis command". Instead he might prepare the whole job by creating a jobfile with the same contents: M_ savejob=edit EDIT BEGIN i/ save mtlk0001.1.label.private tsos ttem finis /,f EDIT END. P_ scope project savejob Example 13: Creating a job file. The whole job may now be executed using this jobfile. By doing so, the user does not have to stay at the terminal during the run. \f M_ @ ATT sos >batch rc jobfile savejob pass nn 02.32 SOS: RC ENROLLED READ : DUMP MTLK0001 001 VERS. 300978.02 S=1 PRIVATE WRITTEN: DUMP MTLK0001 001 VERS. 300978.02 S=1 PRIVATE TSOS 147 USER.DISC D.780930.0137 TTEM 67 PROJEKT.DISC D.780926.2015 2 ENTR., 214 SEGM. WRITTEN: DUMP MTLK0001 002 EMPTY 300978.02 PRIVATE END 75 P_ 02.34 SOS: RC REMOVED AFTER FINIS Example 14: Running a job using a job file. Often it would be more convenient if output from batch jobs were printed on a line printer. This may be done by using the service module PRIMO (see ref. 5). The output is currently written into a backing storage file and at job termination, PRIMO is asked to print the file. M_ savejob=edit EDIT BEGIN i/ o outfile save mtlk0001.1.label.private tsos ttem o c scope user outfile filexfer outfile lp queue.paper.a4 finis /,f P_ EDIT END Example 15: Job file routing job output to printer. 2_._2_ _ _ _ _ _ _ _S_O_S_ _U_s_e_r_ _C_o_m_m_a_n_d_s_ 2.2 In this section all SOS user commands are described, their syntax and their semantics. The commands are grouped according to their functions. In chapter 4 of this manual (the Operating Guide) the SOS commands used at operator intervention are described. In case\f the system is run by the users themselves at least some of the users will have to know how to use these operator intervention commands. 2_._2_._1_ _ _ _ _ _J_o_b_ _C_r_e_a_t_i_o_n_ _C_o_m_m_a_n_d_s_ 2.2.1 SOS has three different job creation commands: "go", "run" and "batch". The syntax for the job creation commands is: M_m_m_ go 1 run <jobname> jobfile <filename> P_p_p_ batch 0 M_m_m_ 1 1 pass <password> newpass <password> P_p_p_ 0 0 See examples 1, 11, 12 and 14. Each of these commands will create a job (a process) with a set of resources as described in the user catalog. A job started by the "go" or the "run"-command will be scheduled as an interactive job while a "batch" job will be scheduled as a background job (i.e. a "batch" job may only be active during periods where no "go" or "run" jobs are ready for activation). The difference between the "go" and the "run" commands concerns the handling of the terminal only. In case of a "run" command the terminal is connected via TEM (see ref. 4), offering output spooling. In case of a "go" command, the terminal is accessed by SOS directly - and no spooling is offered. At "batch" jobs, the terminal is always accessed by SOS directly (as at "go"). The "jobfile" option enables the user to prepare his job by creating a (permanent) file containing all program calls etc. necessary for the execution of his job. The jobfile is said to be the primary input document of the job. At jobs not using the job- file option, the terminal is the primary input document. In all cases the terminal is the primary output document of the job. \f To avoid confusion, SOS will not accept that a given terminal is the primary input document of more than one job at a time. How- ever, the same terminal may be the primary output document of several jobs. In other words, several jobs may be started from the same termi- nal (and run simultaneously), but at most one of these jobs may be created without using the jobfile option. In the description of a process (a job) in the user catalog a field defining a password is included. In case this password is nonempty, the job creation will not be accepted unless the com- mand includes: pass <password>. This facility is included to check the authorization of the user and to grant privacy. An im- proved security may be obtained by redefining the password. This may be done by using the "newpass" option. By means of this op- tion, the password may be changed at startup like this: ... pass hobo newpass hifi (if the password of a process has become empty, it is not pos- sible by the newpass option to create a password - thus "public" jobs using no password cannot be blocked by a user defining a new password). 2_._2_._2_ _ _ _ _ _M_u_l_t_i_t_e_r_m_i_n_a_l_ _C_o_m_m_a_n_d_s_ 2.2.2 Jobs running multiterminal programs may use TEM (see ref. 4) directly (i.e. transparently via SOS). In any case the job must ask TEM to create a terminal group (pool) and then the terminals may be connected to the group (i.e. links are created to the ter- minals). The terminal connections may be established or removed by the program explicitly asking TEM to create or remove the links. Principally the same job may be performed by SOS using the multiterminal commands "in" and "out". \f A user who wants to be serviced by a multiterminal job may get connected by using the "in" command: M_m_m_ 1 1 in <jobname> <username> pass <password> newpass <password> P_p_p_ 0 0 See example 10. SOS then consults the user catalog to check that the jobdescrip- tion according to <jobname> includes a user description with the name <username>. The password and newpass options may be used here exactly as at the job creation commands. After having connected the terminal, SOS generates a special in- put line and hands it to the multiterminal job. This input line is generated to tell the job that a new terminal has "logged in". When the terminal user wants to leave the job, he may use the "out" command: out This command causes SOS to generate a special input line (as at "in") to tell the multiterminal job that the terminal "logs out". The exact contents of the input lines generated at "in" and "out" may be found in chapter 3 (the Reference Part). \f 2_._2_._3_ _ _ _ _ _J_o_b_ _I_n_t_e_r_v_e_n_t_i_o_n_ _C_o_m_m_a_n_d_s_ 2.2.3 SOS includes a set of job intervention commands enabling the user to control his job fully. The commands are: stop M_m_m_ start 1 <jobname> P_p_p_ break 0 kill See example 8. The <jobname> must be stated in case the actual job is created using the "jobfile" option. In other words: if the terminal is the primary input document of the job, the <jobname> is not necessary. In any case the job intervened must be created from the terminal that is used for the job intervention. The "stop" command is used to suspend a job during execution. SOS will suspend the job in such a way that it will be possible to resume the job execution later on (in case input/output to or via SOS is programmed in a nonstandard way, data may be lost because of the intervention, but programs using standard I/O should con- tinue unaffectedly). The "start" command is used to activate suspended jobs. The suspension may be caused by a "stop" command, a "pause" parent message (see chapter 3) or the like. The "break" command is used to interrupt a (possibly defective) program. SOS restarts the program in its interrupt routine, allowing it to run for at most one time slice. (Standard programs will use this piece of time to make some cleaning like: empty buffers, write error message etc.) After this period SOS aborts the job. \f However, SOS may be trimmed in such a way that the break command merely works as "stop load start" when the job is enrolled with- out a jobfile. So the user will not lose his temporary files if he breaks a program. The "kill" command is used to abort jobs. The actual job will be stopped immediately and there will be no time for the job to re- port errors or the like. It should be mentioned here that the job intervention commands described in this subsection also exist in a special version as "operator commands". (The operator version of the commands is described in chapter 4). 2_._2_._4_ _ _ _ _ _D_e_v_i_c_e_ _H_a_n_d_l_i_n_g_ _C_o_m_m_a_n_d_s_ 2.2.4 As SOS is primarily intended for interactive processing, the use of devices (apart from backing store) must be limited to a mini- mum. However, batch jobs will never block interactive jobs so it is acceptable to allow batch jobs to use some kinds of devices. The most obvious need for device access concern printing (on line printer) and generation of safety copies on magnetic tape or flexible disc. Printer handling is supposed to be performed by a service module like PRIMO (printing module). Generation of back up, however, may be done by batch jobs. The use of magnetic tape, flexible disc and other devices with exchangeable documents is supported by a "call" command and an "include" command. The "call" command looks like this: call <deviceno> <documentname> The function performed by the "call" command is to name a device (specified by the device number: <devno>). After having named the device, all jobs enrolled to SOS at present will be included as\f users of the device. At magnetic tapes and flexible discs the de- vice (station or drive) is usually given the name of the document currently mounted. In case of direct access to devices with fixed names (paper tape punch for instance), the job will have to be included as a user of the device. This may be done by using the "include" command: include <deviceno> All jobs enrolled to SOS at the moment of the inclusion will get access to the device - but still the device may only be used (reserved) by one job at a time. It should be mentioned here that direct access to slow devices like a paper tape punch may cause a poor resource utilization, and only batch jobs should use this facility. Direct access to slow input devices like paper tape readers will not do neither at batch nor at online jobs. 2_._2_._5_ _ _ _ _ _P_a_s_s_w_o_r_d_ 2.2.5 Instead of typing the password as described in subsections 2.2.1 and 2.2.2, the password may be typed invisible in a separate line. If the password information in the login command is omitted, and the password defined for the job in the user catalog is non- empty, then SOS will answer by writing on the terminal: >password Now the password can be typed without echo on the screen, but a possible typing error cannot be corrected by means of backspace or rubout. The answer is delayed until a timer interrupt has occured (about 5 seconds). In this case the password cannot be changed by a newpass-command. \f So the syntax for job creation commands using invisible password is: go M_m_m_ 1 run <jobname> jobfile <filename> 'nl' P_p_p_ 0 batch ">password" <password> where the text in " " is written by SOS. The syntax for the "in" command becomes: in <jobname> <username> 'nl' ">password" <password> Note! When the terminal is the main console, the password will n_o_t_ be invisible, neither when the console is a screen. 2_._3_ _ _ _ _ _ _ _T_e_r_m_i_n_a_l_ _A_c_c_e_s_s_ 2.3 A program executed under SOS may perform terminal access in dif- ferent ways depending on job creation and program behaviour. Jobs created by the "run" command will access the creating ter- minal via SOS and TEM, using the spooling facilities of TEM. Jobs created by "go" or "batch" commands will access the creating ter- minal via SOS only. Any job (created by "run", "go" or "batch" command) using the "jobfile" option will use the creating terminal for output only. In any case the creating terminal is usually accessed by using the standard zones "in" and "out". Any job may access one or more terminals via TEM by using the TEM facilities directly (see ref. 4). However, all TEM operations\f will be communicated via SOS, but they are handled almost trans- parently so that the user will normally feel no change. (The dif- ferences are described in chapter 3). 2_._4_ _ _ _ _ _ _ _R_e_s_o_u_r_c_e_s_ _A_l_l_o_c_a_t_e_d_ _t_o_ _S_O_S_ _J_o_b_s_ 2.4 According to the main intentions of SOS, the jobs should not be slowed down by accessing slow devices (and thereby block the pri- mary store for considerable amounts of time). A reasonable rule for resource allocation may look like this: A: interactive jobs ("go" or "run" jobs) should never access peripherals slower than backing storage. B: batch jobs should never access peripherals slower than flexible discs or magnetic tape. C: access to slow peripherals like printers should always be done via a service module like "PRIMO". As a consequence the resources described in the user catalog only concern: 1) message buffers 2) area processes 3) backing storage entries 4) Backing storage segments The direct use of devices (apart from backing storage) is not supported by the job creation (or the user catalog) - the user himself (or the operator) must use the "call" or "include" com- mands for this purpose. \f F_ 3_._ _ _ _ _ _ _ _ _R_E_F_E_R_E_N_C_E_ _I_N_F_O_R_M_A_T_I_O_N_ 3. The present chapter contains exact descriptions of subjects and details that most users do not have to consider. However, it may be necessary to go into some details to understand the system behaviour fully. 3_._1_ _ _ _ _ _ _ _J_o_b_ _S_c_h_e_d_u_l_i_n_g_ 3.1 SOS handles two kinds of jobs: interactive jobs and batch (or background) jobs. As a consequence the job scheduling is based on two main queues: a queue of interactive jobs and a queue of batch jobs. These two queues contain only jobs which are ready to run. Jobs waiting for external events like terminal input are queued up in a waiting queue. Only one job may be active at a time and this job is found like this: - If the interactive queue is not empty, then find the "best" job and activate it. - If the interactive queue is empty and the batch queue is not empty, then take the first job in the batch queue and activate it. - If both queues are empty, then wait for an event making some job ready for execution. When started, a job will be allowed to run for a period that de- pends on the kind of job. 1. An interactive job will be stopped 1) when it asks for input, 2) when its terminal output exceeds the spooling capacity, 3) when the time slice expires or 4) when the job ends - whatever happens first. \f 2. A batch job will be stopped 1) when it asks for input, 2) when its terminal output exceeds the spooling capacity, 3) when the job ends or 4) when some event arrives that will make an interactive job ready to run - whatever happens first. When a batch job is stopped because of an interactive job, it will remain the first job in the batch queue. When a batch job is created it is put back on the batch queue. Thus the strategy of the batch job scheduling is a pure first in first out strategy. However, this strategy may be overwritten by users or operators using the job intervention commands "stop" and "start". "Stop" will move the job from the batch queue to the waiting queue. "Start" will move the job to the batch queue but in different ways depending on circumstances: operator start moves the job to the head of the queue user start puts the job back on the queue. Interactive jobs are scheduled according to dynamically changing priorities. Each interactive job is equipped with a "priority class" and an actual "priority". The priorities (and -classes) change according to the behaviour of a job and the main rules are: 1. interaction (= terminal input) implies increasing priority 2. heavy cpu-load (= using entire time slices) implies de- creasing priority. An interactive job starts at the max. priority of the system (= 0). No job will ever exceed the max. priority. \f In the following the main algorithms used at job scheduling are listed: A. An interactive job is suspended because it asks for terminal input: if priority _class + classgain > 0 then priority _class: = 0 else priority _class:=priority _class + classgain; priority: = priority _class; B. An interactive job is suspended because the time slice had expired: if priority _class - classloss < minprio then abort _job else priority _class: = priority _class-classloss; priority: = priority _class; C. When the "best" job is to be found in the interactive queue, SOS proceeds like this: job: = queue.first; while job.priority < max _priority do begin job.priority: = job.priority + priogain; put _back _on _queue (job); job: = queue.first; end; thus all interactive jobs stay in the same queue no matter the priority. However, a low priority will imply that the job will be bypassed by other jobs a number of times before activation. Dur- ing a cpu-bound period an interactive job will thus spend in- creasing periods of time between its active time slices (in case the whole system has a steady load). \f 3_._2_ _ _ _ _ _ _ _T_e_r_m_i_n_a_l_ _A_c_c_e_s_s_ 3.2 Terminals accessed by SOS jobs may be: 1) The primary input/output terminal from which the job was created. 2) A number of terminals connected to a terminal group in TEM. This terminal group must be created by the job itself. The message flow controlling the access is described in subsec- tions 3.3.1 and 3.3.2. In this section some conventions and li- mitations concerning terminal access shall be mentioned. A. Programs using terminal access under SOS must follow the stan- dard conventions for transfer checking. The most important rule is that input or output messages answered by an empty answer (no data transferred) are repeated. B. SOS jobs will never see hard errors on terminals because SOS will automatically disconnect such a terminal. In case the terminal was primary input terminal of a job, the job is aborted. In case the terminal was connected to a multitermi- nal group, it will become disconnected and the job will re- ceive a special input telling that the terminal is discon- nected. C. SOS jobs may create at most one terminal group for multitermi- nal access. This group must have the name of the terminal ac- cess module (usually TEM). Jobs may connect a number of ter- minals to this pool (by creating TEM-links). In case the ter- minals are connected by the job itself, SOS is not directly involved and there will be no possibility for SOS to check the authorization of the terminal users. This facility may for in- stance be used for accessing F8000 terminals. D. When an SOS job has created a terminal group, SOS may connect terminals to this group. This is done in case a terminal user "logs in" by using the "in" command. If the user is allowd to\f be connected to the job (according to the user catalog), SOS will do so and to inform the job of the arrival of a new user, SOS generates a special input line. In a similar way SOS may disconnect terminals using the "out" command. The contents of these special input lines are: login: <localid.><1><1><32>att<32><32><32><process name><NL> logout: <localid.><2><2><32>out<32><32><32><NL> hard er- ror: <localid.><2><2><32>hard<32>error<NL> Only TTY-compatible terminals may use the "in" and "out" faci- lities of SOS. 3_._3_ _ _ _ _ _ _ _S_O_S_ _-_ _J_o_b_ _I_n_t_e_r_c_o_m_m_u_n_i_c_a_t_i_o_n_ 3.3 An SOS job may access terminals, backing storage and eventually a few other kinds of devices. All kinds of access are on the basic level performed by using the "send message-wait answer" func- tions. The communication with backing storage, for instance, will never be affected by SOS. However, SOS intervenes all communica- tion between an SOS job and its terminal(s), to know precisely the current state of the job. Thus even though a job "believes" that it communicates with its primary input/output terminal (and eventually TEM) it really com- municates with SOS. Apart from the terminal communication there is a "parent commu- nication" (i.e. jobs send messages to their parent, SOS, when they finish, in case they want documents mounted, if they detect severe internal errors or the like). \f 3_._3_._1_ _ _ _ _ _P_r_i_m_a_r_y_ _I_n_p_u_t_ _a_n_d_ _O_u_t_p_u_t_ 3.3.1 The primary input and output communication performed by a job may be visualized like this: J_o_b_ S_O_S_ T_e_r_m_i_n_a_l_ _(_o_r_ _T_E_M_)_ input message -> stop process input message -> - (other jobs may run) - put job into <- input answer active queue - copy input <- input answer activate job - - output message -> copy output output message -> <- output answer - - <- output answer Only two message operations are involved: input: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ message: + 0 _3_ _ _ _ _ _m_o_d_e_ _ _ _ _ + 2 _f_i_r_s_t_ _a_d_d_r_e_s_s_ _ + 4 _l_a_s_t_ _a_d_d_r_e_s_s_ _ _ + 6 + 8 +10 +12 +14 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \f The input messages may for instance be sent when using the read procedures of ALGOL. The zone used for terminal communication should be opened exactly as to a "real" terminal: open (z, mode shift 12 + 8, <name of SOS system>, give up) output: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ message: + 0 _5_ _ _ _ _ _m_o_d_e_ _ _ _ _ + 2 _f_i_r_s_t_ _a_d_d_r_e_s_s_ _ + 4 _l_a_s_t_ _a_d_d_r_e_s_s_ _ _ + 6 + 8 +10 +12 +14 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ The output messages may for instance be sent, when using the write procedures of ALGOL. The zones used for output should be opened exactly as for input. 3_._3_._2_ _ _ _ _ _T_r_a_n_s_p_a_r_e_n_t_ _C_o_m_m_u_n_i_c_a_t_i_o_n_ _t_o_ _T_E_M_ 3.3.2 SOS jobs may use TEM by sending messages to the TEM process as described in the TEM manual (ref. 4). All messages to TEM will be sent via SOS and SOS imposes a set of limitations. 1. An SOS job may only create one terminal group. 2. The terminal group created by a job must use the name of the TEM process (usually TEM). 3. The buffer length of SOS will be the max block length of data transfers. 4. No dummy message will be returned to the job after pool creation. \f As TEM may spool input and output, the communication job-SOS-TEM looks slightly different from the primary input/output communica- tion: J_o_b_ S_O_S_ T_E_M_ output message -> output message -> send timer wait first answer (output or timer) - regret timer <- output answer <- output answer - input message -> input message -> send timer wait first answer (input or timer) - if timer answer first then stop job - (other jobs may run) - put job into <- input answer active queue - copy input <- input answer activate job The reason for using a timer period (of 50-100 m.sec.) is to avoid swopping a job in case TEM is able to answer within this period (often TEM will need a little time for transferring spooled data). In the communication between a job and TEM, SOS will offer a special feature. The usual convention is that each block of out- put sent to TEM must include address information (in case of TTY\f compatible terminals, the first 24 bits of a block is interpreted as an address). When communicating via SOS, it is possible to use an implicit addressing mode for output. In this mode no address information is needed in the block. Instead the output block is routed to the terminal from which the job has received its latest input block. (This way of addressing may often be convenient as most terminal communication looks like terminal commands immedi- ately followed by an answer). To use this facility the outputzone must be opened like this: open (z, 1 shift 18 + mode shift 12 + 8,<name of TEM>,0); 3_._3_._3_ _ _ _ _ _P_a_r_e_n_t_ _M_e_s_s_a_g_e_s_ 3.3.3 Jobs may send parent messages to inform the system of job termi- nation, severe errors or to request operator action. Parent messages all use the following format: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ message: + 0 _f_u_n_c_t_i_o_n_ _ _ _p_a_t_t_e_r_n_ _<_5_ _+_ _w_a_i_t_ _ + 2 _i_n_t_e_g_e_r_ _o_r_ _t_e_x_t_ _p_o_r_t_i_o_n_ _ _ _ _ _ _ + 4 _ _ _ _ _ _ _ _ _ _ _-_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + 6 _ _ _ _ _ _ _ _ _ _ _-_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + 8 _ _ _ _ _ _ _ _ _ _ _-_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +10 _ _ _ _ _ _ _ _ _ _ _-_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +12 _ _ _ _ _ _ _ _ _ _ _-_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +14 _ _ _ _ _ _ _ _ _ _ _-_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ "function" specifies the operation to be performed. Only even values are allowed. "pattern" specifies how the parent (SOS) is to display the mes- sage (on the system terminal). The "pattern" contains seven bits, one to each of the last seven words of the message (+2,+4...... +14). \f When a bit equals one it means that the corresponding word should be displayed as an integer, otherwise the word is displayed as a text portion of 3 characters. Thus bit 1<11 means that the second word of the message is an integer and 1<5 means that the last word of the message is an integer. "wait" may be zero or one. A zero means that the job wants an answer immediately, one means that the job should not be answered (restarted) until some operation (operator action) is completed. When receiving a parent message, SOS will perform the following actions depending on the function of the message: function = 2: finis The job is aborted. Temporary files are cleared, eventual TEM pools and links are removed. The job process is re- moved and a finis message is written on the start-up ter- minal of the job. function = 4: break The actions are exactly as for finis. However, the mes- sage written on the terminal is different. function = 14: mount If the document is already mounted and accessible, the job will become a user of the device and SOS returns the answer immediately. If the document is not mounted, SOS displays the message and stops the job. When the operator has mounted the job he may activate it by using the "start" command. function = 16: print Displays the contents of the message according to the general rules. Is the wait bit zero the job will be an- swered at once, otherwise it is stopped and the operator may reactivate it by using the "start" command. \f function = 32: mount special Treated exactly as "mount" (function = 14) All other functions are treated exactly like a "print" message (function = 16). \f F_ 4_._ _ _ _ _ _ _ _ _O_P_E_R_A_T_I_N_G_ _G_U_I_D_E_ 4. The operators tasks in the day to day running of the system com- prise the following major points: a. start-up b. system and job intervention c. device support d. close down e. system failure. 4_._1_ _ _ _ _ _ _ _S_t_a_r_t_-_U_p_ 4.1 During the start-up the system calculates a set of minimum re- sources on the basis of the trimmed values. This set of resources must be present in order that the run can be succesful, otherwise the run is immediately terminated with a message specifying the minimum set of resources. When started with sufficient resources the resources available for jobs are listed. M_ @ ATT sos new sos internal 3 size 50000 buf 30 area 30 perm disc 1000 40 READY @ ATT s function 1,2,3,4,5 prog bsos base -8388607 8388605 run READY FROM SOS 02.58 SOS: MESSAGE SOS VERSION: 780929 0 02.58 SOS: MESSAGE SOS CHILD RESOURCES 02.58 SOS: MESSAGE SOS INTERNAL 3 02.58 SOS: MESSAGE SOS BUF 16 02.58 SOS: MESSAGE SOS AREA 24 02.58 SOS: MESSAGE SOS SIZE 45568 P_ 02.58 SOS: MESSAGE SOS STARTED Example 16: SOS started as a child of "s". \f M_ @ ATT s replace prologue @ ATT READY PROCESS NAME = sos FROM SOS PROGRAM NAME = bsos 09.02 SOS: MESSAGE SOS VERSION: 780901 0 09.02 SOS: MESSAGE SOS CHILD RESOURCES 09.02 SOS: MESSAGE SOS INTERNAL 3 09.02 SOS: MESSAGE SOS BUF 147 09.02 SOS: MESSAGE SOS AREA 134 09.02 SOS: MESSAGE SOS SIZE 50688 P_ 09.02 SOS: MESSAGE SOS STARTED Example 17: SOS started using "S-replacement". It should be mentioned here that even though all examples use the system name "SOS", any name of up to 8 characters may be used. 4_._2_ _ _ _ _ _ _ _O_p_e_r_a_t_o_r_ _I_n_t_e_r_v_e_n_t_i_o_n_ 4.2 At system trimming an operator key (an operator password) is de- fined which may be used at operator intervention. Operator inter- ventions are accepted only when initiated from the system terminal of SOS (the terminal used at SOS start-up). The operator interventions concern the SOS system (= system inter- vention) or one or more jobs (= job intervention). 4_._2_._1_ _ _ _ _ _S_y_s_t_e_m_ _I_n_t_e_r_v_e_n_t_i_o_n_ 4.2.1 By using the system intervention commands the operator will be able to change the state of the system. The possible commands are: M_m_m_ lock <operator key> P_p_p_ open (These commands are only accepted when typed on the system ter- minal of SOS). \f The "lock" command will make SOS refuse all attempts to create jobs or to connect terminals to multiterminal jobs. The command may be used for draining the system. As a consequence SOS will write a message on the system terminal when the last job leaves, telling the operator that the system is empty. M_ @ ATT sos >lock opr P_ 16.56 SOS: READY Example 18: Operator intervention. The "open" command is the opposite of the "lock" command. After "open" job creation and terminal connection will be accepted. 4_._2_._2_ _ _ _ _ _J_o_b_ _I_n_t_e_r_v_e_n_t_i_o_n_ 4.2.2 The job intervention commands (described in chapter 2) may in a changed version be used as operator commands. In this version the syntax is: stop M_m_m_ start <jobname> <operator key> P_p_p_ break all kill In case the "all" option is used, all jobs enrolled will be sub- ject to the action stated. The "stop" command will suspend the job(s) in question in such a way that the execution may be resumed. The "start" command will activate suspended jobs. The suspnesion may for instance be a "pause" message requesting an operator action. \f The "break" and "kill" commands abort the job(s) in question. At "break" the job will be allowed to write an error message before removal. M_ @ ATT sos >kill opr all P_ 16.59 SOS: READY Example 19: Clear system. 4_._2_._3_ _ _ _ _ _D_e_v_i_c_e_ _S_u_p_p_o_r_t_ 4.2.3 Usually SOS jobs will not use equipment that requires operator support. There will be a need, however, for users to make safety copies on flexible disc, magnetic tape or the like. Jobs using that kind of equipment may request documents to get mounted. These requests will be displayed on the system terminal of SOS. When the document is mounted, the operator must name the device (with the name of the document mounted) and then restart the job. The naming is performed by the "call" command: call <device number> <document name> (the "call" command may be immediately followed by the "start" command). M_ 16.58 SOS: PAUSE RC MOUNT MT @ ATT sos >call 10 mt start opr rc P_ 16.59 SOS: READY Example 20: Tape mounting. \f 4_._3_ _ _ _ _ _ _ _C_l_o_s_e_ _D_o_w_n_ 4.3 The SOS system is closed by using the "halt" command: halt <operator key> The run will terminate immediately without removing active jobs (remember that the system may be drained before closing). In case the system generates testoutput "halt" will close the testoutput file. After closing SOS, the system (the SOS process) may be removed. M_ @ ATT sos >lock opr 16.54 SOS: MESSAGE SOS SYSTEM EMPTY 16.54 SOS: READY @ ATT sos >halt opr P_ 16.55 SOS: PAUSE SOS SYSTEM CLOSED: Example 21: Drain system and close down. 4_._4_ _ _ _ _ _ _ _H_o_w_ _t_o_ _H_a_n_d_l_e_ _S_y_s_t_e_m_ _F_a_i_l_u_r_e_ 4.4 During the run the system may break down in one of the following two ways: 1. An internal program error or a transport error from the program area "bsos" may cause the system to break down and the following error message will be printed on the system terminal of SOS. pause sos ***fault (Please notice that if this terminal is reserved by other proces- ses (e.g. by login to BOSS) it will not be possible for SOS to print these messages). \f 2. A hard error in the swop area makes continued running im- possible and the system stops after having printed the message: message sos status <statusword> swpsos In all error situations one should, if the system has been trim- med with 'testoutput', move this from the test area (e.g. TSTSOS) to a work area, from which the TRACE-program can print it for a further analysis. The TRACE program is automatically generated at the installation of the system. The program is called as follows: trace <testarea>.<segments> <testarea> is the name of the area, from which the test output is to be printed (the work area the test output has been moved to, or the test area itself). <segments> are the maximum number of segments to be analyzed. TRACE always finds the latest generated segment, and counts the number of segments backwards from there. <segments> are automa- tically cut to the size of the area, if something larger has been specified. M_ @ ATT s proc sos remove prog fp run READY TO SOS o lp trace tstsos.10000 o c @ ATT s P_ proc sos remove Example 22: Printing testoutput. \f (Once again, please notice that the names used (SOS, TSTSOS and SWPSOS) are only examples, as other names, consisting of up to 8 characters, as well might be used, allowing identical systems each with its own name to run simultaneously. \f F_ 5_._ _ _ _ _ _ _ _ _I_N_S_T_A_L_L_A_T_I_O_N_ _N_O_T_E_S_ 5. This chapter concerns the subjects that are relevant for persons who administers the resources of an installation and for persons who are actually going to install an SOS system on a computer of the RC4000 or RC8000 series. 5_._1_ _ _ _ _ _ _ _S_y_s_t_e_m_ _D_i_s_t_r_i_b_u_t_i_o_n_ 5.1 The SOS system is usually distributed as a magnetic tape contain- ing the files below: 0: label 1: soshelp (is used as an auxiliary file when generating an SOS system; contains the files "sostrim", "sossave" and "sosload") 2: trcmol (compiler for generating "bsos", "cleartemp" and "prologue") 3: tsoscat (a simple user catalog) 4: tsos (system program text) 5: tcleartemp (program for clearing temporary files when a job terminates) 6: tupsoscat (program for generating, updating and listing the user catalog) 7: ttrace (program for analyzing test output) 8: tsostest (multiterminal program for simple system testing) 9: tprologue (program used for starting a system as "S-replacement") 10: tdisplay (program displaying all jobs actually running under SOS) 11: tnews (test file to be written on terminals running the "hotnews" job defined in "tsoscat") \f All files of a system tape may be automatically loaded to backing storage like this: sosdoc = set 1 disc3 soshelp = set mto sostape 0 1 i soshelp i sosload In case no "sosdoc" is specified the files will be loaded pri- marily on the system disc. On the other hand a system tape may be generated from an SOS system on disc by: sosdoc = set mto sostape i soshelp i sossave and a standard system may be generated from tape or disc by using this set of commands: soshelp = set mto sostape 0 1 ; only for tape i soshelp i sostrim 5_._2_ _ _ _ _ _ _ _S_y_s_t_e_m_ _T_r_i_m_m_i_n_g_ 5.2 The quantities to be defined when the system is trimmed, fall in- to two groups: a. System constants concerning the strategy of execution, time slice, test output, the type of machine and the buffer length for the applications terminal I/O. b. The minimum of resources available for the applications and the terminal users. E.g. 1) the minimal core size for ap- plications, 2) the minimal number of simultaneous applica- tions etc. \f Regarding job resources, the system has been designed to calcu- late on the basis of its start up resources, how many jobs it will be able to process simultaneously. If this number is smaller than the minimum specified in the trimming, or if the remaining pool of resources (buffers, areas etc.) is smaller than what is specified in the trimming, the system will stop after the init- ialization with an error message. In the following all constants that may be changed in the trim- ming are mentioned. "optionid" At start-up a constant showing the date of the SOS version will be listed together with this constant. At each trimming this constant should be changed to show the date of the trimming (e.g. 780901). The standard value is 0 indicating that "standard trimming" is used. "rc" This constant defines the target machine to which the system is trimmed. The only values accepted are 8000 or 4000. "minusers" The minimal number of jobs that may be enrolled simultaneously (i.e. the number of internal processes allocated to SOS). "comndusers" Even when the maximal number of jobs are running there will be a need for handling terminals, performing operator commands, login commands or the like. "comndusers" defines the minimum of terminals that will be able to communicate with SOS without having created any job. "minbufs" Defines the minimal set of message buffers in the pool of re- sources that may be allocated to jobs. \f "minareas" Defines the minimal set of area processes in the pool of re- sources that may be allocated to jobs. "minsize" The free size of primary store in an SOS system depends on the size of the SOS process as defined at start-up. During initialization SOS will check that the "free size" will be equal to or exceed "minsize". The standard value (12800) is sufficient for running most of the utility programs and com- pilers. "buf1" Defines the size of the I/O buffer used for communicating data between terminals and jobs. (Communication via TEM will pass the same buffer - and use the same buffer limit). The standard value (104) matches the terminal buffer size as de- fined in the standard I/O system. "timeslice" SOS allocates computing time in time slices. When a job is swopped into primary store and activated, it will at the latest be suspended after the expiration of a time slice. Then the state and priority of all jobs enrolled will be evaluated and the "winner" will get the next time slice. A "large" time slice will decrease overhead and increase re- sponse time variations. The standard value (3 seconds) will often do. "cpulimit" Interactive jobs running under SOS will not be allowed to cycle indefinitely. At most it will be allocated "cpulimit"/ "classloss" timeslices before being removed from the system. In case the priority of the job was lower than the maximum priority when the cycle started, then it will be allocated less than "cpulimit"/"classloss" timeslices before removal. (For further investigations see chapter 3). Please notice: 0 < ("cpulimit" + "classloss") < 2048. \f "classloss", "classgain", "priogain". These three constants all concern the scheduling strategy of SOS. This strategy is explained in detail in chapter 3. Here some rules of thumb shall be stated: a. 1 < <constant> < 2048 b. when "classloss" is large, jobs will rapidly be removed by "time exceeded"; c. when "classgain" is large, jobs will quickly forget that they have had a cpu-bound period (a period of low prior- ity); d. when "priogain" is large, the response time will (statisti- cally) be proportional to the computing time, while a small value of "priogain" will give response times that increase more than proportional to the computing time. "testsegmnts" The SOS system may currently generate testoutput for mainten- ance purposes. The testoutput is cyclically written into a testoutput file. "testsegmnts" defines the size of this area. Obviously the size of the testoutput area is proportional to the period of time that may be "traced". If "testsegmnts" equals "0" no testoutput will be generated. It is recommended that testoutput is generated at least during some period after the first installation of the system. (The testoutput is necessary in case you want the RC maintenance staff to analyze and solve your problems. However, you should not waste your time trying to analyze the testoutput yourself). "conditions" This constant is a bitpattern defining the reaction on time exceeded (see "cpulimit") and break. The standard value is 2'000000. The bits used are: 2'000001 = abort job at time exceeded. When this bit is zero, an online job may run for ever. 2'000010 = abort job after break command. When this bit is zero, a user break or operator break will work as "stop load start" when the terminal is run- ning a job without jobfile. \f "oprkey" Defines a text used as operator password. Default is "opr". This text must be nonempty. "swopdoc", "testdoc" In case these two texts are empty, the swop area and the test- output area are usually placed on the system disc (they are actually placed on the first disc on which the SOS process has got backing storage resources). To smooth disc load it may be reasonable to place two areas on some other disc than the sys- tem disc. The system trimming is actually done by means of the file "sostrim" (see appendix F) which contains the standard trimming plus commands for generating the trimmed program version together with some utility and test programs. The individual trimming consists of changing some values in "sostrim" in case standard values do not apply. This is done by simple editing e.g.: xtrim = edit sostrim EDIT BEGIN 1./optionid:=/, r/0/780901/, 1./minsize:=/, r/12800/20000/, 1./timeslice:=/,r/3/5/, 1./testsegmnts:=/,r/42/168/, f EDIT END. Example 23: Individual trimming. The commands stated in the file "sostrim" (and here "xtrim") will generate an SOS system like this: a. load a compiler for translating SOS system b. generate SOS system program: "bsos" c. generate catalog cleaning program: "cleartemp" d. generate user catalog program: "upsoscat" \f e. generate testoutput analyzing program: "trace" f. generate S-replacement loader: "prologue" In case a file with the name "soscat" already exists, the system generation will stop here. If no "soscat" exists, it is assumed that SOS has not been running on the installation before and therefore a set of testprograms and testfiles is generated to facilitate a system test. The generation proceeds like this: g. generate a simple user catalog:"soscat" h. generate a multiterminal program:"sostest" i. generate a display program:"bdisplay" j. generate a news-file:"tnews". \f M_ @ ATT s all sos run READY TO SOS soshelp = set mto sostape 0 1 i soshelp FROM S PAUSE SOS MOUNT SOSTAPE @ ATT s call 10 sostape start READY FROM SOS xtrim = edit sostrim EDIT BEGIN. 1./optionid/, r/0/780901/, 1./minsize/, r/12800/20000/, f EDIT END. i xtrim EDIT BEGIN. EDIT END. TRCMOL 1:(RCMOL=SET 1 DISC 1:RCMOL=ALGOL 1:SCOPE USER RCMOL 1:END 1:BEGIN 3068:END ALGOL END 168 XSOS D.781003.1610 RCMOL/011 D.781003.1616 TRANSLATION TIME = 199.85 SEC CORE AREA CLAIM = 12246 BYTES DISC AREA CLAIM = 24 SEGMENTS TCLEARTEMP D.781003.1615 RCMOL/011 D.781003.1616 TRANSLATION TIME = 8.34 SEC CORE AREA CLAIM = 504 BYTES DISC AREA CLAIM = 1 SEGMENTS END 125 (to be continued) \f (continued) TUPSOSCAT 1:BEGIN 2013:END; ALGOL END 97 TTRACE 1:; TRACE 1:; 1:; 1:; PROGRAM FOR ANALYZING TESTOUTPUT 1: 1: 1:BEGIN 174:END ALGOL END 34 TPROLOGUE RCMOL/011 D.781003.1617 TRANSLATION TIME = 14.26 SEC CORE AREA CLAIM = 996 BYTES DISC AREA CLAIM = 2 SEGMENTS END 122 END 59 TDISPLAY 1:BEGIN 53:END ALGOL END 29 P_ SYSTEM GENERATION COMPLETED Example 24: System installing and trimming. 5_._3_ _ _ _ _ _ _ _U_s_e_r_ _C_a_t_a_l_o_g_ 5.3 Any job executed under SOS must be described in the user catalog. The user catalog contains information about resource demands, scope (file access), password, start-up commands and in case of a multiterminal job, descriptions of terminal users who are allowed to login to this job. The user catalog is created and updated by the program "upsoscat". This program may list the actual contents of a user\f catalog in such a way that the listing may be used as input for generating a new catalog. As users may change their passwords, it is not convenient to generate a changed catalog from an edited version of the original catalog text. Instead a new catalog may be generated without destroying actual passwords, by using an edited version of an actual catalog listing. The user catalog consists of a set of job (process) descriptions. 5_._3_._1_ _ _ _ _ _D_a_t_a_ _p_e_r_ _J_o_b_ _(_P_r_o_c_e_s_s_)_ 5.3.1 The user catalog must contain the following information per process: process name : max. 8 characters buffers : the process' demands on buffers and areas : areas bases : the standard-, user- and max (project) base of the process password : max. 11 characters minsize : the minimum size acceptable for the process maxsize : the max size used for the job (even though SOS may have room for more) FP-commands : max. 59 characters are executed when the job is created. Can be used to start-up an application. bs-claims : device-name (max. 11 characters) plus entries and segments for key0, key1, key2 and key3. Max. 12 units. terminals : external identification (max. 11 charcters), local identification (max. 3 characters), password (max. 11 characters), \f input buffering (max.no of input buffers spooled by TEM) timercount (max.no of timeout periods expired before TEM returns an answer). The process name must identify the job unambiguously. An arbitrary number of terminals can be registered under a pro- cess. The external id. and the local id. must be unambiguous for terminals under the same process. Parts of the descriptions may be omittted. The "upsoscat" program will then generate default values. In the following all default values that are not 0 (or nonempty) are listed. buffers : 4 areas : 7 maxsize : 8388608 bs-claims : disc key0 6 0 key1 0 0 key2 0 0 key3 0 0 terminal input buffering : 1 terminal timer count : 40 At catalog generation it is checked that process names, buffers and areas are given values different from 0. 5_._3_._2_ _ _ _ _ _C_r_e_a_t_i_o_n_ _a_n_d_ _C_h_a_n_g_e_ _o_f_ _t_h_e_ _U_s_e_r_ _C_a_t_a_l_o_g_ 5.3.2 The program "upsoscat", which is used for generating the user catalog, is called as follows: M_m_m_ 1 1 <cat> 1 <newcat> = upsoscat <input> oldcat P_p_p_ 0 0 no 0 M_m_m_ <outfile> 1 list. P_p_p_ no 0 \f <newcat> : the name of the new user catalog <input> : the name of the file containing the input. If this is omitted, input is taken from the lines following the program call <cat> : the name of the user catalog to be updated <outfile> : the name of the file in which the contents of the catalog is to be printed. If the parameter oldcat is omitted or oldcat.no is stated, a new user catalog is created in <newcat>; otherwise <newcat> will contain an updated version of <cat>. If list is omitted or list.no is stated, the new contents of the catalog are not printed; otherwise the contents will be printed in the <outfile> in a manner making it possible to use it as in- put for upsoscat. <newcat>: is reserved by the program throughout the run, whereas <cat> is only reserved during the period of copying (this is done at the beginning of the run). <newcat>: is extended by the program if necessary. If this is not possible, the program stops with the message 'lookup <i>' or 'ch.entr <i>'. In case of an error in the input, the OK-bit is set to 'no'. (The program ends by writing 'errors 0'). 5_._3_._2_._1_ _ _ _C_r_e_a_t_i_o_n_ 5.3.2.1 For each process to be created, the data described in subsection 5.3.1 may be stated. The syntax for input: \f M_m_m_F_ 1 maxprocess <number> P_p_p_ 0 process <proc-name> max. M_m_m_ 1 buf <buf> P_ 0 M_ 1 area <area> P_p_p_ 0 stdbase <number> <number> userbase <number> <number> maxbase <number> <number> M_m_m_ 1 1 password " <key> " P_ 0 0 M_ 1 minsize <number> P_ 0 M_ 1 maxsize <number> P_p_p_ 0 M_m_m_ 1 1 fp " <text> " 0 0 12 P_p_p_ bs <name> key0 <entr> <segm> key1 <entr> <segm> key2 <entr> <segm> M_m_m_ key3 <entr> <segm> 0 1 1 term <name> " <local id.> " " <key> " 0 0 1 1 <bufs> <timeouts> 0 0 0 0 1 end P_p_p_ 0 <proc-name> : max. 8 characters, letters or digits. <name> : max. 11 characters, letters or digits. <buf>, <area>, <entr>, <segm>: non-negative integers. <text> : max. 59 characters, all characters except " are allowed. <local.id> : max. 3 characters, all characters except " are allowed. <key> : max. 11 characters, all characters except " are allowed. \f F_ Note! The "term" option must not be followed by any other option within a process description. (When used, the ter- minal should be the last part of the process description). On the basis of <number> after maxprocess it is calculated how many processes <max>, there must be room for in the user catalog. Max is the smallest number, which is a multiple of 50 and which is bigger than or equals <number>. Is maxprocess omitted max is set to 50. The catalog bases are defined by right and left limits for the base intervals. The parameter 'end' need not be included if input is specified in the program call. If the demands described in subsection 5.3.1 are not met, the process is not registered. Errors in the terminal parameters will only effect that the terminal is not registered. The catalog is created directly in <newcat>. After being created, <newcat> will always contain a correct user catalog, but if there have been errors in the input, the catalog will not correspond to what was wanted. By errors it is recommended to make a rerun instead of updating <newcat>. 5_._3_._2_._2_ _ _ _C_h_a_n_g_e_ 5.3.2.2 There are three types of updating which concern a process: correction (cprocess), creation (iprocess) and deletion (dprocess). When correcting, the information to be changed plus its new value must be stated. If all the entries and segments of a unit are zero, the unit is deleted. The terminal can be created and de- leted (with the parameters term and dterm). The terminal correc- tions must be the last changes, which are specified for a pro- cess. \f F_ The syntax for input is: cprocess <proc-name> M_m_m_ 1 buf <buf> P_p_p_ 0 M_m_m_ 1 area <area> P_p_p_ 0 M_m_m_ 1 stdbase <number> <number> P_p_p_ 0 M_m_m_ 1 userbase <number> <number> P_p_p_ 0 M_m_m_ 1 maxbase <number> <number> P_p_p_ 0 M_m_m_ 1 1 password " <key> " P_p_p_ 0 0 M_m_m_ 1 minsize <number> P_p_p_ 0 M_m_m_ 1 maxsize <number> P_p_p_ 0 M_m_m_ 1 1 fp " <text> " P_p_p_ 0 0 12 bs <name> key0 <entr> <segm> key1 <entr> <segm> key2 <entr> <segm> key3 <entr> <segm> 0 M_m_m_ 1 1 1 term <name> " <local id.> " " <key> " <number> P_p_p_ 0 0 0 M_m_m_ 1 <number> P_p_p_ 0 0 M_m_m_ 1 dterm <name> " <local id.> " P_p_p_ 0 0 iprocess <proc-name> max buf <buf> . . . (as for catalog creation) 0 . . dprocess <proc-name> 0 M_m_m_ 1 end P_p_p_ 0 See the note about "term" in subsection 5.3.2.1. \f F_ The changes of <cat> are made in a temporary file. After the updating is finished, this file is copied to <newcat>. As when created, <newcat> will contain a correct user catalog, but in case of errors it is recommended to make a rerun instead of updating newcat. 5_._3_._2_._3_ _ _ _L_i_s_t_i_n_g_ 5.3.2.3 When the creating/change processes are completed, the contents of <newcat> are listed as described for the input syntax. If this listing is used as input in a catalog creation, the new catalog will become identical with the one listed from <newcat>. If a listing, without updating, of an already existing catalog is wanted, the program call below is used: upsoscat oldcat. <cat> list.<outfile> end 5_._3_._3_ _ _ _ _ _R_e_s_o_u_r_c_e_s_ _N_e_e_d_e_d_ _f_o_r_ _C_r_e_a_t_i_n_g_ _a_ _C_a_t_a_l_o_g_ 5.3.3 After creation the user catalog will contain index segments and process segments. There will be 1 index segment for each 50 pro- cesses in the catalog. Each process will occupy one segment con- taining the process description and up to 5 terminal descrip- tions. Processes with more than 5 terminal descriptions will occupy one more segment per 19 terminals (exceeding the first 5). At updating, the size of the user catalog may increase. The ca- talog can be compressed by making a printout of the catalog and use this in a re-creation process. \f upsoscat oldcat.soscat list.out end END 59 clear project soscat soscat = set 1 soscat = upsoscat out END 55 scope project soscat Example 25: Compressing user catalog. When creating a user catalog by means of listing, at least 5 buf- fers will have to be used, and by updating at least 6 buffers. 5_._3_._4_ _ _ _ _ _E_r_r_o_r_ _M_e_s_s_a_g_e_s_ 5.3.4 In case of an error, an error message plus the input line with the error is printed. Below the word "parameter" is used covering the input keywords: end, maxprocess, process, dprocess, cprocess, iprocess, buf, area, stdbase, userbase, maxbase, maxsize, minsize, password, fp, bs, key0, key1, key2, key3, term, dterm. The word transaction is used for the 6 first words mentioned above: E_r_r_o_r_ _t_e_x_t_ E_x_p_l_a_n_a_t_i_o_n_ line too long more than 120 characters in an input line. The line is not processed and is not printed. illegal char illegal character in an input line. The rest of the line is processed. buf illegal buf-value. The processing is continued with the next parameter. area illegal area-value. The processing is continued with the next parameter. \f stdbase illegal base-value userbase The processing is continued with the next maxbase parameter. password illegal password. The processing is continued with the next parameter. minsize illegal size value. maxsize The processing is continued with the next parameter. fp an error in the text. The processing is continued with the next parameter. device name as for "name" bs illegal bs value. The processing is continued with the next parameter. bsfull more than four bs units. The unit is not registered. The processing is continued with the next parameter. proc-params incomplete process description. missing The process is not registered/detected. base error the values of the bases are inconsistent. The process is not registered/detected. claim error the internal relationship of entries and segments from key0 - key3 is not correct. The process is not registered/updated. abnormal end input ends where further input was expect- ed. The process, which was last processed, is not registered/updated. trans an illegal parameter was read where a transaction was expected. The processing continues with the next parameter. \f name illegal name. The processing is continued with the next transaction or parameter dependent on the situation. proc in cat the process already exists in the catalog. The processing is continued with the next transaction. loc id illegal local identification. The terminal is not registered. The processing is continued with the next parameter. term-key illegal user-key. The terminal is not registered. The processing is continued with the next parameter. cat full an insertion of a process exceeding the maximum allowed is attempted. By creation the processing is terminated and by updating the processing is continued with the next parameter. term in cat a terminal with the same local id already exists at this process. Apart from these error messages, the errors below may occur, all causing the termination of the program. lookup i an error in one of the data areas. Ought not appear. ch.entry i the catalog cannot be extended; too few resources or an error in the catalog. Ought not appear. call 0 an error in the call of the program. temp cre work areas cannot be created (too few resources). newcat i an error in the <cat> specified in the program call. oldcat i an error in the <outfile> specified in the program call. \f remove i an error in connection with the removal of a work area. Ought not appear. errors 0 is printed after a completed creation, updating, if there has been any errors in the input. 5_._4_ _ _ _ _ _ _ _T_e_s_t_ _F_a_c_i_l_i_t_i_e_s_ 5.4 After the installation of an SOS system (at least including SOS and TEM) it may be checked that the system installed really works. As explained in section 5.2 a set of test programs and test files will be loaded in case no "soscat" existed before the generation. A simple system test using a variety of the facil- ities offered by SOS and TEM is shown below. This example consists of three terminal logs as it includes a multiterminal test (using the tesprogram "tsostest"). \f M_ @ ATT sos >go team pass hobo 16.53 SOS: TEAM ENROLLED o pp b=algol tsostest o c b 16 53 43: LOGIN: 2, ATT SUB010 16 53 59: LOGIN: 9, ATT SUB011 16 54 09: LOGOUT: 9,OUT 16 54 12: LOGOUT: 2,OUT END 23 The log of two terminals serviced by the multiterminal job "team" may look like: @ ATT sos >in team nn 16.54 SOS: TERMINAL CONNECTED FROM TEM SOS TESTPROGRAM READY qwaqwaqwaqwaqwaqwaqwaqwaqwaq TERM = 9 LINE = 1: QWAQWAQWAQWAQWAQWAQWAQWAQWAQ 1234567890 TERM = 9 LINE = 2: 1234567890 0987654321 TERM = 9 LINE = 3: 0987654321 @ ATT sos >out TO TEM FROM SOS 16.54 SOS: TERMINAL DISCONNECTED @ ATT sos >in term userb pass b2 16.54 SOS: TERMINAL CONNECTED FROM TEM SOS TESTPROGRAM READY abnsjdgehbsgfa TERM = 2 LINE = 1: ABNSJDGEHBSGFA qverthj TERM = 2 LINE = 2: QWERTHJ dftyuiop TERM = 2 LINE = 3: DFTYUIOP (to be continued) \f P_ (continued) M_ ATT sos >out TO TEM FROM SOS P_ 16.54 SOS: TERMINAL DISCONNECTED Example 26: System test after installation. It is obvious that an operating system is not really tested by running some test programs. The only way to make a realistic test is to use the system for normal routine duties. As a consequence, faults may appear from time to time, especially during the first period after installing the system. To be able to remove the errors causing system failure, SOS may produce testoutput (as explained in section 5.2). The RC maintenance staff will have almost no chances of detecting the errors unless the system failure is documented by means of testoutput, so during the first period after the installation the testoutput facility should be switched on. 5_._5_ _ _ _ _ _ _ _R_e_s_o_u_r_c_e_ _D_e_m_a_n_d_s_ 5.5 W_h_e_n_ _i_n_s_t_a_l_l_i_n_g_ the SOS system (or generating a new version) a process with the following set of resources will do: area 6 buf 6 size 60000 work 20 20 300 disc W_h_e_n_ _r_u_n_n_i_n_g_, the SOS system will need a set of resources for its private use (apart from the resources set aside for SOS jobs).\f The resource demands may be computed like this: Primary store: (halfwords) resident code app = 4000 test buffer (optional) = 512 descriptions and I/O buffers = (users + command users) * (bufsize + 36) Message buffers: constant consumption: = 4 varying consumption = (users + command users) * 2 Area processes: constant consumption 6 Backing storage segments: testoutput = (as defined in trimming) swop area = (size of a user process)/512 * (users + command users) The standard trimming of SOS (as defined in the file "sostrim") will have the following demands: Primary store: Code: 4000 testbuffer: 512 descriptions and buffers:(3+2)* (104+36)7_0_0_ 4_3_0_2_ message buffers: 4 + (3+2)*2 _ _1_4_ area processes: _ _ _6_ It should also be mentioned here that each job created by the "run" command uses one pool and one link in TEM. Apart from this, jobs using multiterminal access via TEM, will need one more pool plus a number of terminal links depending on the max. number of terminals simultaneously "logged in" to the job. \f F_ A_._ _ _ _ _ _ _ _ _R_E_F_E_R_E_N_C_E_S_ A. 1 RCSL No 31-D476: RC8000 Monitor, Part 1 2 RCSL No 31-D477: RC8000 Monitor, Part 2 3 RCSL No 31-D364, 31-D607 and 31D379: System 3, Utility Programs, Part 1, 2 and 3 4 RCSL No 31-D513: Terminal Access Module (TEM) 5 RCSL No 31-D571: PRIMO (2. edition) \f F_ B_._ _ _ _ _ _ _ _ _S_O_S_ _C_O_M_M_A_N_D_S_ B. \f F_ C_._ _ _ _ _ _ _ _ _M_E_S_S_A_G_E_S_ _F_R_O_M_ _S_O_S_ C. SOS may write messages of the following kinds: 1) System messages 2) User messages 3) Parent messages from jobs In class 1 and 2 there will be normal messages and error messages. The layout of SOS messages is: <hour> . <minute> SOS: <message> (normal) <hour> . <minute> *** SOS: <message> (error) The system messages may concern start-up or system failure: S_y_s_t_e_m_ _m_e_s_s_a_g_e_s_ _a_t_ _s_t_a_r_t_-_u_p_: area <number> normal: number of areas in job resource pool error : min. number of areas requested buf <number> normal: number of buffers in job resource pool error : min. number of buffers requested buflength <size> error: the buffer length must at least be <size> function 1,2,3,4,5 error: min. function requested init troubles error: system initialization not ok, run terminated internal <number> normal: max. number of jobs enrolled \f key <number> error: at least 1 free protection key must be available (appears only at RC4000) size <number> normal: max. size available for jobs error : min. size requested started normal: telling that the initialization was successful version: <date of system> <date of options> normal: indicating the version of the SOS system. <area name> <integer> error: written because SOS is not able to read one of its areas; the following messages may appear: swpsos <size> the swoparea could not be created with the size specified (too few resources on "swopdoc" - see section 5.2), tstsos <size> the testoutput area could not be created with the size specified (too few resources on "testdoc" - see section 5.2), fp <result> SOS could not read the file processor (should never occur), cleartemp <result> SOS could not read the catalog cleaning program "cleartemp"; maybe because it does not exist (result = 3), soscat <result> SOS could not read the SOS catalog "soscat"; maybe because it does not exist (result = 3). \f S_y_s_t_e_m_ _m_e_s_s_a_g_e_s_ _a_t_ _r_u_n_t_i_m_e_: fault error: caused by an internal error in SOS, monitor or hardware (most likely: SOS) fault 8' <octal status> <program area> error: transport error concerning program area (disc failure) status <decimal status> <area name> error: transport error concerning swop area or testoutput area (disc failure) U_s_e_r_ _m_e_s_s_a_g_e_s_: bad password error: password not correct (or missing). bs claims exceeded error: SOS has not sufficient backing storage resources for creating the job. call not ok error: the "calling" of a device has been rejected (cause: the device is reserved, the device does not exist or the like). command unknown error: the command typed is not an SOS command. disconnection not ok error: the disconnection of a terminal (at "out") has been refused by TEM (should never occur). forbidden error: the user is not authorized for using the command in question. \f forbidden - system locked error: a job creation command or an "in" command has been refused because the system is locked (by the oper- ator). identification illegal error: the jobname of a job creation command is not in- cluded in the user catalog, or the username of an "in" command does not belong to the jobname spec- ified. include not ok error: the device inclusion has been rejected (cause: the device does not exist). jobfile does not exist error: the jobfile started in a job creation command is not visible from the catalog bases of the job. no room in primary store error: the min. size of the job exceeded the max. size available for SOS jobs. (The min. size may be stated in the user catalog). process creation not ok error: a job creation has been refused due to resource limitation in SOS. process unknown error: a job intervention command has been rejected because the job stated was not found. ready normal: indicates that a command has been sucessfully interpreted. syntax error: the command was rejected because of a syntax error (illegal character, missing parameter or the like). \f terminal busy error: a job creation connecting the terminal via TEM was refused, because the terminal was already connected to some pool in TEM. terminal connected normal: a message telling that an "in" command has been successfully interpreted. terminal connection not ok error: an "in" command has been rejected because TEM refused connecting the terminal (maybe because the actual job has not created a terminal pool). terminal not connected error: an "out" command or a job intervention command has been rejected because the terminal was not connected to the actual job. user conflict error: a job creation command has been rejected because the job existed in advance or because an existing job was using the same standard base as the new one. <jobname> enrolled normal: a message telling that a job creation has succeeded. <jobname> removed after <cause> normal: a message telling that the job has been removed from the system. The cause may be: finis: normal finis message from job break: abnormal termination caused by an internal job error (a "break") terminal failure: a hard error has occured on the primary input terminal operator break: the operator has provoked a "parent break" (break 8) \f user break: the user has provoked a "parent break" (break 8) operator kill: the operator has killed the job userkill: the user has killed the job time exceeded: an interactive job has been too cpu-bound (i.e. the priority has decreased and reached the min. priority accepted by the system). P_a_r_e_n_t_ _m_e_s_s_a_g_e_s_ _f_r_o_m_ _j_o_b_s_ Jobs using devices like magnetic tape stations or jobs running into severe errors may send "parent messages" to SOS. SOS handles parent messages as described in subsection 3.3.3. Some parent messages are printed on the system terminal. This is done with the following format: M_m_m_ message <hour> . <minute> SOS: <jobname> <contents> P_p_p_ pause The <contents> is totally specified by the job as explained in subsection 3.3.3. \f F_ D_._ _ _ _ _ _ _ _ _A_N_ _E_X_A_M_P_L_E_ _O_F_ _A_ _M_U_L_T_I_T_E_R_M_I_N_A_L_ _P_R_O_G_R_A_M_ D. \f F_ E_._ _ _ _ _ _ _ _ _A_N_ _E_X_A_M_P_L_E_ _O_F_ _A_ _U_S_E_R_ _C_A_T_A_L_O_G_ E. \f F_ F_._ _ _ _ _ _ _ _ _T_H_E_ _A_U_X_I_L_I_A_R_Y_ _F_I_L_E_ _"_s_o_s_t_r_i_m_"_ F. \f F_ \f F_G_._ _ _ _ _ _ _ _ _T_H_R_E_E_ _V_E_R_S_I_O_N_S_ _O_F_ _A_ _M_A_S_T_E_R_ _M_I_N_D_ _P_R_O_G_R_A_M_ G. G_._1_ _ _ _ _ _ _ _S_i_m_p_l_e_ _S_i_n_g_l_e_ _T_e_r_m_i_n_a_l_ _V_e_r_s_i_o_n_ G.1 \f F_ G_._2_ _ _ _ _ _ _ _S_i_n_g_l_e_ _T_e_r_m_i_n_a_l_ _V_e_r_s_i_o_n_ _w_i_t_h_ _I_n_p_u_t_ _C_h_e_c_k_i_n_g_ G.2 \f F_ G_._3_ _ _ _ _ _ _ _M_u_l_t_i_t_e_r_m_i_n_a_l_ _V_e_r_s_i_o_n_ _w_i_t_h_ _I_n_p_u_t_ _C_h_e_c_k_i_n_g_ G.3 \f F_ H_._ _ _ _ _ _ _ _ _I_N_D_E_X_ H. H_._1_ _ _ _ _ _ _ _S_u_r_v_e_y_ _o_f_ _E_x_a_m_p_l_e_s_ H.1 Example 1: Job creation .................................... 4 Example 2: Executing utility program ...................... 5 Example 3: Creating a text file ............................ 6 Example 4: Executing utility programs ...................... 7 Example 5: Program translation ............................. 7 Example 6: Text editing .................................... 7 Example 7: Execution of interactive program ................ 8 Example 8: Job intervention ................................ 9 Example 9: Job termination ................................. 9 Example 10: Running a multiterminal program ................. 10 Example 11: Automatic program activation .................... 11 Example 12: Running a batch job from a terminal ............. 12 Example 13: Creating a job file ............................. 12 Example 14: Running a job using a job file .................. 13 Example 15: Job file routing job output to printer .......... 13 Example 16: SOS started as a child of "s" ................... 33 Example 17: SOS started using "S-replacement" ............... 34 Example 18: Operator intervention ........................... 35 Example 19: Clear system .................................... 36 Example 20: Tape mounting ................................... 36 Example 21: Drain system and close down ..................... 37 Example 22: Printing testoutput ............................. 38 Example 23: Individual trimming ............................. 45 Example 24: System installing and trimming .................. 47 Example 25: Compressing user catalog ........................ 56 Example 26: System test after installation .................. 60 \f \f «eof»