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.
- 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.
- 3. The method recited in claim 2 in which said step of generating occurs immediately prior to when said service call routine enters its critical section to thereby serialize subsequent similar service calls relative to each other and subsequent to execution of said page fault handling routine.
- 4. The method recited in claim 1, further including the step of switching said system to a program check interrupt level in response to an interrupt signal and executing a program check handler routine to determine that said interrupt is a page fault interrupt.
- 5. The method recited in claim 4, further including the step of switching said system to said first level to execute said PFH routine.
- 6. The method recited in claim 5 further including the step of assigning said program check interrupt level the highest priority level of said system.
- 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.
- 8. The method recited in claim 7 in which said switching step interrupts said Page Fault Handler routine in a non-critical section and further includes the step of returning said system to said first level to permit said Page Fault Handler routine to complete executing, whereby said Page Fault Handler routine is serialized ahead of said I/O completion routine.
- 9. The method recited in claim 7 in which said switching step interrupts a service call routine in a non-critical section, and further returns the system to said first level to permit said service call routine to complete executing, whereby said service call routine is serialized ahead of an I/O completion routine, but after a page fault routine. .Iadd.
- 10. A method for handling page faults In a virtual memory manager on a computer system utilizing priority interrupts, comprising the steps of:
- defining as critical sections selected code potions of the virtual memory manager which modify a shared data structure containing virtual memory mapping information, wherein each critical section contains two sections of code for, in sequence, performing the steps of:
- within the first section, ensuring that all necessary portions of the shared data structure are available for use by the second section without generating a page fault; and
- within the second section, updating the shared data structure; and
- executing such defined critical sections as system interrupts, wherein execution of a defined critical section cannot be interrupted except by a higher priority interrupt. .Iaddend..Iadd.11. The method of claim 10, wherein the defined critical sections execute as system interrupts having the lowest interrupt priority level. .Iaddend..Iadd.12. The method of claim 10, wherein a page fault handler routine within the virtual memory manager executes completely as a interrupt. .Iaddend..Iadd.13. The method of claim 12, wherein a page fault is defined as a higher priority interrupt than the priority of the defined critical sections, and wherein the page fault handler lowers its own priority to that of the defined critical sections. .Iaddend..Iadd.14. The method of claim 10, 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..Iadd.15. The method of claim 10, wherein said ensuring step comprises reading the necessary portions of the shared data
- structure. .Iaddend..Iadd.16. The method of claim 10, wherein I/O requests and completions generate interrupts having a higher priority than the defined critical sections, and wherein, after the I/O operation has been completed, such higher level interrupts generate an interrupt having the same level as the defined critical sections. .Iaddend..Iadd.17. A method for handling page faults in a virtual memory manager on a computer system utilizing priority interrupts, comprising the steps of:
- defining as critical sections selected code portions of the virtual memory manager which modify a shared data structure containing virtual memory mapping information, wherein each critical section contains two sections of code for, in sequence, performing the steps of:
- within the first section, ensuring that all necessary portion of the shared data structure are available for use by the second section without generating a page fault by reading the necessary portions of the shared data, structure; and
- within the second section, updating the shared data structure;
- executing such defined critical sections as system interrupts, wherein execution of a defined critical section cannot be interrupted except by a higher priority interrupt;
- on entering a critical section, setting a backtrack point to the beginning thereof; and
- if a page fault occurs during execution of the critical section, returning to the backtrack point when control is returned from such page fault.
- .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.
Parent Case Info
.Iadd.This is a continuation of application Ser. No. 07/461,569, filed Jan. 5, 1990, now abandoned. .Iaddend.
US Referenced Citations (11)
Continuations (1)
|
Number |
Date |
Country |
Parent |
461569 |
Jan 1990 |
|
Reissues (1)
|
Number |
Date |
Country |
Parent |
819459 |
Jan 1986 |
|