Tuesday, February 13, 2024

OS/MVT

Multi programming with variable number of task OS load program one after another until all memory is used. When a program ends, its memory range is released. However a new program can be loaded if the contiguous space is large enough required by the program. Fragmentation of memory caused by programs ending at different time may not free enough contiguous memory for new program. 

OS/MFT

Multiple fixed task OS divided real memory into partitions. Each job ran in one partition. When loader load a program in a partition, it relocate the code to run in the partition memory address range. 

OS/PCP

Primary Control Program system run one job at a time. Program is loaded in a fixed location in memory. PCP automates many of the operator intervention tasks at that time. Program larger than memory need to be broken down into overlays. Input output spooling was available but not officially supported. 

Saturday, February 3, 2024

Mainframe Main Memory access

 Main memory is divided into block. Each block is associate with a storage key. To fetch or update data in the block, program access key is checked against the block key. This is for compatibility with old machine architecture before virtual storage is available. Also the block has a reference and a change bit. 

Main storage blocks are 2K in size though most manipulation is 4K. The he reason is to be compatible with DOS. 

MCU control the access to memory by COU or channel. Address is stored in memory address register (MAR) and data to store or the result of fetch is stored in memory data register (MDR). 

To store, CPU (or channel) alerts MCU with a MEMORIZE signal to signify it is a store request. It then update the MAR and MDR. It then issues the NOW signal to start the store operation. 

To fetch from memory, the request or issue a RECALL signal, then update the MAR. It issues a NOW signal to MCU to fetch the data 

MVS channel and control unit

An I/O address is a combination of channel number, control unit number and device number. 

Control unit handle the assembly of bits sent from device to bytes format, it also validate the data using CRC. The purpose of CU is to centralize these logic to make device cheaper to manufacture. 

Channel is used to offload CPU from moving data from device to main memory (DMA). 

VIO

 VIO uses virtual storage and paging dataset to simulate temporary dataset for program. VIO provides better performance as it eliminate VTOC processing, and better I/O load balancing. 

IOS

 I/O Supervisor is responsible to start I/O operation and monitor events from channel, control unit and devices. 

To start an I/O, IOS store the address of a channel program in caw (channel address word) follow by start I/O instruction. When I/O is done. IOS performs termination processing. IOS also responds to event, purging or restoring an I/O operation. 

Program and access method interact with IOS via Drivers. Most of access method uses EXCP driver. The EXCP and EXCPVR macro invokes the EXCP driver. The driver convert the virtual addresses in the channel command words into real address. It issues STARTIO macro to starts the I/O. IOS takes over and issue the STARTIO instruction or queue the request for later execution

DSCB

 DSCB resides in VTOC. It is the dataset label that contains the characteristics of the dataset, and the physical tracks that t resides. 

DASDM routines manipulates these DSCB and include ALLOCATE, SCRATCH, PARTIAL RELEASE and EXTEND. It also include VTOC RELATED ROUTINES such as RENAME, OBTAIN, LEPACE and PROTECT. 

MVS OPEN, CLOSE and EOV processing

 The OPEN macro verify the volume and dataset password. For tape, it writes volume label. It then passes vi trip to access method. 

The Close macro update the dscb in vtoc. For tape processing it writes the tape mark and reposition the tape. 

EOV handle the situation when the write reach the end of volume transparently to the application. It extends the dataset to another disk or tape volume.  For disk, VTOC is updated. For tape, you t will ask to mount another volume and continue writing. 

JES

 JES read in job and spool it in DASD. The Converter translates the JCL into internal text. An initiator asked for a job to run, JES selects a job based on tge PRIORITY specified in the JCL. The Interpreter allocate the control blocks through which the system will manage the job execution. The Initiator attach the job task. When the job step is running, JES collect the job output and spool it. When the job ends, the Terminator releases the job resources 

MVS linage

Early generation (1950s) mainframe does not have an operating system. It run batch one at a time. Operator will feed the program to card reader together with the subroutine deck the program uses. Operator also allocate the devices required. When the program ends, operator deallocate the device es and prepare for the next step (program) to run. The operation is manual. 

The first rudimentary OS at early 1960d are Primary Control Program (PCP) and Disk Operation System (DOS). These OS mechanizing job transition. Device allocation is still Manual. The OS will search for the subroutine library to retrieve the program requires to run. The system is still running one job at a time. 

MFT (multi programming with fixed number or task) came out in 1967 for OS/360. It support running a fixed number of jobs co currently. JCL is used to separate the program from operations (device, dispatching etc). Output is managed by HASP. Multi programming led to TSO and RJE. 

MFT gave rise to MVT (variable number of task). More programming language is supported include PL/1, ALGOL, APL and Basic. 

In 973, three new OS came out - SVS,VS and VM370 all supporting virtual storage. This eliminate the overlay technics. As demand to support more users gave birth to MVS in 1974 

The evolution of mainframe OS improved productivity of users and application and system programmers. It automate computer operations, workload management, data and resource management.