Method for efficient non-virtual main memory management
First Claim
1. An improved method for operating a non-virtual main memory manager using swapin and swapout operations to allocate and un-allocate space in a non-virtual main memory for one or more segments of one or more process images residing on a swap device and ready to be executed in a computer processing system that includes one or more processors sharing the main memory and the swap device wherein the segments require space of varying sizes and all of the segments for a process image must be resident in the main memory before the process image can be executed by the computer processing system:
- and wherein the main memory manager performs a swapin operation for the segments of a selected process image ready to execute when space in the main memory is available and performs a swapout operation for the segments of one or more process images that are currently stored in the main memory, the steps of the improved method comprising;
constructing at least a segment location list identifying all physical segment spaces in the main memory, a segment active list identifying space in the main memory currently allocated to one or more segments, and a segment available list identifying space in the main memory currently un-allocated to any segments,checking the segment available list for sufficient contiguous space in the main memory which has not been allocated to any segment and which is large enough to contain one or more segments of a process image which are ready to be swapped into the main memory,performing a swapin allocation operation to allocate the contiguous space in the main memory to the one or more segments in the event that sufficient un-allocated contiguous space in the main memory is available to store one or more of the segments of the process image ready to be swapped into the main memory,updating at least the segment available list and the segment active list after performing the swapin allocation operation,checking the segment active list for a segment candidate to swap out from the main memory in the event that insufficient un-allocated contiguous space in the main memory is available to store any one or more segments of the process image ready to be swapped into the main memory,performing a swapout operation on the segment candidate to un-allocate the space in the main memory which was allocated to the segment candidate, andupdating at least the segment available list and the segment active list after performing the swapout operation on the segment candidate.
10 Assignments
0 Petitions
Accused Products
Abstract
The present invention provides a parallel memory scheduler for execution on a high speed highly parallel multiprocessor architecture. The operating system software provides intelligence and efficiency in swapping out process images to facilitate swapping in another process. The splitting and coalescing of data segments are used to fit segments in to current free memory even though a single contiguous space of sufficient size does not exist. Mapping these splits through data control register sets retains the user'"'"'s contiguous view of the address space. The existence of dual images and partial swapping allows efficient, high speed swapping. Candidates for swap out are chosen in an intelligent fashion, selecting only those candidates which will most efficiently aLlow the swapin of another process.
-
Citations
40 Claims
-
1. An improved method for operating a non-virtual main memory manager using swapin and swapout operations to allocate and un-allocate space in a non-virtual main memory for one or more segments of one or more process images residing on a swap device and ready to be executed in a computer processing system that includes one or more processors sharing the main memory and the swap device wherein the segments require space of varying sizes and all of the segments for a process image must be resident in the main memory before the process image can be executed by the computer processing system:
- and wherein the main memory manager performs a swapin operation for the segments of a selected process image ready to execute when space in the main memory is available and performs a swapout operation for the segments of one or more process images that are currently stored in the main memory, the steps of the improved method comprising;
constructing at least a segment location list identifying all physical segment spaces in the main memory, a segment active list identifying space in the main memory currently allocated to one or more segments, and a segment available list identifying space in the main memory currently un-allocated to any segments, checking the segment available list for sufficient contiguous space in the main memory which has not been allocated to any segment and which is large enough to contain one or more segments of a process image which are ready to be swapped into the main memory, performing a swapin allocation operation to allocate the contiguous space in the main memory to the one or more segments in the event that sufficient un-allocated contiguous space in the main memory is available to store one or more of the segments of the process image ready to be swapped into the main memory, updating at least the segment available list and the segment active list after performing the swapin allocation operation, checking the segment active list for a segment candidate to swap out from the main memory in the event that insufficient un-allocated contiguous space in the main memory is available to store any one or more segments of the process image ready to be swapped into the main memory, performing a swapout operation on the segment candidate to un-allocate the space in the main memory which was allocated to the segment candidate, and updating at least the segment available list and the segment active list after performing the swapout operation on the segment candidate. - View Dependent Claims (2, 3, 4, 5, 6)
- and wherein the main memory manager performs a swapin operation for the segments of a selected process image ready to execute when space in the main memory is available and performs a swapout operation for the segments of one or more process images that are currently stored in the main memory, the steps of the improved method comprising;
-
7. An improved dual image allocation method for operating non-virtual main memory manager using swapin and swapout operations to allocate and un-allocate space in a non-virtual main memory for one or more segments of one or more process images residing on a swap device and ready to be executed in a computer processing system that includes one or more processors sharing the main memory and the swap device wherein the segments require space of varying sizes and all of the segments for a process image must be resident in the main memory before the process image can be executed by the computer processing system, the steps of the improved method comprising:
-
performing a swapin allocation operation to allocate contiguous space in the main memory to at least one segment of one process image residing on the swap device, the swapin allocation operation including the step of checking to determine if the one segment already has been allocated space in the main memory, if so, performing another swapin allocation operation to allocate contiguous space in the main memory to another segment of the one process image, if not, checking for an un-allocated contiguous space in the main memory large enough to store the entire one segment, and allocating that space to the one segment and copying the segment to the main memory, in the event that space is allocated to the one segment, retaining an image of the segment on the swap device so as to create a dual image allocation whereby it is only necessary to un-allocate the space allocated to the one segment, without copying the segment to the swap device in the event the segment is to be removed from main memory by a swapout operation. - View Dependent Claims (8, 9)
-
-
10. An improved partial image swapout method for operating a non-virtual main memory manager using swapin and swapout operations to allocate and un-allocate space in non-virtual main memory for one or more segments of one or more process images residing on a swap device and ready to be executed in a computer processing system that includes one or more processors sharing the main memory and the swap device wherein the segments require space of varying sizes and all of the segments for a process image must be resident in the main memory before the process image can be executed by the computer processing system, the steps of the improved method comprising:
as one step in the swapout operation, performing a partial swapout operation by swapping out of the main memory less than all of the segments of one process image contained in the main memory in order to free allocated space in the main memory to enable the swapin operation to allocate the now un-allocated space in the main memory to one or more segments of another process image. - View Dependent Claims (11)
-
12. An improved split image swapin method for operating a non-virtual main memory manager using swapin and swapout operations to allocate and un-allocate space in non-virtual main memory for one or more segments of one or more process images residing on a swap device and ready to be executed in a computer processing system that includes one or more processors sharing the main memory and the swap device wherein the segments require space of varying sizes and all of the segments for a process image must be resident in the main memory before the process image can be executed by the computer processing system, the steps of the improved method comprising:
-
determining whether there is un-allocated space in the main memory of sufficient size to contain a segment to be swapped into the main memory, if there is un-allocated space in the main memory of sufficient size to contain the segment to be swapped into the main memory, then allocating that space to the segment, if there is not sufficient un-allocated space in the main memory to contain the segment to be swapped into the main memory, then determining whether the segment may be divided into split segments according to a pre-determined criteria and if the segment may be divided into split segments, then splitting the segment into at least two split segments, at least one of the split segments being allocated a memory size corresponding to an un-allocated contiguous space in the main memory. - View Dependent Claims (13, 14, 15, 16, 17)
-
-
18. An improved swapout selection method for operating a non-virtual main memory manager using swapin and swapout operations to allocate and un-allocate space in a non-virtual main memory for one or more segments of one or more process images residing on a swap device and ready to be executed in a computer processing system that includes one or more processors sharing the main memory and the swap device wherein the segments require space of varying sizes and all of the segments for a process image must be resident in the main memory before the process image can be executed by the computer processing system, the steps of the improved method comprising:
-
creating un-allocated space in the main memory by performing a swapout operation on a segment chosen by analyzing the segments stored in the main memory which are adjacent to any contiguous space in the main memory that can be allocated to a segment to be swapped into the main memory, such that a segment will not be swapped out of the main memory unless doing so creates sufficient contiguous space in the main memory to allocate for the memory size of the segment to be swapped into the main memory, thereby increasing the efficiency of the main memory manager. - View Dependent Claims (19, 20, 21, 22, 23)
-
-
24. An improved method for operating a non-virtual main memory manager using swapin and swapout operations to allocate and un-allocate space in non-virtual main memory for one or more segments of one or more process images residing on a swap device in a computer processing system that includes one or more processors sharing the main memory and the swap device wherein the segments require space of varying sizes and all of the segments for a process image must be resident in the main memory before the process image can be executed by the computer processing system, and wherein the main memory manager performs a swapin operation for the segments of a selected swapin process image ready to execute and performs a swapout operation for the segments of one or more process images currently stored in the main memory, the steps of the improved method comprising:
-
determining for each segment of the selected swapin process image if space in main memory has or has not been allocated for that segment, in the event that space in the main memory has not been allocated for a segment, then determining if sufficient contiguous space in the main memory can or cannot be allocated for that segment, in the event that sufficient contiguous space in the main memory cannot be allocated for that segment, then attempting to allocate space in the main memory for that segment by allowing segments shared by more than one process image to be forced out of the main memory. - View Dependent Claims (25, 26, 27, 28, 29, 30, 31)
-
-
32. An improved swapout coalescing method for operating a non-virtual main memory manager using swapin and swapout operations to allocate and un-allocate space in non-virtual main memory for one or more segments of one or more process images residing on a swap device and ready to be executed in a computer processing system that includes one or more processors sharing the main memory and the swap device and wherein the segments require space of varying sizes and all of the segments for a process image must be resident in the main memory before the process image can be executed by the computer processing system, and wherein the main memory manager performs a swapin operation for the segments of a selected process image ready to execute and performs a swapout operation for the segments of one or more process images currently stored in the main memory, the steps of the improved method comprising:
-
allocating a space on the swap device of a size which is large enough to contain a segment of a selected swapout segment of a process image, determining if the selected swapout segment has been divided into two or more split segments, in the event that the selected swapout segment has split segments, coalescing the split segments into the space allocated on the swap device, and in the event that the segment has no split segments, moving the segment into the allocated space on the swap device.
-
-
33. An improved dual allocation swapout method for operating a non-virtual main memory manager using swapin and swapout operations to allocate and un-allocate space in non-virtual main memory for one or more segments of one or more process images residing on a swap device and ready to be executed in a computer processing system that includes one or more processors sharing the main memory and the swap device and wherein the segments require space of varying sizes and all of the segments for a process image must be resident in the main memory before the process image can be executed by the computer processing system, and wherein the main memory manager performs a swapin operation for the segments of a selected process image ready to execute and performs a swapout operation for the segments of one or more process images currently stored in the main memory, the steps of the improved method comprising:
-
determining if a segment to be swapped out of the main memory has a dual allocation in the main memory and on the swap device, in the event that the segment has a dual allocation in the main memory and on the swap device, un-allocating space in the main memory allocated for that dual allocation of the segment without copying the segment to the swap device as part of a swapout operation. - View Dependent Claims (34)
-
-
35. In a computer processing system, an efficient method for managing memory allocation of a non-virtual main memory to a plurality of processes to be executed by one or more processors in the computer processing system, each process having a process image including one or more segments that are stored in the main memory or in a swap device, each segment having a defined memory size and containing a type of information associated with that process, wherein the memory size of different segments is variable and all of the segments of a process must be resident in the non-virtual main memory in order for that process to be executed by the computer processing system, the method comprising the processor-implemented steps of:
-
(a) selecting a swapin process to be swapped into the main memory from the swap device; (b) for each segment of the process image of the swapin process, performing the steps of; (b1) determining whether the segment has been allocated space in the main memory; (b2) if the segment has not been allocated space in the main memory, determining whether there are any un-allocated contiguous spaces in the main memory; (b3) if there are no un-allocated contiguous spaces in the main memory, executing a swapout procedure to create one or more un-allocated contiguous spaces in the main memory; and (b4) if there is at least one un-allocated contiguous space in the main memory, attempting to allocate contiguous space in the main memory for the segment, including the steps of; (b41) allocating space to the segment if there is sufficient un-allocated contiguous space in the main memory for the memory size of the segment, (b42) splitting the segment into two or more split segments if there is not sufficient contiguous space in the main memory to allocate for the memory size of the segment and if the segment contains one of a predetermined set of types of information which can be split, such that at least one of the split segments is of a memory size that sufficient un-allocated contiguous space in the main memory can be allocated to that split segment, and (b43) executing the swapout procedure if there is not sufficient un-allocated contiguous space in the main memory for the memory size of the segment or one of the split segments and repeating steps (b41)-(b42); and (c) if all of the segments of the swapin process were allocated space in the main memory, copying all of the segments of the process image from the swap device to the main memory and adding the process to a run queue of processes to be executed by one or more of the processors. - View Dependent Claims (36, 37, 38)
-
-
39. In a computer processing system, a split segment method for managing memory allocation of a non-virtual main memory to a plurality of processes to be executed by one or more processors in the computer processing system, each process including one or more segments that are stored in the main memory or in a swap device, each segment having a defined memory size and containing a type of information associated with that process, wherein the memory size of different segments is variable and all of the segments of a process must be resident in the non-virtual main memory in order for that process to be executed by the computer processing system, the method comprising the processor-implemented steps of:
-
during a swapin allocation operation wherein contiguous space in the main memory is allocated to one or more of the segments of a process that are to be swapped into the main memory from the swap device, attempting to split one or more of the segments of the process into two or more split segments if there is not sufficient contiguous space in the main memory to allocate for the memory size of the segment and if the segment contains one of a predetermined set of types of information which can be split, such that at least one of the split segments will be of a memory size that sufficient contiguous space in the main memory can be allocated to that split segment; and during a swapout operation wherein one or more of the segments of a process are to be swapped out of the main memory to the swap device, coalescing any split segments of a segment of the process into the memory size of that segment as the segments are transferred to the swap device, whereby utilization of the main memory is enhanced by splitting the split segments into memory sizes that correspond to contiguous memory spaces in the main memory that are available each time a swapin allocation operation is performed for a process.
-
-
40. In a computer processing system, an adjacent swapout method for managing memory allocation of a non-virtual main memory to a plurality of processes to be executed by one or more processors in the computer processing system, each process including one or more segments that are stored in the main memory, in a swap device, or in both the main memory and the swap device, each segment having a defined memory size and containing a type of information associated with that process, wherein the memory size of different segments is variable and all of the segments of a process must be resident in the non-virtual main memory in order for that process to be executed by the computer processing system, the method comprising the processor-implemented steps of:
during a swapout operation wherein one or more of the segments of one or more of the processes are to be swapped out of the main memory to the swap device, selecting the segments to be swapped out of the main memory by analyzing the segments stored in the main memory which are adjacent to any contiguous space in the main memory that can be allocated to the segment to be swapped into the main memory, such that a segment will not be swapped out of the main memory unless doing so creates sufficient contiguous space in the main memory to allocate for the memory size of the segment to be swapped into the main memory.
Specification