[MUSIC] When the system dispatches a work unit, it gives that work unit an empty access list. When the system creates an address space, it gives that address space an access list containing only entries for existing data spaces known as common area data spaces. Programs add entries to both and the entries represent the address and data spaces which the programs want to access. But a program can't just start accessing data in other addresses and data spaces, it must first establish a connection. The connection between the program and the address or data spaces is done through an access list. And the process of establishing this connection is known as establishing address ability, you got it. Access to data in other spaces is made possible by Access registers and there's 16 access registers per processor numbered zero through 15 and they are paired with general registers. Access registers enable programs to use the entire instruction set to perform data manipulation like move, compare and charismatic operations. With resolving data addresses, the access register is used by the hardware to identify the address or data space and then the associated general purpose register is used to identify a location within the address or data space. The address space control mode find by bit settings in PSW at bit 16 and 17 determine the address space in which a program's data resides. A program uses the set address based control or SAC Instruction to switch between modes. In primary mode, data referenced by the program resides in the primary address space. The system ignores the contents of the address space when resolving addresses. If the program is also executing and cross memory mode, then the MVCP and MVCS Instructions allow for the movement of data to and from the secondary address space. In access register mode, the contents of the access registers indicate the address space or data space which contains the data references. Both primary mode and access register mode can be used by programs executing in problem or supervisory state, and both modes can also be used by programs executing and cross memory mode. So, what's in an access register? I'm so glad you asked. First, to prevent unauthorized access to address or data spaces using registers, a table called The Access List is used to validate authorization. Each Access List Entry, that's the ALE in the access list, identifies an address or data space, which a program can reference using access registers. The index which selects a specific ALE is called an ALET or Access List Entry Token. This index or ALET is loaded into the AR, the Access Register, all right? Finally, when the program is in access register mode, the ALET in the AR is used to locate the ALE, which points to the address or data space and then the address from the corresponding general register is used to locate the data within that space. All right, so how do we establish address ability? What connects everything? Well, an 8-byte space token or S token identifies an address space or a data space. It is similar to an ASID an address apace ID, though the data spaces do not have ASIDs. The S token is returned to the caller when an address space or data space is created, and it might be passed as a parameter from one program to another program. Then to establish address ability, the S token is used as input into the ALESERV. I've heard that pronounced aleserv, macro which creates an access list entry. That's the ALE in the issuing programs access list. It then returns an access list entry token, that's the ALET which can be used as an index into that access list. The LET is loaded into an access register for address ability to the space where the program is executing in AR mode. There are three LETs pre-built by the system which enable access to the primary, secondary and home address space. And there are two types of access lists. First, the PASN-AL, that's the primary address space access list, which each address space has. Programs executing there can use the entries contained to access other address and data spaces as well as add or delete entries if authorized. And then each work unit, that's the TCBs and SRBs, has a unique dispatchable unit access list, that's the DU-AL. Programs executing in problems or supervisory state under this work unit can use the entries to access other address and data spaces. They can also add or delete entries and pass a copy of the DU-AL to an attached task. When a program issues a PC Instruction which causes the primary address base to change, the PC routine will have the PASN-AL of the new address space. And because the PC routine gets control under the same TCB, SRB, as the program that issues the PC, it keeps the DU-AL associated with the original unit of work. Now, as you can imagine as much as we've covered, there's still lots more information out there. And if you work up close and personal with address spaces, you'll want to dive a whole lot deeper. In the next section, we'll have you checking out the extended address ability guide. In particular, Chapters 2 and 3, I really want you to focus on those. If you're doing any sort of programming which takes advantage of ZOS components and facilities, this is a guide you will want to keep handy, so it's good to check it out now. Then come on back, we've got lots more to cover. [MUSIC]