|
|
This write-up gives a quick overview of the process by which any OS/360 system is initialized, how storage is used (particularly in OS/360/HASP), and describes how OS/360 is modified by the use of HASP. HASP is the short name for the Houston Automatic Spooling Priority System. The storage layout described is from a University system using an IBM 360/67 system. Overview of OS/360 with HASP This write-up gives a quick overview of the process by which any OS/360 system is initialized, how storage is used (particularly in OS/360/HASP), and describes how OS/360 is modified by the use of HASP. HASP is the short name for the Houston Automatic Spooling Priority System. The storage layout described is from a University system using an IBM 360/67 system. 1 Initialization – Getting a system up and runningConsider a computer with no operating system currently in it. The first necessity is to get a workable operating system in it, so that JOBs can be run. This is not a trivial process: not that there is not program fetch resident in the machine no I/O access method routines, and not even a current set of PSW’s in low core for directing interrupt actions. For OS/360, the initialization process is composed of two parts: IPL and NIP. IPL (Initial Program Loader) initialized memory and some other things, and bring the nucleus (the core of the OS) into memory. NIP (Nucleus Initialization Program) performs the remaining actions required to set up a specific nucleus to be ready to execute. 1.1 IPL – Initial Program LoaderThe process of getting an OS/360 system running is called IPLing, and includes the following main steps:
1.2 NIP – Nucleus Initialization ProgramThe IPL process described above applies to all version of OS/360. The NIP is generated in different ways, depending on the specific type of system and choice of options desired. Note: NIP is a CSECT, which is Link-Edited with the nucleus, so that it can refer to sections of the nucleus via address constants, and provide efficient, and specific initialization services. It includes the following steps:
At this point, memory layout is as follows:
2 Running JOBs in an OS/360 SystemThis section describes how JOBs are fun in a standard
OS/360 system, using MVT. There are
two versions of OS/360 system developed. The
fist was MFT (Multiprogramming with a Fixed number of Tasks) and MVS
(Multiprogramming with a Variable number of Tasks). 2.1
Reading Input Streams
For each existing input stream (card reader, or input on
tape), the operator can issue a start READER command (S RDR).
This causes a copy of the reader/interpreter program (referred to
hereafter as RDR) to read card images from the requested input device. During its operations, a RDR reads an input stream, scans
JOC cards and converts them to a standard internal text form, and also obtains
cataloged procedures definitions from the procedure library (PROCLIB).
From the internal text, it builds input queue entries, representing the
information on the user JCL cards. It
also writes any input data cards onto disk, while placing pointers to the data
into the input queue entries do that it can be found later.
The JOB’s input queue entry is enqueded in priority order with others
JOBs awaiting execution. When all the cards for a JOB have been read, it had in
effect been split up into the following:
2.2
Initiating JOB STEPs
The operator may start one or more initiators, each of
which can initiate JOBs from one or more classes (Categories) of JOBs.
Each initiator will then attempt to initiate the highest priority JOB
from the first class of JOBs, which has a ready JOB.
If there are not JOBs awaiting execution in its allowed classes, it waits
for one to become available. Not
that is essentially removes input queue entries from SYSJOBQUE.
Like every RDR, each initiator is executed as a separate task. (Initiator
may be abbreviated INIT). When an allowable JOB become available, the imitator
obtains a region for the JOB (from the free area and equal to the region
specified in the JOBCARD or STEP JCL card).
The region obtained is from the free area, also called the dynamic area.
The initiator then uses information from the RDR internal text to
allocated DASD storage, tape drives, and other I/O devices.
It then attaches the first module of the program to be executed (thus
creating the JOB STEP task), and waits until the JOB STEP completes. When a JOB STEP is finished, the terminator (Part of the
initiator really, so that the whole unit is called an Initiator-Terminator)
effectively cleans up, performing disposition of I/O devices (DISP parameter in
JCL), and reassesses the region, which had been acquired for the JOB STEP. During this process, JOB STEPs are essentially independent,
i.e. they could required different sizes of REGIONS, and might execute in
different locations. Note that the
Initiator-Terminator must also control the skipping of STEPs as controlled by
the JCL COND option. During execution, SYSOUT datasets are written to DASD, to
be printer/punched later. When the
last JOB STEP of a JOB completes, the INIT creates a work queue entry calling
for the JOB’s output to be printed/punched. 2.3
Writing System Output
A program called a system output writer (WTR) can be
started by the operator to transcribe output from DASD to printers or punches,
or even tapes to be printer/punched later.
Output can originally be grouped into classes, which can be written
according to priority or otherwise treaded differently as desires. Comments on the process above: The process described above is quite flexible and general.
However, it does require a fair amount of time to set up any JOB, even a
small one. As such, it is quiet
satisfactory for any installation which runs JOBs which require a fair amount of
time, since when the setup time is negligible.
However, due to the use of OS DASM for SPOOLed input and output, DASD
space can become fragmented, disk head movement can become excessive, and much
time can be used up allocating and de-allocating disk space.
Although OS/360 is quite reasonable in a commercial installation, or in
one running a few large JOBs, it seems to have too much overhead for University
or other installations, which often run, may small JOBs (such as a development
site). For this reason, larger
System/360 computers typically use some method to reduce the overhead in running
small JOBs. All of the methods
involve “faking out” OS/360 in some aspects or other. The method emphasized here (which happens to be the most
popular one) is HASP. 3
Running an OS/360 HASP System
In any OS/360 system, it is fairly typical to have one or
more special JOBs in the system, which are loaded before normal user JOBs, and
typically remain resident from one IPL to the next. Such JOBs may control remote batch terminals, timesharing
typewriter terminals (note…early 360 systems did not have CRTs), or provide
any other service, which the installation desires.
Such JOBs are normally placed into the high-address sections of the free
area. When HASP is used, it is
normally the first JOB submitted to OS/360 and it essentially takes over the
system, even though it appears to OS/360 as just another JOB. 3.1
HASP Initialization
There are two possible cases when starting HASP up after an
IPL. A COLD Start occurs when the
system is completely empty, i.e., there are no JOBs already enqueued on disk
which can be executed or printed/punched. If
there are disk packs on the system containing previously-read JOBs, the start is
called a WARM start. A warm start
normally occurs if the system was previously taken down on purpose, such as for
systems programming, or if either information has been saved previous to a
“crash”. A COLD start only
occurs when the system crashed badly, and destroys records of JOBS already
SPOOLed onto disk. In this case,
the JOBs must be read in again. The
operator can also request a COLD start via the operator reply to the HASP
initialization message. When HASP first gains control, it uses a special SVC call,
which return to HASP with Storage Protect Key Zero (can write to any part of
memory) and supervisor state, Also supplying HASP with some useful pointer to
control blocks in the nucleus. Not
this special SVC can only be called one time, since it locks itself after its
first usage after an IPL. UCB (Unit Control Blocks) exits for every device connected
to the computer system. HASP now
scans the UCBs, and essentially allocates to itself the following devices:
It also obtains effective control of the operator’s
console(s), plus remote terminals if any. Finally, HASP modifies the SVC table (which contains
pointers to the routines which are called for each specific SVC number), so that
the following ones go into HASP, rather than to the original routines (also
saving these addresses for later use for itself):
SVC 0
(EXCP – all Input/Output) 3.2
Running Normal User JOBs under OS/360 with HASP
Finally, a JOB STEP of the user JOB executes. When it wishes to read cards or print lines, it acts as though it was using a real device attached to the system, and OS/360 accepts this. Whenever an SVC 0 is issued to request such I/O, HASP intercepts it. HASP may be entered for any of the following reasons:
During execution, HASP can also provide extra services, such as monitoring time used, output records, etc. 5.
OUTPUT stages – Print and punch – after a JOB has been executed, it
enters the print queue, is printed, enters the punch queue, and without the
knowledge of OS/360, which believes the JOB disappeared is it s disk space
released. This allow for JOBs to be
saved across system IPLs and for such useful services as repeating output by
operator control. 3.3
DASD Storage Management in HASP
HASP manages its DASD storage quiet efficiently, not only
needing no access to DASD to allocate or de-allocate space, but also doing a
good job of minimizing arm movement on moveable-head devices.
HASP requires the use of entire volumes for SPOOLing input/output.
The management of this storage works as follows: A master cylinder bit-map is maintained in HASP.
This is a string of byes, in which each bit represents 1 cylinder on the
SPOOL disk. A one-bit represents a
free cylinder, while a zero-bit shows that the give cylinder is allocated to
some JOB. HASP also remembers for
each disk which cylinder was the last referenced, thus always noting the current
position of the read/write heads. Two key bit-maps exist for each JOB, one for SYSIN data and
the other for SYSOUT data. Whenever
a cylinder is required for a JOB, HASP searches for a free one in the following
fashion:
Credits: This document was a green-bar listing found from about 1972. It appears to be from the Pennsylvania State University. |
The information on this site is the combined effort of a lot of people,
please credit the authors if you use their information.
|