Method to control paging subsystem processing in virtual memory data processing system during execution of critical code sections
First Claim
1. In a virtual memory data processing system having a real memory containing a plurality of addresable locations each of which has a different physical address and each of which is capable of storing a page of data, said system further including a plurality of pageable data structures, each of which includes a plurality of entries, each entry containing an address field and a related status field to indicate the current status of a page of data stored at said location having the physical address contained in said related address field of said entry, said status field being updatable by said system to reflect said current status of said related page whenever the status of said related page of data is changed, a method to serialize a plurality of different type system events which operate to change the status of a page of data, and to update said status field of said corresponding entry of said pageable data structure to reflect said change in order to insure the integrity of said data structures, said method comprising the steps of;
- (1) coding a first section of code that is executed in response to a first page fault to permit an interrupt for a second page fault and to request an I/O paging operation, said first section of code including a critical section,(2) executing said first section of code to completion prior to a section of code having a lower priority being executed by restarting said first section of code at its critical section after said second page fault is serviced in order to service said first page fault,(3) coding a second section of code that is executed in response to the completion of an I/O operation initiated in response to a page fault,(4) enqueueing on a list an indication of said completion of each said I/O operation, and(5) executing said second section of code after said first section completes executing.
0 Assignments
0 Petitions
Accused Products
Abstract
A method to logically serialize a plurality of independent system events in a virtual memory data processing system. Each event causes interrupt servicing routines to be executed and requires data structures that record the status of virtual pages to be updated. The system events include the interrupt that is generated as a result of a page fault, the interrupt that is generated as a result of a paging I/O completion operation that resolves a page fault, and lastly interrupts generated in response to a supervisory call to a paging service.
-
Citations
12 Claims
-
1. In a virtual memory data processing system having a real memory containing a plurality of addresable locations each of which has a different physical address and each of which is capable of storing a page of data, said system further including a plurality of pageable data structures, each of which includes a plurality of entries, each entry containing an address field and a related status field to indicate the current status of a page of data stored at said location having the physical address contained in said related address field of said entry, said status field being updatable by said system to reflect said current status of said related page whenever the status of said related page of data is changed, a method to serialize a plurality of different type system events which operate to change the status of a page of data, and to update said status field of said corresponding entry of said pageable data structure to reflect said change in order to insure the integrity of said data structures, said method comprising the steps of;
-
(1) coding a first section of code that is executed in response to a first page fault to permit an interrupt for a second page fault and to request an I/O paging operation, said first section of code including a critical section, (2) executing said first section of code to completion prior to a section of code having a lower priority being executed by restarting said first section of code at its critical section after said second page fault is serviced in order to service said first page fault, (3) coding a second section of code that is executed in response to the completion of an I/O operation initiated in response to a page fault, (4) enqueueing on a list an indication of said completion of each said I/O operation, and (5) executing said second section of code after said first section completes executing. - View Dependent Claims (4, 5, 6)
-
-
2. A method used in a virtual memory priority interrupt data processing system for updating a page status field of a data structure in response to interrupt signals caused by independent asynchronous system events, comprising the steps of;
-
(1) executing a Page Fault Handling (PFH) routine at a first interrupt level in response to a page fault interrupt signal, said PFH routing having a critical section that is carefully coded and re-started at a predetermined instruction and, (2) executing a page status change type service call routine at a second priority level in response to a request by a program being executed by said system, including the step of generating a simulated interrupt signal to switch the interrupt level of said system to said first level. - View Dependent Claims (3)
-
-
7. A method used in a virtual memory priority interrupt data processing system for updating a page status field of a data structure in response to interrupt signals caused by independent asynchronous system events, comprising the steps of;
-
(1) executing a Page Fault Handling (PFH) routine at a first interrupt level in response to a page fault interrupt signal, said PFH routine having a critical section that is carefully coded and restarted at a predetermined instruction and, (2) switching said system to a third interrupt level which is higher than said first level in response to an interrupt signal generating in response to completion of an I/O request operation by said PFH routine and, (3) executing an I/O completion routine on said third level which includes the step of generating an interrupt signal for said first level and subsequently completing said I/O request operation after all the interrupts on said first level and above have been serviced by said system. - View Dependent Claims (8, 9)
-
-
12. Iaddend..Iadd.18. A method for handling page faults in a virtual memory computer system, comprising the steps of:
-
defining as critical sections selected code portions of a virtual memory manager which modify a shared data structure containing virtual memory mapping information; on entering a critical section during execution, setting a backtrack point at the beginning thereof; within the critical section, ensuring that any memory objects not in main memory may only be accessed when the shared data structure is in a consistent state; and if, during execution of a critical section, a memory object is accessed which is not currently in main memory, reading such object into main memory and restarting execution from the beginning of the critical section. .Iaddend..Iadd.19. The method of claim 19, wherein the defined critical sections execute as system interrupts. .Iaddend..Iadd.20. The method of claim 20, wherein the defined critical sections execute as system interrupts having the lowest interrupt priority level. .Iaddend..Iadd.21. The method of claim 20, wherein a page fault handler routine within the virtual memory manager executes completely as a interrupt. .Iaddend..Iadd.22. The method of claim 20, wherein selected service calls, which modify the shared data structure, have only portions thereof defined as critical sections, wherein such portions contain those parts of the service calls which actually modify the shared data structure. .Iaddend. - View Dependent Claims (10, 11)
-
Specification