US4991082AExpiredUtility
Virtual storage system and method permitting setting of the boundary between a common area and a private area at a page boundary
Est. expiryOct 28, 2005(expired)· nominal 20-yr term from priority
Inventors:Yasufumi YoshizawaTaketoshi SakurabaToshiaki AraiToshiyuki KinoshitaMinoru ShibamiyaTakashige Kubo
G06F 12/109G06F 2212/656
55
PatentIndex Score
23
Cited by
14
References
18
Claims
Abstract
An area boundary between a system common area and a job private area is set at any page boundary independently from a segment boundary, and for the segment (boundary segment) containing the area boundary, a page table is prepared for each virtual address space. Thus, virtual pages which are not used as the system common area in the bondary segment can be used by jobs as job private areas. The real page is fixedly allocated to the virtual page belonging to the system common area in the boundary segment. Thus, it is not necessary to simultaneously update page tables for the system common area. Those virtual pages may be subjects of dynamic allocation of the virtual storage.
Claims
exact text as granted — not AI-modifiedWe claim:
1. A method of managing storage areas in a computer which, in response to virtual addresses designated in programs run on the computer, accesses a real storage device divided into a plurality of real pages, wherein the virtual addresses correspond to a plurality of virtual address spaces, each of said virtual address spaces being divided into a plurality of segments, each segment comprising a number of virtual pages, each virtual address space including a system common area and a private area, said computer including an address translator for translating virtual addresses into real addresses of the real storage device, said address translator having a plurality of page tables, for associating virtual pages of the virtual address spaces to real pages, and a plurality of segment tables, one segment table required for each virtual address space, for associating the segments of the virtual address space to page tables provided for the virtual address space; said method comprising the steps of: (a) preparing for each virtual address space a boundary page table corresponding to a boundary segment having an area boundary of the system common area and the private area, the boundary page table including first locations, for holding first address transformation information common to the virtual address spaces for associating virtual pages belonging to the system common area within the boundary segment of the virtual address space to real pages commonly allocated to all virtual address spaces, and further including second locations, for holding second address transformation information for the corresponding virtual address space for associating virtual pages belonging to the private area within the boundary segment to real pages privately allocated to that virtual address space; (b) determining real pages common to the virtual address spaces and to be fixedly allocated to predetermined virtual pages belonging to the system common area within the boundary segment of each of the virtual address spaces and being allocatable to a program on demand, before a program issues a virtual page allocation demand for the predetermined virtual pages so as to set appropriate address transformation information, required for allocation of the determined real pages to the predetermined virtual pages, into the boundary page table for each of the virtual address spaces; and (c) dynamically allocating the predetermined virtual pages in the system common area within the boundary segment for one of the virtual address spaces to a program so that an available part of the predetermined virtual pages is allocated or deallocated to the program in response to a demand therefrom for allocation or deallocation, while the determined real pages remain fixedly allocated to the predetermined virtual pages.
2. A method according to claim 1 wherein steps (a) and (b) are executed during an initial program loading step.
3. A method according to claim 9, further comprising the step of: (d) dynamically allocating and deallocating other real pages to virtual pages belonging to the private area within the boundary segment.
4. A method according to claim 3, further comprising the steps of: (e) in response to allocation of the one virtual page to the program, storing a first storage key as a selected storage key for one real page fixedly allocated to the one virtual page, wherein the first storage key has a value which allows access by the program to the one real page; and (f) in response to deallocation of the one virtual page to the program, storing a second storage key as the selected storage key for the one real page, wherein the second storage key has a value which prohibits access by the program to the one real page.
5. A method according to claim 4, wherein step (c) comprises the steps of: (i) in response to a demand for allocation issued by a program for virtual pages belonging to the system common area of one of the virtual address spaces, allocating to the program plural available virtual pages belonging to the system common area of the virtual address space; (ii) detecting whether or not each of the allocated available virtual pages belongs to the boundary segment of the one virtual address space; (iii) performing steps (e) and (f) for those of the available virtual pages for which the result of the detection step is affirmative.
6. A system for managing storage areas in a computer comprising: (a) a real storage device having a plurality of real pages; (b) an address translator for translating virtual addresses corresponding to a plurality of virtual address spaces into real addresses of the real storage device, each of said virtual address spaces being divided into a plurality of segments, each segment comprising a number of virtual pages, each virtual address space including a system common area and a private area, said address translator having a plurality of page tables, for associating the virtual pages of the virtual address spaces to real pages, and a plurality of segment tables, one segment table required for each virtual address space for associating the segments of the virtual address space to page tables provided for the virtual address space; (c) means for preparing for each virtual address space a page table corresponding to a boundary segment having an area boundary of the system common area and the private area, the boundary page table including first locations, for holding first address transformation information common to the virtual address spaces for associating virtual pages belonging to the system common area within the boundary segment of the virtual address space to real pages commonly allocated to all virtual address spaces, and further including second locations, for holding second address transformation information for the corresponding virtual address space for associating virtual pages belonging to the private area within the boundary segment to real pages privately allocated to that virtual address space; (d) means for determining real pages common to the virtual address spaces and to be fixedly allocated to predetermined virtual pages belonging to the system common area within the boundary segment of each of the virtual address spaces and being allocatable to a program on demand, before a program issues a virtual page allocation demand for the predetermined virtual pages so as to set appropriate common address transformation information, required for allocation of the determined real pages to the predetermined virtual pages, into the boundary page table for each of the virtual address spaces; and (e) means for dynamically allocating the predetermined virtual pages in the system common area within the boundary segment for one of the virtual address spaces to a program so that an available part of the predetermined virtual pages is allocated or deallocated to the program in response to a demand therefrom for allocation or deallocation, while the determined real pages remain fixedly allocated to the predetermined virtual pages.
7. A system according to claim 6, further comprising: (f) means for dynamically allocating and deallocating other real pages to virtual pages belonging to the private area within the boundary segment.
8. A system according to claim 7, further comprising: (g) means, responsive to allocation of the one virtual page to the program, for storing a first storage key as a selected storage key for one real page fixedly allocated to the one virtual page, wherein the first storage key has a value which allows access by the program to the one real page; and (h) means, responsive to deallocation of the one virtual page to the program, for storing a second storage key as the selected storage key for the one real page, wherein the second storage key has a value which prohibits access by the program to the one real page.
9. A method of managing storage areas in a computer which, in response to virtual addresses designated in programs run on the computer, accesses a real storage device divided into a plurality of real areas, wherein the virtual addresses correspond to a plurality of virtual address spaces, each of said virtual address spaces being divided into a number of virtual areas, each virtual address space including a system common area and a private area, said computer including an address translator for translating virtual addresses into real addresses of the real storage device, said address translator having a plurality of address translation tables, for associating virtual areas of the virtual address spaces to real areas, said method comprising the steps of: (a) preparing for each virtual address space a boundary address translation table corresponding to a boundary area thereof having an area boundary of the system common area and the private area, the boundary address translation table including first locations, for holding first address transformation information common to the virtual address spaces for associating virtual areas belonging to the system common area within the boundary segment of the virtual address space to real areas commonly allocated to all virtual address spaces, and further including second locations for holding second address transformation information for the corresponding virtual address space for associating virtual areas belonging to the private area within the boundary areas to real areas privately allocated to that virtual address space; (b) determining real areas common to the virtual address spaces and to be fixedly allocated to predetermined virtual areas belonging to the system common area within the boundary area of each of the virtual address spaces and being allocatable to a program on demand, before a program issues a virtual area allocation demand for the predetermined virtual areas so as to set appropriate address transformation information, required for allocation of the determined real areas to the predetermined virtual areas, into the boundary address translation table for each of the virtual address spaces; and (c) dynamically allocating the predetermined virtual areas in the system common area within the boundary area for one of the virtual address spaces to a program so that an available part of the predetermined virtual areas is allocated or deallocated to the program in response to a demand for allocation or deallocation, while the determined real areas remain fixedly allocated to the predetermined virtual areas.
10. A method according to claim 9, further comprising the step of: (d) dynamically allocating and deallocating other real areas to virtual areas belonging to the private area within the boundary segment.
11. A method according to claim 10, further comprising the steps of: (e) in response to allocation of the one virtual area to the program, storing a first storage key as a selected storage key for one real area fixedly allocated to the one virtual area, wherein the first storage key has a value which allows access by the program to the one real area; and (f) in response to deallocation of the one virtual area to the program, storing a second storage key as the selected storage key for the one real area, wherein the second storage key has a value which prohibits access by the program to the one real area.
12. A method of managing areas in a computer which, in response to virtual addresses designated by programs running on the computer, accesses a real storage device divided into a plurality of real areas, wherein the virtual addresses correspond to a plurality of virtual address spaces, each of said virtual address spaces being divided into a number of virtual areas, each virtual address space including a system common area and a private area, the method comprising the steps of: determining real areas to be fixedly allocated to predetermined virtual areas belonging to the system common area within the boundary area of each of the virtual address spaces before a program demands allocation of one of the predetermined virtual areas, the virtual areas being allocatable to a program on demand; in response to a demand for allocation of one of the predetermined virtual areas, allocating one available virtual area of the predetermined virtual areas to the program; and in response to a demand for deallocation of the one virtual area, deallocating the one virtual area from the program.
13. A method according to claim 12, further comprising the steps of: in response to a demand for allocation of one of the predetermined virtual areas, storing a first storage key as a selected storage key for the one real area fixedly allocated to the one available virtual area, so as to allow the program to access the one real area; and in response to a demand for deallocation of the one virtual area, storing a second storage key as the selected storage key for the one real area, so as to prohibit the program from accessing the one real area, wherein the determined real areas remain fixedly allocated to the predetermined virtual areas after determination thereof and after deallocation of the virtual areas from the programs.
14. A method of managing storage areas in a computer which, in response to virtual addresses designated in programs run on the computer, accesses a real storage device divided into a plurality of real pages, wherein the virtual addresses correspond to a plurality of virtual address spaces, each of said virtual address spaces being divided into a plurality of segments, each segment comprising a number of virtual pages, each virtual address space including a system common area and a private area, said computer including an address translator for translating virtual addresses into real addresses of the real storage device, said address translator having a plurality of pages tables, for associating virtual pages of the virtual address spaces to real pages, and a plurality of segment tables, one segment table required for each virtual address space, for associating the segments of the virtual address space to page tables provided for the virtual address space; said method comprising the steps of: (a) preparing for each virtual address space a boundary page table corresponding to a boundary segment having an area boundary of the system common area and the private area, the boundary page table including first locations, for holding first address transformation common to the virtual address spaces for associating virtual pages belonging to the system common area within the boundary segment of the virtual address space to real pages commonly allocated to all virtual address spaces, and further including second locations, for holding second address transformation information for the corresponding virtual address space for associating virtual pages belonging to the private area within the boundary segment to real pages privately allocated to that virtual address space; (b) determining real pages common to the virtual address spaces and to be fixedly allocated to predetermined virtual pages belonging to the system common area within the boundary segments of each of the virtual address spaces and being allocatable to a program on demand, before a program issues a virtual page allocation demand for the predetermined virtual pages so as to set appropriate address transformation information, required for allocation of the determined real pages to the predetermined virtual pages, into the boundary page table for each of the virtual address spaces; (c) dynamically allocating the predetermined virtual pages in the system common area within the boundary segment for one of the virtual address spaces to a program so that an available part of the predetermined virtual pages is allocated or deallocated to the program in response to a demand therefrom for allocation or deallocation, while the determined real pages remain fixedly allocated to the predetermined virtual pages; and (d) dynamically allocating and deallocating other real pages to virtual pages belonging to a private area within the boundary segment; (e) in response to allocation of the one virtual page to the program, storing a first storage key for one real page fixedly allocated to the one virtual page, wherein the first storage key has a value which allows access by the program to the one real page; and (f) in response to deallocation of the one virtual page to the program, storing a second storage key for the one real page, wherein the second storage key has a value which prohibits access by the program to the one real page.
15. A method according to claim 14 wherein step (c) comprises the steps of: (i) in response to a demand for allocation issued by a program for virtual pages belonging to the system common area of one of the virtual address spaces, allocating to the program plural available virtual pages belonging to the system common area of the virtual address space; (ii) detecting whether or not each of the allocated available virtual pages belongs to the boundary segment of the one virtual address space; (iii) performing steps (e) and (f) for those of the available virtual pages for which the result of the detection step is affirmative.
16. A system for managing storage areas in a computer comprising: (a) a real storage device having a plurality of real pages; (b) an address translator for translating virtual addresses corresponding to a plurality of virtual address spaces into real addresses of the real storage device, each of said virtual address spaces being divided into a plurality of segments, each segment comprising a number of virtual pages, each virtual address space including a system common area and a private area, said address translator having a plurality of page tables, for associating the virtual pages of the virtual address spaces to real pages, and a plurality of segment tables, one segment table required for each virtual address space for associating the segments of the virtual address space to page tables provided for the virtual address space; (c) means for preparing for each virtual address space a boundary page table corresponding to a boundary segment having an area boundary of the system common area and the private area, the boundary page table including first locations, for holding first address transformation information common to the virtual address spaces for associating virtual pages belonging to the system common area within the boundary segment of the virtual address space to real pages commonly allocated to all virtual address spaces, and further including second locations, for holding second address transformation information for the corresponding virtual address space for associating virtual pages belonging to the private area within the boundary segment to real pages privately allocated to that virtual address space; (d) means for determining real pages common to the virtual address spaces and to be fixedly allocated to predetermined virtual pages belonging to the system common area within the boundary segment of each of the virtual address spaces and being allocatable to a program on demand, before a program issues a virtual page allocation demand for the predetermined virtual pages so as to set appropriate common address transformation information, required for allocation of the determined real pages to the predetermined virtual pages, into the boundary page table for each of the virtual address spaces; (e) means for dynamically allocating the predetermined virtual pages in the system common area within the boundary segment for one of the virtual address spaces to a program so that an available part of the predetermined virtual pages is allocated or deallocated to the program in response to a demand therefrom for allocation or deallocation, while the determined real pages remain fixedly allocated to the predetermined virtual pages; (f) means for dynamically allocating and deallocating other real pages to virtual pages belonging to a private area within the boundary segment; (g) means, responsive to allocation of the one virtual page to the program, for storing a first storage key for one real page fixedly allocated to the one virtual page, wherein the first storage key has a value which allows access by the program to the one real page; and (h) means, responsive to deallocation of the one virtual page to the program, for storing a second storage key for the one real page, wherein the second storage key has a value which prohibits access by the program to the one real page.
17. A method of managing storage areas in a computer which, in response to virtual addresses designated in programs run on the computer, accesses a real storage device divided into a plurality of real pages, wherein the virtual addresses correspond to a plurality of virtual address spaces, each of said virtual address spaces being divided into a plurality of segments, each segment comprising a number of virtual pages, each virtual address space including a system common area and a private area, said computer including an address translator for translating virtual addresses into real addresses of the real storage device, said address translator having a plurality of page tables, for associating virtual pages of the virtual address spaces to real pages, and a plurality of segment tables, one segment table required for each virtual address space, for associating the segments of the virtual address space to page tables provided for the virtual address space; said method comprising the steps of: (a) preparing for each virtual address space a boundary page table corresponding to a boundary segment having an area boundary of the system common area and the private area, the boundary page table including first locations, for holding first address transformation information common to the virtual address spaces for associating virtual pages belonging to the system common area within the boundary segment of the virtual address space to real pages commonly allocated to all virtual address spaces, and further including second locations, for holding second address transformation information for the corresponding virtual address space for associating virtual pages belonging to the private area within the boundary segment to real pages privately allocated to that virtual address space; (b) determining real pages common to the virtual address spaces and to be allocated to predetermined virtual pages belonging to the system common area within the boundary segments of each of the virtual address spaces and being allocatable to a program on demand, before a program issues a virtual page allocation demand for the predetermined virtual pages so as to set appropriate address transformation information, required for allocation of the determined real pages to the predetermined virtual pages, into the boundary page table for each of the virtual address spaces; (c) dynamically allocating the predetermined virtual pages in the system common area within the boundary segment for one of the virtual address spaces to a program so that an available part of the predetermined virtual pages is allocated or deallocated to the program in response to a demand therefrom for allocation or deallocation, while the determined real pages remain fixedly allocated to the predetermined virtual pages; and (d) dynamically allocating and deallocating other real pages to virtual pages belonging to a private area within the boundary segment, wherein steps (a) and (b) are executed during an initial program loading step.
18. A method of managing storage areas in a computer which, in response to virtual addresses designated in programs run on the computer, accesses a real storage device divided into a plurality of real areas, wherein the virtual addresses correspond to a plurality of virtual address spaces, each of said virtual address spaces being divided into a number of virtual areas, each virtual address space including a system common area and a private area, said computer including an address translator for translating virtual addresses into real addresses of the real storage device, said address translator having a plurality of address translation tables, for associating virtual areas of the virtual address spaces to real areas, said method comprising the steps of: (a) preparing for each virtual address space a boundary address translation table corresponding to a boundary area thereof having an area boundary of the system common area and the private area, the boundary address translation table including first locations, for holding first address transformation information common to the virtual address spaces for associating virtual areas belonging to the system common area within the boundary segment of the virtual address space to real areas commonly allocated to all virtual address spaces, and further including second locations for holding second address transformation information for the corresponding virtual address space for associating virtual areas belonging to the private area within the boundary area to real areas privately allocated to that virtual address space; (b) determining real areas common to the virtual address spaces and to be fixedly allocated to predetermined virtual areas belonging to the system common area within the boundary area of each of the virtual address spaces and being allocatable to a program on demand, before a program issues a virtual area allocation demand for the predetermined virtual areas so as to set appropriate address transformation information, required for allocation of the determined real areas to the predetermined virtual areas, into the boundary address translation table for each of the virtual address spaces; (c) dynamically allocating the predetermined virtual areas in the system common area within the boundary area for one of the virtual address spaces to a program so that an available part of the predetermined virtual areas is allocated or deallocated to the program in response to a demand for allocation or deallocation, while the determined real areas remain fixedly allocated to the predetermined virtual areas; (d) dynamically allocating and deallocating other first real areas to virtual areas belonging to a private area within the boundary area; (e) in response to allocation of the one virtual area to the program, storing a first storage key for one real area fixedly allocated to the one virtual area, wherein the first storage key has a value which allows access by the program to the one real area; and (f) in response to deallocation of the one virtual area to the program, storing a second storage key for the one real area, wherein the second storage key has a value which prohibits access by the program to the one real area.Cited by (0)
No later patents cite this yet.
References (0)
No backward citations on record.