Introduction
Programs running in a user process in EMAS 2900 have access to
* the un-privileged instruction set of the 2900 series
* a virtual memory, currently of 32 Mbytes
* a set of procedures, collectively known as the "Director
interface", which enables the process to do the following:
a) create and access files
b) perform interactive I/O
c) handle error and asynchronous contingencies
d) access "private" magnetic tapes
e) send and accept inter-process messages
Since the procedures comprising the Director interface do not provide
facilities for program compilation, loading or execution, it is
assumed that most users of the System will wish either to adopt an
existing set of such facilities or to write their own. Such a set
of facilities is known as a "subsystem". The appearance of EMAS
2900 to a user is determined by the appearance of the subsystem he
is using.
There is available with EMAS 2900 the "Edinburgh Subsystem", which
provides facilities for developing and running user programs and
packages. This subsystem is used in Edinburgh University, its
appearance to users is described in Ref. 1.
It is not intended, however, that the Edinburgh Subsystem need
provide the only user interface to the System, but that other
installations should be free to provide their own subsystems,
reflecting their particular requirements. This manual describes
the facilities available to the writers of such subsystems.
Familiarity with "EMAS 2900: Concepts" (Ref. 2) is essential.
It has been a design principle of EMAS 2900 that a user process may
not interfere, intentionally or otherwise, with any other process.
At the same time, if a subsystem does not use the Director interface
correctly, the process can easily disappear without trace,
particularly before establishing workable contingency handling. The
facilities described here are intended to allow a subsystem to be
built in an incremental way from an interactive terminal, and
avoiding such pitfalls. Since a very considerable amount of basic
work has already been established in the form of the Edinburgh
Subsystem, it would be reasonable to expect that:
a) A new subsystem would be prepared using the facilities of the
Edinburgh Subsystem.
b) A new subsystem would be created in the Edinburgh standard object
file format.
Conventions
In general, use should be made of the "EMAS 2900: Concepts" manual
(Ref. 2), which contains a glossary of terms used in this and other
EMAS 2900 documents. The following notes supplement that glossary
and describe additional relevant terms.
Local Controller, Supervisor
In this manual the terms "Local Controller" and "Supervisor" are
used to describe resident supervisory code concerned with
controlling the user process.
File system number, disc number
EMAS disc-packs have two decimal digits as the last two characters
of the 6-character label, e.g. EMAS02. The decimal number which
the pair of digits represent is called the disc number or the
file system number (interchangeably).
System disc
System start-up comprises IPL followed by the loading into main
store of a Supervisor (Global Controller, Local Controller and
device handlers) from a specified site on a specified disc.
That disc is called the "System disc" (or IPL disc or SLOAD disc)
for the session, since from that same disc various System components
are used by default: Director, permanent processes 1, 2, 3 and 4
(respectively called DIRECT, VOLUMS, SPOOLR and MAILER), and the
Edinburgh Subsystem. The sites containing the code and GLAP (see
below) for these components are connected into the virtual memory of
each user process, as appropriate, and paged from their respective
sites on the System disc.
GLAP, GLA
In the Edinburgh standard object file format, code and certain
other areas are shareable. However, the area which contains the
following components is fundamentally unshareable, it also needs
to be written to at program load time and during execution:
a) global variables (perhaps having initialisation values)
b) references to code and data areas in other modules
c) code and data entry descriptors in this module
This area in the object file is called the GLAP (General Linkage
Area Pattern). The initial action of a program load is to
connect the object file into virtual memory, and then to make a
copy of the GLAP into another segment which is writeable, and
unshared by any other user process, leaving the complete object
file (including the GLAP) available for shared use by other
processes. The copy of the GLAP in the unshared segment is
called the GLA (General Linkage Area).
Main log and Director log
System components are able to note chosen events either in the "main
log" or in the Director log, 'DIRLOG'. When a current log file is
full, or when the command D/PRINT (or D/DIRPRINT) is given to DIRECT,
a new file is supplied and the old one is passed to SPOOLR. It is
queued by SPOOLR until the JOURNAL system (Ref. 3) accepts it for
analysis and long-term storage. When the D/PRINT command is given,
a copy of the current file may also sent to the line printer queue,
in SPOOLR. Director is able to monitor process start-up and other
events - as described in this manual - by writing either to DIRLOG
or, if specified, to a file belonging to the process owner.
IMP80 programming language
In this manual, programming entities and record formats are
described in terms of the IMP80 programming language (Ref. 4).
The File System
The main principles and features are as follows:
a) Each disc-pack is treated as a unit, all the files described by
the indexes on a disc, reside on that disc.
b) The file system is implemented "in process" and comprises
provision of the following primitives, to be called by outer code
(higher ACR, less privileged), in particular a subsystem:
CREATE file
CHANGE file SIZE
DESTROY file
CONNECT file
DISCONNECT file
Interfaces to lower ACR code are limited to the following
requests:
* MOVE or CLEAR section of disc space
* CLAIM or FREE semaphore number conventionally associated with a
file index or "bitmap".
* For CONNECT and DISCONNECT, writing into or deleting from the
"Master Page Tables" the relationships between the segment
numbers of the virtual memory and groups of sections of disc
space. The "Master Page Tables" reside in the Local Controller
stack for the process, and the Local Controller organises the
virtual memory hierarchy and the satisfying of page faults
from the information therein.
c) Just as the user accesses a file by requesting that it be
CONNECTed into his virtual memory and then referencing the
appropriate virtual addresses obtained, so the Director code,
which implements the file system, creates and accesses the indexes
and the "bitmaps" by CONNECTing them also into the virtual memory
at a lower ACR level (more privileged) than that of the subsystem
and the user.
Director organises the file system in terms of epage units (see the
Glossary in Ref. 2). A 100 Mbyte disc pack contains 24000 epages
(approximately X'5E00'), and currently Director uses from X'40' or
X'800' to X'5000' for the file system. (On a disc which may be used
as a System disc, epages below X'800' are used for the IPL supervisor
(Chopsupe), 3 versions of a main supervisor, 4 versions of Director,
and so on.) The first 128 pages of the file system space are used for
the "bitmap" for the disc pack, and for the file indexes for the files
which reside on the disc-pack.
The "bitmap" is an area containing one bit representing each epage on
the pack, numbered from 0 to X'5E00' approximately. A zero bit means
that the epage is free, a one bit that it is allocated. The bitmap
is located at the start of the file system space, the indexes follow,
and the users' file pages start beyond the indexes. The actual start
page numbers are all constants in Director's code.
Director allocates the users' files in maximum-sized units of one
"section", 128 Kbytes. A file consisting of 1 segment has either 1 or
2 sections, and larger files have more sections as necessary. The file
index contains a file descriptor giving the name of the file and a list
of the starting epage numbers of each section of the file. When a
CREATE request is made, Director searches the bitmap for
a group or groups of the required numbers of free pages and sets the
bits accordingly. For a CONNECT request, Director extracts the
starting epage numbers of the sections of the file from the index and
inserts them into the "claimed block" table and puts pointers from the
"secondary segment" table to the claimed block table entries. The
addresses of the starts of these tables are passed to Director at
process start-up.
To reference a file index, Director first searches the "name-number
table", which relates owner names to index page numbers. When the
entry for the file owner has been found, Director connects the relevant
pages into virtual memory.
N.B. Director connects bitmaps, name-number tables and indexes "on
demand" into the user's virtual memory in segments (not
accessible to the user) numbered between 16 and 31. For
efficiency, the bitmap and name-number table for the pack on
which the process owner's file index and files reside, and also
the section containing the file index itself, are left
connected for the duration of the process.
References
1 EMAS 2900: User's Guide (describes the facilities of the
Edinburgh Subsystem). ERCC (1979).
2 EMAS 2900: Concepts. ERCC, 2nd Edition (1978).
3 EMAS 2900: The JOURNAL System. ERCC (1979).
4 The IMP Language and Compiler. Stephens, P.D., Computer Journal,
Vol. 17 no. 3 (1974).
5 The Primitive Level Interface. ICL internal document PSD 2.5.1
(1975).
6 EMAS 2900 Subsystem Note 9: Edinburgh Standard Object File
Format. ERCC (1979).
7 The EMAS Director. Rees, D.J., Computer Journal, Vol. 18 no. 2
(1975).
8 EMAS 2900 System Note 4: EMAS 2900 System Calls. ERCC (1977).
9 EMAS 2900 Supervisor Note 4: Local Stacks. ERCC (1977).
10 EMAS 2900 Supervisor Note 1: PON Mechanism for Director. ERCC
(1978).
11 EMAS 2900 Supervisor Note 15: Communications Record Format. ERCC
(1979).