# System Generation (OS)

System Generation (SysGen) is a two-stage process for installing or updating OS/360, OS/VS1, OS/VS2 (SVS), OS/VS2 (MVS) and chargeable systems derived from them. There are similar processes for, e.g., DOS/360, which this article does not cover. Also, some of the details have changed between releases of OS/360 and many details do not carry over to later systems.
There are several reasons that IBM provided a system generation process rather than simply providing a mechanism to restore the system from tape to disk. System/360 did not have self-identifying I/O devices, and the customer could request installation of I/O devices at arbitrary addresses. As a result, IBM had to provide a mechanism for the customer to define the I/O configuration to OS/360. Also, OS/360 supported several different options; IBM needed a way for the customer to select the code appropriate for the options needed at a particular installation.
The SysGen process runs as a series of jobs under the control of the operating system. For new installations, IBM provides a complete pre-configured driver system, which is intended only for preparing for and running the sysgen, not for production use.
Prior to running the Sysgen, the customer must initialize a set of distribution volumes and restore a set of distribution libraries from tape to those volumes. These libraries include data that the sysgen process will copy to target libraries, input to utilities used by the sysgen process, macro definitions used by the sysgen process and load modules that the sysgen process will include when linking load modules into target libraries.
Stage 1 is the compilation of a sequence of assembler macro instructions describing the configuration to be installed or updated. The assembler does not actually compile any object code, but instead compiles a series of PUNCH pseudo-ops in order to generate a job stream for Stage 2. As IBM changed the nomenclature for OS/360 options, it also changed the Sysgen macro definitions to use newer names for the options.
The TYPE keyword on the CTRLPROG macro in the Stage 1 input specifies the type of control program. By Release 13 the old terms SSS, MSS, and MPS had been replaced by PCP, MFT, and MVT. The later M65MP type is a variation of MVT.
The SCHEDULER macro in the Stage 1 input specifies the type of scheduler; Release 13 still used the values SEQUENTIAL and PRIORITY, but those were subsequently replaced by the values used for the TYPE keyword on the CTRLPROG macro.
These types are

## PCP

    Primary Control Program (Option 1)

## MFT

    Multiprogramming with a Fixed number of Tasks (MFT) (Option 2)

## MVT

    Multiprogramming with a Variable number of Tasks (MVT) (Option 4)

## M65MP

    Model 65 Multi-Processing, a special case of MVT.
The GENERATE macro in the Sysgen input can be any of several types:
* Full generation of the operating system.
* Generation of compilers and associated libraries.
* Updating of the I/O configuration
For MVT (either TYPE=MVT or TYPE=M65MP) with TSO, the TSOGEN macro plays the same role as GENERATE. Either macros analyzes the options specified on the previous macro calls and punches the Stage 2 job stream.
The Stage 2 jobstream uses a variety of utilities, including the assembler and linkage editor.
This process is now obsolete; it was initially replaced by the use of SMP/E, IOCP and MVSCP, then later by SMP/E and Hardware Configuration Definition (HCD).