job programs, implementing virtual memory including: the allocation of VM addresses, managing segment and page tables, providing protected or read-only memory by setting storage keys, managing memory reference and change bits, managing named address spaces (NASs), determining when and which pages should be moved between real memory and secondary storage to implement demand paging, providing services to job programs that issue Supervisor Call (SVC) and Monitor call (MC) instructions, including: starting and terminating jobs, initiation of input/output operations (channel programs), scheduling timer interrupts, communication with the system operator, providing inter-task communication services, allowing jobs to acquire and release software locks, allowing jobs to enter and leave user and system mode, where user mode programs do not have access to some virtual memory segments and the full range of SVCs, providing services to allow the synchronization of job programs, providing shadow segment and page tables and other services that allow job programs to provide virtual machine services, simulating a few machine instructions that are present on some, but not all, models of the S/360 or S/370 computers, simulating the Branch on Program Interrupt (BPI) pseudo instructions, machine check error recovery, writing job dumps (making a snapshot of the current execution state of a job by writing out all real memory, all the job's virtual memory, general registers, and program status word to magnetic tape), tracking the amount of processor time used and the number of page-ins for jobs, maintaining the time of day clock, and assisting in the creation of diagnostic trace tapes. After initialization UMMPS is entirely interrupt driven. The interrupts may be due to supervisor (SVC) or monitor (MC) call instructions issued by job programs to request services, page fault interrupts for virtual memory pages that are not in real memory when referenced by a job program, program interrupts caused by abnormal conditions in job programs, timer interrupts on behalf of job programs or used internally within the supervisor, interrupts from the input/output subsystem, machine check interrupts, external (operator initiated) interrupts, and interrupts from other processors in a multiprocessor configuration. A program interrupt in supervisor state is a system failure that results in a supervisor dump (a Super Dump, where the machine state and the contents of all real memory is written to magnetic tape) followed by a system restart (re-IPL). Branch on Program Interrupt (BPI) The Branch on Program Interrupt (BPI) pseudo instruction provides a simple way for