DOS/360 and successors: Difference between revisions

Content deleted Content added
DOS is dead but the family is not
WarrenFW (talk | contribs)
Transients: Complete rewrite
Line 70:
The concept of transient area is part of [[The Mythical Man-Month|Mythical Man-Month]]'s discussion on design and the use of main memory.<ref>{{cite book
|title=The Mythical Man-Month |year=1975 |page=101
|author=F. P. Brooks |isbn=0-201-00650-2}}</ref> To further reduce memory usage, the supervisor employed overlays called ''transients'' that were read into one of two reserved ''transient areas'' as required. Two types of transient routines, called ''physical transients'' and ''logical transients'' handled hardware exceptions and provided program services such as OPEN/CLOSE respectively. Transient module names all began with $$A or $$B which sped up loading by storing their names first in the directory. They were often referred to as "A-Transients" or "B-transients."
* Physical transients were loaded into the 556 byte A-Transient area to handle hardware errors (ERPs), record error-specific data (OBR/MDR) on IJSYSRC, and issue error messages. All A-Transient module names began with $$A.
* Logical transients were loaded into the 1200 byte B-Transient area to provided common program services like OPEN and CLOSE for LIOCS. All B-Transient module names began with $$B.
 
The use of $$A and $$B prefixes ensured rapid loading of transients because their names were stored first in the directory.
 
DOS/VS added Machine Check and Channel Check Handlers, which were another set of transients all starting with $$RAST and executing in the Recovery Transient area. This was done as part of the reliability, availability, and serviceability (RAS) enhancements for the System/370. Before this addition, machine checks caused termination of the program running and channel checks caused termination of the program accessing the device, at the time of the error. [[User:WarrenFW|WarrenFW]] ([[User talk:WarrenFW|talk]]) 23:48, 24 September 2020 (UTC)
 
===Multiprogramming===