OS/360 , officially known as IBM System/360 Operating System , is a discontinued batch processing operating system developed by IBM for their then-new System/360 mainframe computer , announced in 1964; it was influenced by the earlier IBSYS/IBJOB and Input/Output Control System (IOCS) packages for the IBM 7090/7094 and even more so by the PR155 Operating System for the IBM 1410 / 7010 processors. It was one of the earliest operating systems to require the computer hardware to include at least one direct access storage device .
92-550: Although OS/360 itself was discontinued, successor operating systems, including the virtual storage MVS and the 64-bit z/OS , are still run as of 2023 and maintain application-level compatibility with OS/360. IBM announced three different levels of OS/360, generated from the same tapes and sharing most of their code. IBM eventually renamed these options and made some significant design changes: Users often coined nicknames, e.g., "Big OS", "OS/MFT", but none of these names had any official recognition by IBM. IBM provided OS/360 as
184-408: A Fixed number of Tasks (MFT) was intended to serve as a stop-gap until Multiprogramming with a Variable number of Tasks (MVT), the intended target configuration of OS/360, became available in 1967. Early versions of MVT had many problems, so the simpler MFT continued to be used for many years. After introducing new System/370 machines with virtual memory in 1972, IBM developed MFT 2 into OS/VS1 ,
276-421: A VMM, guest OS or guest application stack needs three. The difference between paging and segmentation systems is not only about memory division; segmentation is visible to user processes, as part of memory model semantics. Hence, instead of memory that looks like a single large space, it is structured into multiple spaces. This difference has important consequences; a segment is not a page with variable length or
368-494: A Variable number of Tasks (MVT) was the most sophisticated of three available configurations of OS/360 's control program, and one of two available configurations in the final releases. MVT was intended for the largest machines in the System/360 family. Introduced in 1964, it did not become available until 1967. Early versions had many problems and the simpler MFT continued to be used for many years. Experience indicated that it
460-499: A contiguous address space or collection of contiguous segments . The operating system manages virtual address spaces and the assignment of real memory to virtual memory. Address translation hardware in the CPU, often referred to as a memory management unit (MMU), automatically translates virtual addresses to physical addresses. Software within the operating system may extend these capabilities, utilizing, e.g., disk storage , to provide
552-470: A decade after their successors had been launched. The division between MFT and MVT arose because of storage limitations and scheduling constraints. Initially IBM maintained that MFT and MVT were simply "two configurations of the OS/360 control program", although later IBM described them as "separate versions of OS/360". IBM originally wrote OS/360 in assembly language . Later on, IBM wrote some OS/360 code in
644-425: A file (or a segment from a multi-segment file) is mapped into a segment in the address space, so files are always mapped at a segment boundary. A file's linkage section can contain pointers for which an attempt to load the pointer into a register or make an indirect reference through it causes a trap. The unresolved pointer contains an indication of the name of the segment to which the pointer refers and an offset within
736-489: A generalization of the concept of virtual memory. Virtual memory is an integral part of a modern computer architecture ; implementations usually require hardware support, typically in the form of a memory management unit built into the CPU . While not necessary, emulators and virtual machines can employ hardware support to increase performance of their virtual memory implementations. Older operating systems, such as those for
828-416: A large free block from which further segments may be allocated. Since there is a single master descriptor for each segment the new block address only needs to be updated in a single descriptor, since all copies refer to the master descriptor. Paging is not free from fragmentation — the fragmentation is internal to pages ( internal fragmentation ). If a requested block is smaller than a page, then some space in
920-408: A mainstream operating system and is the ancestor of today's widely used VSE . IBM released three variants of OS/360: PCP (Primary Control Program), a stop-gap which could run only one job at a time, in 1966; MFT ( Multiprogramming with Fixed number of Tasks) for the mid-range machines, and MVT (Multiprogramming with Variable number of Tasks) for the top end. MFT and MVT were used until at least 1981,
1012-642: A means to improve performance, rather than to solve the problems involved in multi-programming. The first true virtual memory system was that implemented at the University of Manchester to create a one-level storage system as part of the Atlas Computer . It used a paging mechanism to map the virtual addresses available to the programmer onto the real memory that consisted of 16,384 words of primary core memory with an additional 98,304 words of secondary drum memory . The addition of virtual memory into
SECTION 10
#17327731551241104-552: A new approach to workload management, allowing users to define performance targets for high-priority batch jobs. This enabled users to give their systems more work than before without affecting the performance of the highest-priority jobs. MVS was IBM's first mainstream operating system on the System/370 to support what IBM called tightly coupled multiprocessing , in which 2 (later, up to 12, for IBM mainframes, and up to 16, for Amdahl mainframes) CPUs shared concurrent access to
1196-464: A new implementation of the catalog facility which enables applications to access files by name, without needing to know which disk drive(s) they are on. VSAM datasets must be defined in a VSAM catalog before they are used, and non-VSAM datasets can also be listed in a VSAM catalog. The MVS Master Catalog must be a VSAM catalog. Catalogs were originally provided in OS/360 in the form of CVOLs; MVS added
1288-729: A new language, Basic Systems Language (BSL), derived from PL/I. A large amount of the TSO code in Release 20 was written in BSL. TSS/360 was so late and unreliable that IBM canceled it, although IBM later supplied three releases of the TSS/370 PRPQ. By this time CP-67 was running well enough for IBM to offer it without warranty as a timesharing facility for a few large customers. These three options offered such similar facilities that porting applications between them usually required minimal effort;
1380-504: A presentation on virtual memory in the Atlas I computer. Paul King took the ideas back to Burroughs and it was determined that virtual memory should be designed into the core of the B5000. . Burroughs Corporation released the B5000 in 1964 as the first commercial computer with virtual memory. IBM developed the concept of hypervisors in their CP-40 and CP-67 , and in 1972 provided it for
1472-433: A problem called “ thrashing ” can occur, in which the computer spends an unsuitably large amount of time transferring pages to and from a backing store, hence slowing down useful work. A task's working set is the minimum set of pages that should be in memory in order for it to make useful progress. Thrashing occurs when there is insufficient memory available to store the working sets of all active programs. Adding real memory
1564-482: A process or between processes. Descriptors are central to the working of virtual memory in MCP systems. Descriptors contain not only the address of a segment, but the segment length and status in virtual memory indicated by the ‘p-bit’ or ‘presence bit’ which indicates if the address is to a segment in main memory or to a secondary-storage block. When a non-resident segment (p-bit is off) is accessed, an interrupt occurs to load
1656-666: A separate timesharing operating system, TSS/360 , for the System/360 Model 67 . There are at least two accounts of why IBM eventually decided to produce other, simpler batch-oriented operating systems: IBM introduced a series of stop-gaps to prevent System/360 hardware sales from collapsing—first Basic Programming Support (BPS) and BOS/360 (Basic Operating System, for the smallest machines with 8K byte memories), then TOS/360 (Tape Operating System, for machines with at least 16K byte memories and only tape drives), and finally DOS/360 (Disk Operating System), which became
1748-416: A separate article. This article adheres to IBM's usage of the term storage rather than memory . OS/360 assigns processors to tasks, which are analogous to light-weight processes or threads in other systems. Each task has a Task Control Block (TCB) and a stack of Request Blocks (RBs). A task is either dispatchable or nondispatchable and an RB is either waiting or not waiting. The Dispatcher selects
1840-443: A separate catalog structure for VSAM; later IBM added a third type of catalog known as an ICF catalog. (IBM removed support for CVOL and VSAM catalogs as of 2000, since they were not Y2K-compliant; hence in z/OS, only ICF catalogs are supported.) In 1974 IBM announced Systems Network Architecture , which was meant to reduce the cost of running large networks of terminals, mainly by using communications lines much more efficiently. This
1932-475: 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
SECTION 20
#17327731551242024-412: 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
2116-562: A set of libraries on tape that the installation had to restore to DASD in order to perform a system generation . IBM also offered a set of optional source tapes that the installation could use to modify and assemble modules that IBM normally provided as object code. In addition, IBM offered microfiche that had assembly listing of the basic program material and of subsequent service. IBM continued distributing source code until it imposed an Object Code Only (OCO) policy for licensed software. The other major operating system for System/360 hardware
2208-475: A simple way to lengthen the address space. Segmentation that can provide a single-level memory model in which there is no differentiation between process memory and file system consists of only a list of segments (files) mapped into the process's potential address space. This is not the same as the mechanisms provided by calls such as mmap and Win32 's MapViewOfFile, because inter-file pointers do not work when mapping files into semi-arbitrary places. In Multics,
2300-414: A strong incentive to switch to virtual memory for all systems. The additional capability of providing virtual address spaces added another level of security and reliability, thus making virtual memory even more attractive to the marketplace. Most modern operating systems that support virtual memory also run each process in its own dedicated address space . Each program thus appears to have sole access to
2392-460: 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
2484-453: A virtual address space that can exceed the capacity of real memory and thus reference more memory than is physically present in the computer. The primary benefits of virtual memory include freeing applications from having to manage a shared memory space, ability to share memory used by libraries between processes, increased security due to memory isolation, and being able to conceptually use more memory than might be physically available, using
2576-423: 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
2668-465: A while one could find that, although there was enough spare memory in total to run a program, it was divided into separate chunks none of which was large enough. System/360 lacked memory relocation hardware so memory compaction could not be used to reduce fragmentation. A facility called Rollout/Rollin could swap a running job out to secondary storage to make its memory available to another job. The rolled-out job would, however, have to be rolled-in to
2760-412: Is divided into a system ( fixed ) area at the bottom of real storage, a common area at the top and a private area in the middle. These contain the following areas. 'This is a section of storage at the highest physical address. It contains Virtual memory In computing , virtual memory , or virtual storage , is a memory management technique that provides an "idealized abstraction of
2852-546: Is exactly the situation in computers with cache memory, one of the earliest commercial examples of which was the IBM System/360 Model 85. In the Model 85 all addresses were real addresses referring to the main core store. A semiconductor cache store, invisible to the user, held the contents of parts of the main store in use by the currently executing program. This is exactly analogous to Güntsch's system, designed as
OS/360 and successors - Misplaced Pages Continue
2944-430: Is only available for IBM's virtual memory operating systems, since its mainframe software component, VTAM is only available with these operating systems. In 1977 IBM announced MVS/System Extensions, a program product (i.e., it cost extra money) which improved MVS performance and added functionality. Descendants of the original MVS are still used on the latest descendants of System/360, System/390 and zSeries ; it
3036-471: Is the simplest response, but improving application design, scheduling, and memory usage can help. Another solution is to reduce the number of active tasks on the system. This reduces demand on real memory by swapping out the entire working set of one or more processes. A system thrashing is often a result of a sudden spike in page demand from a small number of running programs. Swap-token is a lightweight and dynamic thrashing protection mechanism. The basic idea
3128-420: Is to set a token in the system, which is randomly given to a process that has page faults when thrashing happens. The process that has the token is given a privilege to allocate more physical memory pages to build its working set, which is expected to quickly finish its execution and to release the memory pages to other processes. A time stamp is used to handover the token one by one. The first version of swap-token
3220-535: 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
3312-784: The IOS , notably, among many others, remained coded in Assembly Language , which had been enhanced for OS/VS in the IFOX00 Assembler (from the older, OS/360 IEUASM Assembler). The new version's most noticeable feature was that it supported multiple virtual address spaces - different applications thought they were using the same range of virtual addresses, but the new system's virtual memory facilities mapped these to different ranges of real memory addresses. Each application's address space consists of 3 areas: operating system (one instance shared by all jobs); an application area which
3404-516: The Intel 80386 and later IA-32 processors, the segments reside in a 32-bit linear, paged address space. Segments can be moved in and out of that space; pages there can "page" in and out of main memory, providing two levels of virtual memory; few if any operating systems do so, instead using only paging. Early non-hardware-assisted x86 virtualization solutions combined paging and segmentation because x86 paging offers only two protection domains whereas
3496-755: The S/370 as Virtual Machine Facility/370. IBM introduced the Start Interpretive Execution ( SIE ) instruction as part of 370-XA on the 3081, and VM/XA versions of VM to exploit it. Before virtual memory could be implemented in mainstream operating systems, many problems had to be addressed. Dynamic address translation required expensive and difficult-to-build specialized hardware; initial implementations slowed down access to memory slightly. There were worries that new system-wide algorithms utilizing secondary storage would be less effective than previously used application-specific algorithms. By 1969,
3588-585: The SDS 940 , used page registers instead of page tables in memory for address translation. This part of the operating system creates and manages page tables and lists of free page frames. In order to ensure that there will be enough free page frames to quickly resolve page faults, the system may periodically steal allocated page frames, using a page replacement algorithm , e.g., a Least recently used (LRU) algorithm. Stolen page frames that have been modified are written back to auxiliary storage before they are added to
3680-505: The Technische Universität Berlin in 1956 in his doctoral thesis, Logical Design of a Digital Computer with Multiple Asynchronous Rotating Drums and Automatic High Speed Memory Operation does not stand up to careful scrutiny. The computer proposed by Güntsch (but never built) had an address space of 10 words which mapped exactly onto the 10 words of the drums, i.e. the addresses were real addresses and there
3772-466: The mainframes of the 1960s, and those for personal computers of the early to mid-1980s (e.g., DOS ), generally have no virtual memory functionality, though notable exceptions for mainframes of the 1960s include: During the 1960s and early '70s, computer memory was very expensive. The introduction of virtual memory provided an ability for software systems with large memory demands to run on computers with less real memory. The savings from this provided
OS/360 and successors - Misplaced Pages Continue
3864-447: The Atlas also eliminated a looming programming problem: planning and scheduling data transfers between main and secondary memory and recompiling programs for each change of size of main memory. The first Atlas was commissioned in 1962 but working prototypes of paging had been developed by 1959. As early as 1958, Robert S. Barton , working at Shell Research, suggested that main storage should be allocated automatically rather than have
3956-602: The OS Nucleus and Scheduler. However, because of quite different behavior and memory requirements, users commonly consider them de facto separate operating systems and refer to them as "early OS/360", "OS/MFT", "OS/MVT", respectively. MFT differs from MVT mainly in the way in which it manages memory: when installing MFT, customers specify in the system generation (SysGen) a fixed number of partitions , areas of memory with fixed boundaries, in which application programs can be run simultaneously. Primary Control Program (PCP)
4048-468: The OS has a special facility for "fast fixing" these short-term fixed data buffers (fixing which is performed without resorting to a time-consuming Supervisor Call instruction ). Multics used the term "wired". OpenVMS and Windows refer to pages temporarily made nonpageable (as for I/O buffers) as "locked", and simply "nonpageable" for those that are never pageable. The Single UNIX Specification also uses
4140-429: The OS writes those pages and segments currently in real memory to swap files. In a swap-in, the OS reads back the data from the swap files but does not automatically read back pages that had been paged out at the time of the swap out operation. IBM's MVS , from OS/VS2 Release 2 through z/OS , provides for marking an address space as unswappable; doing so does not pin any pages in the address space. This can be done for
4232-489: The Set System Mask (SSM) instruction to serialize disabled code between the two CPUs. For the most part an M65MP system has the same behavior and interfaces as any other MVT system. The keyword parameter SYS=VMS included M65MP as well as uniprocessor MVT. PCP, MFT and MVT provide similar facilities from the point of view of application programs: Some features were available only for MFT and MVT: When System/370
4324-571: The debate over virtual memory for commercial computers was over; an IBM research team led by David Sayre showed that their virtual memory overlay system consistently worked better than the best manually controlled systems. Throughout the 1970s, the IBM 370 series running their virtual-storage based operating systems provided a means for business users to migrate multiple older systems into fewer, more powerful, mainframes that had improved price/performance. The first minicomputer to introduce virtual memory
4416-727: The details: In most cases, there will be an update to the page table, possibly followed by purging the Translation Lookaside Buffer (TLB), and the system restarts the instruction that causes the exception. If the free page frame queue is empty then the paging supervisor must free a page frame using the same page replacement algorithm for page stealing. Operating systems have memory areas that are pinned (never swapped to secondary storage). Other terms used are locked , fixed , or wired pages. For example, interrupt mechanisms rely on an array of pointers to their handlers, such as I/O completion and page fault . If
4508-597: The duration of a job by entering the name of an eligible main program in the Program Properties Table with an unswappable flag. In addition, privileged code can temporarily make an address space unswappable using a SYSEVENT Supervisor Call instruction (SVC); certain changes in the address space properties require that the OS swap it out and then swap it back in, using SYSEVENT TRANSWAP. Swapping does not necessarily require memory management hardware, if, for example, multiple jobs are swapped in and out of
4600-580: The first place, to relieve programmers of such memory considerations. In multi-processing systems, optimal operation of the system depends on the mix of independent processes at any time. Hybrid schemes of segmentation and paging may be used. The Intel 80286 supports a similar segmentation scheme as an option, but it is rarely used. Segmentation and paging can be used together by dividing each segment into pages; systems with this memory structure, such as Multics and IBM System/38 , are usually paging-predominant, segmentation providing memory protection. In
4692-449: The free queue. On some systems the paging supervisor is also responsible for managing translation registers that are not automatically loaded from page tables. Typically, a page fault that cannot be resolved results in an abnormal termination of the application. However, some systems allow the application to have exception handlers for such errors. The paging supervisor may handle a page fault exception in several different ways, depending on
SECTION 50
#17327731551244784-498: The highest priority dispatchable task whose current RB is not waiting. MVS assigns processors to address spaces , which are analogous to processes, and to Service Request Block (SRBs) and tasks within address spaces. Each address space has an Address Space Control Block (ASCB), a queue of SRBs and a queue of TCBs. In OS/360 all storage is visible to all code, although fetch protection may prevent access by unprivileged code to some control blocks or between jobs. Main storage for MVT
4876-468: The last system of this particular line. The first version of MFT shared much of the code and architecture with PCP, and was limited to four partitions . It was very cumbersome to run multiple partitions. Many installations used Houston Automatic Spooling Priority (HASP) to mitigate the complexity. MFT Version II (MFT-II) shared much more of the Control Program and Scheduler code with MVT, and
4968-485: The only System/370 operating systems that do not have modern descendants. OS/VS2 release 1 was just MVT plus virtual memory and VSAM (see below). This version was eventually renamed OS/VS2 SVS , for Single Virtual Storage, when OS/VS2 Release 2, also known as MVS, for Multiple Virtual Storage, was introduced. SVS was intended as a stepping stone from MVT to MVS, and is only of historical interest today. In 1974 IBM released what it described as OS/VS2 Release 2 but which
5060-653: The original memory locations when they again became available. In 1971 the Time Sharing Option (TSO) for use with MVT was added as part of release 20.1. TSO became widely used for program development because it provided an editor, the ability to submit batch jobs, be notified of their completion, and view the results without waiting for printed reports, and debuggers for some of the programming languages used on System/360. TSO in OS/360 communicated with terminals by using Telecommunications Access Method (TCAM). TCAM's name suggests that IBM hoped it would become
5152-625: The page fault exception to chain with other exceptions without double fault . However, loading segment descriptors was an expensive operation, causing operating system designers to rely strictly on paging rather than a combination of paging and segmentation. Nearly all current implementations of virtual memory divide a virtual address space into pages , blocks of contiguous virtual memory addresses. Pages on contemporary systems are usually at least 4 kilobytes in size; systems with large virtual address ranges or amounts of real memory generally use larger page sizes. Page tables are used to translate
5244-509: The page is stored. When a reference is made to a page by the hardware, if the page table entry for the page indicates that it is not currently in real memory, the hardware raises a page fault exception , invoking the paging supervisor component of the operating system . Systems can have, e.g., one page table for the whole system, separate page tables for each address space or process, separate page tables for each segment; similarly, systems can have, e.g., no segment table, one segment table for
5336-419: The page will be wasted. If a block requires larger than a page, a small area in another page is required resulting in large wasted space. The fragmentation thus becomes a problem passed to programmers who may well distort their program to match certain page sizes. With segmentation, the fragmentation is external to segments ( external fragmentation ) and thus a system problem, which was the aim of virtual memory in
5428-500: The pages containing these pointers or the code that they invoke were pageable, interrupt-handling would become far more complex and time-consuming, particularly in the case of page fault interruptions. Hence, some part of the page table structures is not pageable. Some pages may be pinned for short periods of time, others may be pinned for long periods of time, and still others may need to be permanently pinned. For example: In IBM's operating systems for System/370 and successor systems,
5520-608: The physical view of a computer, although pages themselves are an artificial division in memory. The designers of the B5000 would have found the artificial size of pages to be Procrustean in nature, a story they would later use for the exact data sizes in the B1000 . In the Burroughs and Unisys systems, each memory segment is described by a master descriptor which is a single absolute descriptor which may be referenced by other relative (copy) descriptors, effecting sharing either within
5612-474: The priority: the higher the number of swap-out pages of a process, the longer the time stamp for it will be. Some systems, such as the Burroughs B5500, and the current Unisys MCP systems use segmentation instead of paging, dividing virtual address spaces into variable-length segments. Using segmentation matches the allocated memory blocks to the logical needs and requests of the programs, rather than
SECTION 60
#17327731551245704-606: The programmer being concerned with overlays from secondary memory, in effect virtual memory. By 1960 Barton was lead architect on the Burroughs B5000 project. From 1959 to 1961, W.R. Lonergan was manager of the Burroughs Product Planning Group which included Barton, Donald Knuth as consultant, and Paul King. In May 1960, UCLA ran a two-week seminar ‘Using and Exploiting Giant Computers’ to which Paul King and two others were sent. Stan Gill gave
5796-490: The same area of storage. 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
5888-404: The same memory (and a single copy of the operating system and peripheral devices), providing greater processing power and a degree of graceful degradation if one CPU failed (which, fortunately, became an increasingly rare event, as system up time rose from hours to days and, then, to years .) Initially MVS was supplied with a job queue manager called JES2 (Job Entry Subsystem 2), which
5980-489: The same versions of most IBM Program Products , application and utility software ran on both. The text below mostly treats PCP , MFT and MVT as simply new names for the original SSS , MSS and MPS , although there were some design changes. Also, the text does not distinguish between M65MP and MVT. Officially, PCP, MFT and MVT are not separate operating systems from OS/360,they are only install-time configuration options—in today's words, three different variants of
6072-466: The segment from secondary storage at the given address, or if the address itself is 0 then allocate a new block. In the latter case, the length field in the descriptor is used to allocate a segment of that length. A further problem to thrashing in using a segmented scheme is checkerboarding, where all free segments become too small to satisfy requests for new segments. The solution is to perform memory compaction to pack all used segments together and create
6164-618: The segment; the handler for the trap maps the segment into the address space, puts the segment number into the pointer, changes the tag field in the pointer so that it no longer causes a trap, and returns to the code where the trap occurred, re-executing the instruction that caused the trap. This eliminates the need for a linker completely and works when different processes map the same file into different places in their private address spaces. Some operating systems provide for swapping entire address spaces , in addition to whatever facilities they have for paging and segmentation. When this occurs,
6256-533: The standard access method for data communications, but in fact TCAM in OS/VS2 was used almost entirely for TSO and was largely superseded by Virtual Telecommunications Access Method (VTAM) in the mid-to-late 1970s. Also referred to as SYS=VMS in invocations of some macros that were system-dependent. Model 65 Multiprocessing (M65MP) is a variant of MVT. It runs on a 360/65 in Multisystem mode M65MP traps use of
6348-401: The storage resources that are actually available on a given machine" which "creates the illusion to users of a very large (main) memory". The computer's operating system , using a combination of hardware and software, maps memory addresses used by a program, called virtual addresses , into physical addresses in computer memory . Main storage , as seen by a process or task, appears as
6440-495: The technique of paging or segmentation. Virtual memory makes application programming easier by hiding fragmentation of physical memory; by delegating to the kernel the burden of managing the memory hierarchy (eliminating the need for the program to handle overlays explicitly); and, when each process is run in its own dedicated address space, by obviating the need to relocate program code or to access memory with relative addressing . Memory virtualization can be considered
6532-613: The term "locked" in the specification for mlock () , as do the mlock () man pages on many Unix-like systems. In OS/VS1 and similar OSes, some parts of systems memory are managed in "virtual-real" mode, called "V=R". In this mode every virtual address corresponds to the same real address. This mode is used for interrupt mechanisms, for the paging supervisor and page tables in older systems, and for application programs using non-standard I/O management. For example, IBM's z/OS has 3 modes (virtual-virtual, virtual-real and virtual-fixed). When paging and page stealing are used,
6624-446: The term is "fixed", and such pages may be long-term fixed, or may be short-term fixed, or may be unfixed (i.e., pageable). System control structures are often long-term fixed (measured in wall-clock time, i.e., time measured in seconds, rather than time measured in fractions of one second) whereas I/O buffers are usually short-term fixed (usually measured in significantly less than wall-clock time, possibly for tens of milliseconds). Indeed,
6716-476: The trap requires that data be read into main memory from secondary memory. The hardware to translate virtual addresses to physical addresses typically requires a significant chip area to implement, and not all chips used in embedded systems include that hardware, which is another reason some of those systems do not use virtual memory. In the 1950s, all larger programs had to contain logic for managing primary and secondary storage, such as overlaying . Virtual memory
6808-593: The use of virtual memory. IBM provided an OS/360 SYSGEN option for S/370 support, which did not support DAT but did: OS/VS1 is the successor to MFT, and offers similar facilities with several additions, e.g., RES, virtual memory. VSAM (see below) was initially available as an independent component release (ICR) and later integrated into the OS/VS1 base. IBM released fairly minor enhancements of OS/VS1 until 1983, and in 1984 announced that there would be no more. AIX/370 , AIX/ESA , DPPX , IX/370 , OS/VS1 and TSS/370 are
6900-513: The values used for the TYPE keyword on the CTRLPROG macro. These types are The GENERATE macro in the Sysgen input can be any of several types: 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
6992-424: The virtual addresses seen by the application into physical addresses used by the hardware to process instructions; such hardware that handles this specific translation is often known as the memory management unit . Each entry in the page table holds a flag indicating whether the corresponding page is in real memory or not. If it is in real memory, the page table entry will contain the real memory address at which
7084-589: The virtual memory. However, some older operating systems (such as OS/VS1 and OS/VS2 SVS ) and even modern ones (such as IBM i ) are single address space operating systems that run all processes in a single address space composed of virtualized memory. Embedded systems and other special-purpose computer systems that require very fast and/or very consistent response times may opt not to use virtual memory due to decreased determinism ; virtual memory systems trigger unpredictable traps that may produce unwanted and unpredictable delays in response to input, especially if
7176-567: The whole system, separate segment tables for each address space or process, separate segment tables for each region in a tree of region tables for each address space or process. If there is only one page table, different applications running at the same time use different parts of a single range of virtual addresses. If there are multiple page or segment tables, there are multiple virtual address spaces and concurrent applications with separate page tables redirect to different real addresses. Some earlier systems with smaller real memory sizes, such as
7268-442: The work of all those CPUs. Note: JES1 was the job queue manager for OS/VS1 (see above). IBM hoped that Virtual storage access method (VSAM) would replace its earlier sequential, indexed and direct access methods as it provided improved versions of these: These VSAM formats became the basis of IBM's database management systems , IMS/VS and DB2 - usually ESDS for the actual data storage and KSDS for indexes. VSAM also provides
7360-592: Was DOS/360 . OS/360 is in the public domain and can be downloaded freely. As well as being run on actual System/360 hardware, it can be executed on the free Hercules emulator , which runs under most UNIX and Unix-like systems including Linux , Solaris , and macOS , as well as Windows . There are OS/360 turnkey CDs that provide pregenerated OS/360 21.8 systems ready to run under Hercules. IBM originally intended that System/360 should have only one batch-oriented operating system, OS/360, capable of running on machines as small as 32 KiB. It also intended to supply
7452-471: Was announced in 1970 it offered essentially the same facilities as System/360 but with about 4 times the processor speeds of similarly priced System/360 CPUs. Then in 1972 IBM announced System/370 Advanced Functions , of which the main item was that future sales of System/370 would include virtual memory capability and this could also be retro-fitted to existing System/370 CPUs. Hence IBM also committed to delivering enhanced operating systems which could support
7544-509: Was descended from HASP ( Houston Automatic Spooling Priority ) and also supported Remote Job Entry from workstations located elsewhere. JES2 can only manage jobs for one CPU (which might be a tightly coupled multiprocessor system). In 1976 IBM provided another option, JES3 (Job Entry Subsystem 3), a descendant of ASP ( Attached Support Processor ), which allows one CPU to manage a single job queue feeding work to several physically distinct CPUs, and therefore allows one operator's console to manage
7636-456: Was implemented in Linux 2.6. The second version is called preempt swap-token and is also in Linux 2.6. In this updated swap-token implementation, a priority counter is set for each process to track the number of swap-out pages. The token is always given to the process with a high priority, which has a high number of swap-out pages. The length of the time stamp is not a constant but is determined by
7728-582: Was intended for machines with small memories. It is similar to MFT with one partition . Experience indicated that it was not advisable to install OS/360 on systems with less than 128 KiB of memory, although limited production use was possible on much smaller machines, such as 48 KiB of memory. IBM dropped the PCP option in the final releases of OS/360, leaving only MFT II and MVT, both of which required more memory. Also referred to as SYS=MIN in macro expansions that were system-dependent. Multiprogramming with
7820-508: Was much more flexible to run. The maximum number of partitions increased to 52. Later modifications of MFT-II added sub-tasking , so that the fixed number of tasks was no longer fixed, although the number of partitions did remain a limitation. Experience indicated that it was not advisable to install MFT on systems with less than 256 KiB of memory, which in the 1960s was quite a large amount. Also referred to as SYS=INT in macro expansions that were system-dependent. Multiprogramming with
7912-500: Was no form of indirect mapping, a key feature of virtual memory. What Güntsch did invent was a form of cache memory , since his high-speed memory was intended to contain a copy of some blocks of code or data taken from the drums. Indeed, he wrote (as quoted in translation ): "The programmer need not respect the existence of the primary memory (he need not even know that it exists), for there is only one sort of addresses ( sic ) by which one can program as if there were only one storage." This
8004-425: Was not advisable to install MVT on systems with less than 512 KiB of memory. MVT treated all memory not used by the operating system as a single pool from which contiguous regions could be allocated as required, by an unlimited number of simultaneous application and systems programs. This scheme was more flexible than MFT's and in principle used memory more efficiently, but was liable to fragmentation - after
8096-483: Was really a new operating system that was upwards-compatible with OS/VS2 Release 1. The Supervisor of the new system had been largely rewritten in a new dialect of BSL, PL/S ; BSL and PL/S were dialects of PL/I with extensions designed to transcribe Assembly language code, including privileged instructions needed to control the computer as a whole. Time-sensitive OS components, such as the OS Dispatcher and
8188-478: Was renamed to OS/390 for System/390, and the 64-bit version for the zSeries was named z/OS . For reasons of size, this section concentrates on the MVT option of OS/360; PCP and MFT are very similar; with changes in nomenclature and some minor differences. OS/VS1 and SVS have much the same structure as MFT II and MVT, while MVS , although retaining much of the logic of MVT, has major enhancements better addressed in
8280-485: Was the Norwegian NORD-1 ; during the 1970s, other minicomputers implemented virtual memory, notably VAX models running VMS . Virtual memory was introduced to the x86 architecture with the protected mode of the Intel 80286 processor, but its segment swapping technique scaled poorly to larger segment sizes. The Intel 80386 introduced paging support underneath the existing segmentation layer, enabling
8372-489: Was therefore introduced not only to extend primary memory, but to make such an extension as easy as possible for programmers to use. To allow for multiprogramming and multitasking , many early systems divided memory between multiple programs without virtual memory, such as early models of the PDP-10 via registers . A claim that the concept of virtual memory was first developed by German physicist Fritz-Rudolf Güntsch at
8464-565: Was unique for each application; shared virtual area used for various purposes including inter-job communication. IBM promised that the application areas would always be at least 8MB. This approach eliminated the risk of memory fragmentation that was present in MVT and SVS, and improved the system's internal security. The new system rapidly became known as " MVS " (Multiple Virtual Storages), the original OS/VS2 became known as "SVS" (Single Virtual Storage) and IBM itself accepted this terminology and labelled MVS's successors "MVS/ xxx ". MVS introduced
#123876