Processes A process is one of the one or more sections of program between which the operating system is dividing the 1616’s time. All the currently known pro- cesses are described by a table internal to 1616/OS . This table is called the ‘process table’. The current processes can be inspected using the inbuilt command ps , which also shows the status of many of the multitasking operations described below. Scheduling A process is said to be ‘scheduled’ when the operating system has decided to run it for a while. When the system decides that the process has run for long enough, it is descheduled and another process is scheduled.
The amount of time a process can obtain can be varied by the nice entry to the proccntl system call Parent and child processes When one process starts (or spawns) another, the second process is referred to as a child of the first. The first is the parent process. A typical example of this is in running shell files. The shell file interpreter in 1616/OS is the parent process, creating a child process for each command in the shell file. Killing A process is said to be killed when another process (or the system) causes it to terminate abnormally. This is done by sending it a signal or by explicitly killing it with the kill entry to the proccntl system call.
A normal process exit is very similar to killing, except a process does it to itself and the exit code is handled differently. Blocking A process is said to be blocked if it is descheduled until an event happens, typically the termination of another process. The most common case of blocking is where one program runs another one, then blocks until the second one completes and exits. Locking in a process A process is ‘locked in’ if the scheduler is prevented from descheduling the process and running another one. The lockin entry to the proccntl system call is provided to permit a program to lock itself in. Sleeping A process is said to be sleeping if it is not being rescheduled.
It still occupies a slot in the process table, and will be reactivated at some time in the future. Sleeping processes take practically no CPU time (0.1%, actually). Sleep is an entry in the proccntl system call. Synchronous and Asynchronous processes A synchronous, or foreground process is one which blocks its parent. An asynchronous, or background process does not block its parent, so usually the child and parent proceed in parallel. The availability of asynchronous processes is what it is all about: the only sort of process under the earliest versions of 1616/OS were synchronous. Page 56 User Tutorial Manual Multi Tasking