Virtual Storage means that each running program can assume it has access to all of the storage defined by the architecture’s addressing scheme. The only limit is the number of bits in a storage address. This ability to use a large number of storage locations is important because a program may be long and complex, and both the program’s code and the data it requires must be in real storage for the processor to access them.
z/OS supports 64-bit long addresses, which allows a program to address up to 16 exabytes (18,446,744,073,709,600,000 bytes) of storage locations. In reality, the mainframe might have much less real storage installed. How much less depends on the model of CP and the system configuration.
To allow each user to act as though this much storage really exists in the computer system, z/OS keeps only the active portions of each program in real storage. The rest of the code and data is kept in files called Page Data Sets on Auxiliary Storage, which usually consists of a number of high-speed DASDs (Direct Access Storage Devices).
Virtual Storage is therefore a combination of Real and Auxiliary Storage. z/OS uses a system of tables and indexes to relate the Auxiliary Storage locations to Real Storage locations and keep track of the identity and authority of each program.
How does the operating system keep track of each program piece?
How does it know whether it is in real storage or auxiliary storage, and where?
It is important for z/OS professionals to understand how the operating system makes this happen.
Physical Storage is divided into areas, each the same size and accessible by a unique address. In Real Storage, these areas are called frames; in Auxiliary Storage, they are called slots.
Similarly, the operating system can divide a program into pieces the size of frames or slots and assign each piece a unique address. This arrangement allows the operating system to keep track of these pieces. In z/OS, the program pieces are called pages.
Pages are referenced by their virtual addresses and not by their real addresses. From the time a program enters the system until it completes, the virtual address of the page remains the same, regardless of whether the page is in Real Storage or Auxiliary Storage.
Each page consists of individual locations called bytes, each of which has a unique virtual address.
The use of Virtual Storage in z/OS means that only the pieces of a program that are currently active need to be in Real Storage at processing time. The inactive pieces are held in Auxiliary Storage.