DETAILED ACTION
Claims 1-19 and 21 are pending. Applicants have amended claims 1, 5,12, 14, 18, canceled claim 20 and added claim 21.
Notice of Pre-AIA or AIA Status
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
Continued Examination Under 37 CFR 1.114
A request for continued examination under 37 CFR 1.114, including the fee set forth in 37 CFR 1.17(e), was filed in this application after final rejection. Since this application is eligible for continued examination under 37 CFR 1.114, and the fee set forth in 37 CFR 1.17(e) has been timely paid, the finality of the previous Office action has been withdrawn pursuant to 37 CFR 1.114. Applicant's submission filed on 8/18/2026 has been entered.
Claim Rejections - 35 USC § 103
In the event the determination of the status of the application as subject to AIA 35 U.S.C. 102 and 103 (or as subject to pre-AIA 35 U.S.C. 102 and 103) is incorrect, any correction of the statutory basis (i.e., changing from AIA to pre-AIA ) for the rejection will not be considered a new ground of rejection if the prior art relied upon, and the rationale supporting the rejection, would be the same under either status.
The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
Claims 1-5, 12-14, 18-19 and 21 are rejected under 35 U.S.C. 103 as being unpatentable over Aguilera et al. (US 2023/0031304 A1) in view of Jain et al. (US 2022/0027264 A1).
As to claim 1, Aguilera teaches a method of providing dedicated memory assignments to applications comprising:
defining an area of dedicated memory within system memory (The tiered memory 106 can include a first memory 109a, a second memory 109b, and potentially additional memories 109; paragraph [0012] and The tiered memory 106 can be presented or conceptualized as a single, unified memory resource to individual processes 119; paragraph [0014]), wherein frames (physical pages 113; paragraph [0013]) of the dedicated memory are assignable to one or more programs (each of the memories 109 may be segmented or divided into one or more physical pages 113, such as the physical pages 113a of the memory 109a and the physical pages 113b of the memory 109b. Individual physical pages 113 can be allocated by the operating system 116 to a process 119 when the process 119 requests resources from the tiered memory 106; paragraphs [0012]-[0013]);
determining, in response to a program initializing (The cluster management service 606 can be executed to determine an appropriate host computing device 100 to initially place a process 119. The cluster management service 606 can also be executed to intermittently or periodically reevaluate placement decisions and, if appropriate, initiate a migration of a process 119 from a current host computing device 100 to a new host computing device 100; paragraph [0060]), an amount of dedicated memory to assign to the program based on a dedicated memory parameter for the program (One or more allocation policies can be stored on the computing device and referenced by the operating system 116 to determine which physical pages 113 in a memory 109 to allocate to a process; paragraph [0017], [0023]-[0024], recommended amount of memory; paragraphs [0061], [0063]-[0066]); and
assigning, based on the determined amount of dedicated memory, a portion of dedicated memory to the program (the operating system can allocate one or more physical pages 113 in the memory 109a and/or the memory 109b to a process; paragraph [0022] and the cluster management service can identify a host computing device that can accommodate the ideal tier size for the first memory 109a and the second memory 109b … subsequently, the cluster management service can assign the process 119 to the host computing device selected at block 706; paragraph [0067]-[0068]), wherein the assigned portion of dedicated memory is dedicated to the program until program completion (inherent from the process still accessing the allocated pages without being deallocated or reclaimed while the process is running).
Aguilera does not teach wherein a memory allocation request from the program is satisfied from non-dedicated memory when the memory allocation request cannot be fulfilled using the portion of dedicated memory.
However, Jain teaches a memory manager manages two kinds of memory pools: a global pool shared by all processors and a local pool for each processor. At system start, all available memory is claimed by the global pool. When a process needs memory, the process requests the memory from a local pool. If the local pool has sufficient memory to serve the request, the memory manager fulfills the request from the local pool. This path is lockless. If the local pool does not have sufficient memory, the memory manager requests a chunk of memory from the global pool for use in the local pool, (paragraphs [0014]); and “When a process requires memory, the process calls allocate memory 190 to request a memory allocation from a local pool for the processor on which the process executes. If local pool 121 has sufficient memory to serve the request, memory manager 110 will fulfill the request from local pool 121. This memory allocation from local pool 121 is lockless (i.e., memory manager 110 does not lock local pool 121 when allocating memory from local pool 121). If local pool 121 does not have sufficient memory, memory manager 110 requests a chunk of memory from global pool 119 to serve as a new local pool 121 for the processor using allocate local pool from global pool 192. The chunk of memory is an amount of memory large enough to fulfill a number of memory allocation requests by processes executing on that processor (e.g., defined by some threshold amount of memory for each local pool 121)”; (paragraph [0024]).
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to apply the concept taught by Jain to the system of Aguilera, because Jain teaches a method that overcome the problems of traditional allocation schemes typically reserve a fixed amount of memory for each process, which may result in over-provisioning for one process while exhausting memory for other processes, and another approach is to maintain a single global memory reservation pool and allow all components to compete for memory, which results in high contention for memory among the processes. The method taught by Jain allows the process’ memory request to be fulfilled dynamically.
As to claim 2, Aguilera as modified by Jain teaches the method of claim 1, wherein the area of dedicated memory is physical memory (see Aguilear: RAM, DRAM VNRAM; paragraph [0012] and physical pages; paragraph [0013]).
As to claim 3, Aguilera as modified by Jain teaches the method of claim 1, wherein the dedicated memory parameter is based on historical memory information for the program (see Aguilear: an access history can store a record of page accesses by a process; paragraph [0018], and a second approach for allocating physical pages to a process … access history; paragraph [0024], [0065]).
As to claim 4, Aguilera as modified by Jain teaches the method of claim 1, wherein the dedicated memory parameter indicates a minimum amount of dedicated memory and a target amount of dedicated memory (see Aguilear: minimum or recommended amount of memory; paragraph [0066]).
As to claim 5, Aguilera as modified by Jain teaches the method of claim 1 further comprising:
receiving, from the program, the memory allocation request (see Aguilear: the process requests resources from the tiered memory 106; paragraph [0013]);
determining whether the memory allocation request can be fulfilled using dedicated memory (see Aguilear: determine which physical pages 113 in a memory 109 to allocate to a process; paragraph [0017], [0023]-[0024]);
allocating, to the program, memory from the portion of dedicated memory when the memory allocation can be fulfilled using dedicated memory (see Aguilear: the operating system could allocate the first number of physical pages 113a from the memory 109a; paragraph [0024]); and
allocating, to the program, memory from non-dedicated memory when the memory allocation cannot be fulfilled using dedicated memory (see Aguilear: the operating system could allocate the second number of physical pages 113b from the memory 109b; paragraph [0024]).
As to claim 12, Aguilera teaches an apparatus for providing dedicated memory assignments to applications (a computing device 100; paragraph [0010] and abstract), the apparatus comprising a computer processor (one or more processors 103; paragraph [0010]), a computer memory operatively coupled to the computer processor (tiered memory 106; paragraph [0010] and Fig. 1), the computer memory having disposed therein computer program instructions that, when executed by the computer processor, cause the apparatus to (The processor 103 can represent any circuit or combination of circuits that can execute one or more machine-readable instructions stored in the tiered memory 106 that make up a computer program or process and store the results of the execution of the machine-readable instructions in the tiered memory 106; paragraph [0011]):
define an area of dedicated memory (The tiered memory 106 can include a first memory 109a, a second memory 109b, and potentially additional memories 109; paragraph [0012] and The tiered memory 106 can be presented or conceptualized as a single, unified memory resource to individual processes 119; paragraph [0014]), wherein frames (physical pages 113; paragraph [0013]) of the dedicated memory are assignable to one or more programs (each of the memories 109 may be segmented or divided into one or more physical pages 113, such as the physical pages 113a of the memory 109a and the physical pages 113b of the memory 109b. Individual physical pages 113 can be allocated by the operating system 116 to a process 119 when the process 119 requests resources from the tiered memory 106; paragraphs [0012]-[0013]);
determine, in response to a program initializing (The cluster management service 606 can be executed to determine an appropriate host computing device 100 to initially place a process 119. The cluster management service 606 can also be executed to intermittently or periodically reevaluate placement decisions and, if appropriate, initiate a migration of a process 119 from a current host computing device 100 to a new host computing device 100; paragraph [0060]), an amount of dedicated memory to assign to the program based on a dedicated memory parameter for the program (One or more allocation policies can be stored on the computing device and referenced by the operating system 116 to determine which physical pages 113 in a memory 109 to allocate to a process; paragraph [0017], [0023]-[0024], recommended amount of memory; paragraphs [0061], [0063]-[0066]); and
assign, based on the determined amount of dedicated memory, a portion of dedicated memory to the program, wherein the assigned portion of dedicated memory is dedicated to the program until program completion (the operating system can allocate one or more physical pages 113 in the memory 109a and/or the memory 109b to a process; paragraph [0022] and the cluster management service can identify a host computing device that can accommodate the ideal tier size for the first memory 109a and the second memory 109b … subsequently, the cluster management service can assign the process 119 to the host computing device selected at block 706; paragraph [0067]-[0068]), wherein the assigned portion of dedicated memory is dedicated to the program until program completion (inherent from the process still accessing the allocated pages without being deallocated or reclaimed while the process is running).
Aguilear does not teach wherein a memory allocation request from the program is satisfied from the portion of dedicated memory when the memory allocation request can be fulfilled using the portion of dedicated memory and from non-dedicated memory when the memory allocation request cannot be fulfilled using the portion of dedicated memory.
However, Jain teaches a memory manager manages two kinds of memory pools: a global pool shared by all processors and a local pool for each processor. At system start, all available memory is claimed by the global pool. When a process needs memory, the process requests the memory from a local pool. If the local pool has sufficient memory to serve the request, the memory manager fulfills the request from the local pool. This path is lockless. If the local pool does not have sufficient memory, the memory manager requests a chunk of memory from the global pool for use in the local pool, (paragraphs [0014]); and “When a process requires memory, the process calls allocate memory 190 to request a memory allocation from a local pool for the processor on which the process executes. If local pool 121 has sufficient memory to serve the request, memory manager 110 will fulfill the request from local pool 121. This memory allocation from local pool 121 is lockless (i.e., memory manager 110 does not lock local pool 121 when allocating memory from local pool 121). If local pool 121 does not have sufficient memory, memory manager 110 requests a chunk of memory from global pool 119 to serve as a new local pool 121 for the processor using allocate local pool from global pool 192. The chunk of memory is an amount of memory large enough to fulfill a number of memory allocation requests by processes executing on that processor (e.g., defined by some threshold amount of memory for each local pool 121)”; (paragraph [0024]).
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to apply the concept taught by Jain to the system of Aguilera, because Jain teaches a method that overcome the problems of traditional allocation schemes typically reserve a fixed amount of memory for each process, which may result in over-provisioning for one process while exhausting memory for other processes, and another approach is to maintain a single global memory reservation pool and allow all components to compete for memory, which results in high contention for memory among the processes. The method taught by Jain allows the process’ memory request to be fulfilled dynamically.
As to claims 13-14, see rejections of claims 4-5 above, respectively.
As to claim 18, Aguilera teaches a computer program product for providing dedicated memory assignments to applications, the computer program product disposed upon a non-transitory, computer readable medium, the computer program product comprising computer program instructions that, when executed, cause a computer to (any logic or application described herein that includes software or code can be embodied in any non-transitory computer-readable medium for use by or in connection with an instruction execution system such as a processor in a computer system or other system. In this sense, the logic can include statements including instructions and declarations that can be fetched from the computer-readable medium and executed by the instruction execution system. In the context of the present disclosure, a “computer-readable medium” can be any medium that can contain, store, or maintain the logic or application described herein for use by or in connection with the instruction execution system; paragraph [0094]):
define an area of dedicated memory (The tiered memory 106 can include a first memory 109a, a second memory 109b, and potentially additional memories 109; paragraph [0012] and The tiered memory 106 can be presented or conceptualized as a single, unified memory resource to individual processes 119; paragraph [0014]), wherein frames (physical pages 113; paragraph [0013]) of the dedicated memory are assignable to one or more programs (each of the memories 109 may be segmented or divided into one or more physical pages 113, such as the physical pages 113a of the memory 109a and the physical pages 113b of the memory 109b. Individual physical pages 113 can be allocated by the operating system 116 to a process 119 when the process 119 requests resources from the tiered memory 106; paragraphs [0012]-[0013]);
determine, in response to a program initializing (The cluster management service 606 can be executed to determine an appropriate host computing device 100 to initially place a process 119. The cluster management service 606 can also be executed to intermittently or periodically reevaluate placement decisions and, if appropriate, initiate a migration of a process 119 from a current host computing device 100 to a new host computing device 100; paragraph [0060]), an amount of dedicated memory to assign to the program based on a dedicated memory parameter for the program (One or more allocation policies can be stored on the computing device and referenced by the operating system 116 to determine which physical pages 113 in a memory 109 to allocate to a process; paragraphs [0017], [0023]-[0024], recommended amount of memory; paragraphs [0061], [0063]-[0066]); and
assign, based on the determined amount of dedicated memory, a portion of dedicated memory to the program, wherein the assigned portion of dedicated memory is dedicated to the program until program completion (the operating system can allocate one or more physical pages 113 in the memory 109a and/or the memory 109b to a process; paragraph [0022] and the cluster management service can identify a host computing device that can accommodate the ideal tier size for the first memory 109a and the second memory 109b … subsequently, the cluster management service can assign the process 119 to the host computing device selected at block 706; paragraph [0067]-[0068]), wherein the assigned portion of dedicated memory is dedicated to the program until program completion (inherent from the process still accessing the allocated pages without being deallocated or reclaimed while the process is running).
Aguilear does not teach wherein a memory allocation request from the program is satisfied from the portion of dedicated memory when the memory allocation request can be fulfilled using the portion of dedicated memory and from non-dedicated memory when the memory allocation request cannot be fulfilled using the portion of dedicated memory.
However, Jain teaches a memory manager manages two kinds of memory pools: a global pool shared by all processors and a local pool for each processor. At system start, all available memory is claimed by the global pool. When a process needs memory, the process requests the memory from a local pool. If the local pool has sufficient memory to serve the request, the memory manager fulfills the request from the local pool. This path is lockless. If the local pool does not have sufficient memory, the memory manager requests a chunk of memory from the global pool for use in the local pool, (paragraphs [0014]); and “When a process requires memory, the process calls allocate memory 190 to request a memory allocation from a local pool for the processor on which the process executes. If local pool 121 has sufficient memory to serve the request, memory manager 110 will fulfill the request from local pool 121. This memory allocation from local pool 121 is lockless (i.e., memory manager 110 does not lock local pool 121 when allocating memory from local pool 121). If local pool 121 does not have sufficient memory, memory manager 110 requests a chunk of memory from global pool 119 to serve as a new local pool 121 for the processor using allocate local pool from global pool 192. The chunk of memory is an amount of memory large enough to fulfill a number of memory allocation requests by processes executing on that processor (e.g., defined by some threshold amount of memory for each local pool 121)”; (paragraph [0024]).
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to apply the concept taught by Jain to the system of Aguilera, because Jain teaches a method that overcome the problems of traditional allocation schemes typically reserve a fixed amount of memory for each process, which may result in over-provisioning for one process while exhausting memory for other processes, and another approach is to maintain a single global memory reservation pool and allow all components to compete for memory, which results in high contention for memory among the processes. The method taught by Jain allows the process’ memory request to be fulfilled dynamically.
As to claim 19, see rejection of claim 4 above.
As to claim 21, Aguilera as modified by Jain teaches wherein the area of dedicated memory is defined prior to the program initializing, and the frames of the dedicated memory are assignable to the program in response to the program initializing (see Jain: At system start, all available memory is claimed by the global pool. When a process needs memory, the process requests the memory from a local pool. If the local pool has sufficient memory to serve the request, the memory manager fulfills the request from the local pool. This path is lockless. If the local pool does not have sufficient memory, the memory manager requests a chunk of memory from the global pool for use in the local pool; paragraphs [0014]).
Claims 6-11 and 15-17 are rejected under 35 U.S.C. 103 as being unpatentable over Aguilera et al. (US 2023/0031304 A1) in view of Jain et al. (US 2022/0027264 A1) further in view of Zhou et al. (CN 111459648 A).
As to claim 6, Aguilera as modified by Jain teaches the method of claim 1 further comprising:
determining, based on a dedicated memory parameter for the subsequent program, how much of the portion of dedicated memory to assign the subsequent program (One or more allocation policies can be stored on the computing device and referenced by the operating system 116 to determine which physical pages 113 in a memory 109 to allocate to a process; paragraph [0017], [0023]-[0024], recommended amount of memory; [0063]-[0066] and a process can represent a sub-routine or sub-component of a program; paragraph [0016]).
Aguilera does not teach identifying, in response to completing the program, a subsequent program in a sequence of programs.
However, Aguilera teaches the process is a sub-routine of a program.
Zhou teaches identifying, in response to completing the program, a subsequent program in a sequence of programs; and determining, based on a dedicated memory parameter for the subsequent program, how much of the portion of dedicated memory to assign the subsequent program (“using the input order of the application program, orderly distributing the calculating resource for the application program, calculating the class, controlling the class application program to respectively correspond to the calculating class, controlling the class calculating resource to correspondingly distribute. When the application program is executed, entering step S3 to recycle the calculation resource occupied by the application program, and performing the secondary distribution to the resource”; page 11, 3rd – 4th paragraphs and “firstly, the memory requirements of each application program y1, y2, y3, ..., yN are ordered from small to large, and divided into n groups with the same memory specification, respectively is Y1, Y2, ..., Yn; then determining a memory specification in each group of memory requirements, the memory specification xi = MAX (Yi). Using the mode of memory resource management, can realize non-fragmentation management of the memory, when the application program applies memory, according to the predetermined memory rule to distribute it, for example, application program memory application of Yi group should be corresponding to the memory specification is xi. when the application program is finished, recycling the fast memory area, when other application program in the group applies for memory, firstly using the recycled memory resource, if there is no memory resource suitable for specification size, orderly expanding backwards”; page 12, 7th – 9th paragraphs).
It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to apply the teaching of Zhou to the system of Aguilera as modified by Jain because Zhou teaches a method to recover the released computing resource and the memory resource of a finished application and when the new application program again applies resource, preferentially performing secondary distribution to the recovered resource. This can effectively reduce the design requirement of calculating resource; it can realize the efficient memory resource fully using the application program with high importance, realizing the non-fragmentation management of the memory through memory recycling and redistributing (abstract).
As to claim 7, Aguilera as modified by Jain and Zhou teaches the method of claim 6, wherein the program (sub-routine) and the subsequent program (sub-routine) are job steps of a job (a program; paragraph [0026]).
As to claim 8, Aguilera as modified by Jain and Zhou teaches wherein at least some of the portion of dedicated memory is assigned to the subsequent program (see Zhou: when other application program in the group applies for memory, firstly using the recycled memory resource, if there is no memory resource suitable for specification size, orderly expanding backwards”; page 12, 9th paragraph).
As to claim 9, Aguilera as modified by Jain and Zhou does not clearly teach wherein at least some of the portion of dedicated memory is freed based on a target amount of dedicated memory for the subsequent program.
However, Zhou teaches each application requires different amount of memory (according to the attribute setting result, according to the input order, respectively calculating resource and memory resource optimization distribution for each application program, managing and executing; page 10, 5th paragraph), and the resources returned from finished application is recycled to allocate to new application (when other application program in the group applies for memory, firstly using the recycled memory resource; page 12, 9th paragraph).
Therefore, it would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention that when the required memory of the subsequence program is less than the memory returned from the completed process/program, part of the memory returned from the completed process/program is free.
As to claim 10, Aguilera as modified by Zhou teaches the method of claim 8, wherein an additional portion of dedicated memory is assigned to the subsequent program based on a target amount of dedicated memory for the subsequent program (see Zhou: when other application program in the group applies for memory, firstly using the recycled memory resource, if there is no memory resource suitable for specification size, orderly expanding backwards”; page 12, 9th paragraph).
As to claim 11, Aguilera as modified by Jain and Zhou does not teach wherein the subsequent program is canceled when there is insufficient available dedicated memory to satisfy a minimum amount of dedicated memory for the subsequent program (see Zhou: when a certain time, the important application program is prepared in the memory resource space with high importance, the current memory resource is insufficient, then the application program is assigned to the general priority memory space operation; page 9, 5th paragraph. Thus, the application is cancelled in the high important priority group).
As to claims 15-17, see rejections of claims 6-8 above, respectively.
Response to Arguments
Applicant’s arguments with respect to claims 1-19 and 21 have been considered but are moot because the new ground of rejection does not rely on any reference applied in the prior rejection of record for any teaching or matter specifically challenged in the argument.
Conclusion
The prior art made of record and not relied upon is considered pertinent to applicant's disclosure.
Wang (CN 108628676 A) teaches a memory management device and method for multi-core system, comprising a private memory management module, fair and synchronous control module and a global memory management module, a private memory management module managing the private memory. mainly for application of small memory, each kernel corresponding to a private memory area, using lock-free design, avoids the overhead of lock, fair synchronous control module, the plurality of cores when the require memory to global memory management module, can be fairly synchronous; global memory management module. Managing global memory is a private memory management module service for application of the bulk memory, when the memory is not enough, to the system memory.
Any inquiry concerning this communication or earlier communications from the examiner should be directed to DIEM K CAO whose telephone number is (571)272-3760. The examiner can normally be reached Monday-Friday 8:00am-4:00pm.
Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, April Blair can be reached at 571-270-1014. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300.
Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
/DIEM K CAO/Primary Examiner, Art Unit 2196
DC
September 28, 2026