DETAILED ACTION
Notice of Pre-AIA or AIA Status
Applicant’s amendment, filed 011/28/2025, for application number 18/698,001 has been received and entered into record. Claims 1, 2 and 11 are amended. Thus, claims 1-8, 10-17, and 20-21 are presented for examination.
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
Claim Rejections - 35 USC § 102
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 the appropriate paragraphs of 35 U.S.C. 102 that form the basis for the rejections under this section made in this Office action:
A person shall be entitled to a patent unless –
(a)(1) the claimed invention was patented, described in a printed publication, or in public use, on sale, or otherwise available to the public before the effective filing date of the claimed invention.
Claims 1, 10, 11, 17, 20, 21 are rejected under 35 U.S.C. 102(a)(1) as being anticipated by Kilian et al. (US 2006/0282509 A1).
Regarding claim 1, Kilian teaches a method comprising:
in response to receiving a to-be-processed service request and in response to determining that a second process is in a non-running state, creating a shared memory region (“after the connection manager 302 receives a request from network 301 and determines that the request should be handled by the standards-based software suite, the session to which the request belongs is identified” par 0040 and “An “available” thread from the dedicated thread pool listens for a request notification arriving over the jFCA queue.” Par 0065 and “the dispatcher 308 submits at 2 the request 322 1 into the request/response shared memory 350” par 0041 and Figure 3, 6) [the to-be-processed service request corresponds to the request data RQD 322_1; the second process corresponds to the worker node 309 which houses the threads that execute the request], and determining a startup parameter (“the dispatcher's dispatching algorithm 308 increments the ARC value and at 3 places a “request notification” RN_1 320 1, into the request notification queue Q1 that feeds request notifications to the worker node 309 that is to handle the session.” Par 0044) [the request notification RN_1 corresponds to a startup parameter], wherein the startup parameter comprises information of the shared memory region (“The request notification RN_1 contains both a pointer to the request data RQD_1 322 1 in the request/ response shared memory and the session key SK1 in the session table entry for the session.” Par 0044), and the to-be-processed service request indicates that the second process is to be invoked (“the entry at 3 of a request notification RN_1 320 1 into the queue Q1 that has been established to supply request notifications to worker node 309. The request notification RN_1 320 1 sits in its request notification queue Q1 until the targeted worker node 309” par 0048), wherein the information of the shared memory region comprises a name and/or size of the shared memory region (“The pointer is used by the worker node 309 to fetch the request data RQD_1 322_1 from the request/response shared memory 350, and, therefore, the term “pointer” should be understood to mean any data structure that can be used to locate and fetch the request data.” Par 0045 and “the pointer in the request notification RN is the “handle” for the shared memory 350 connection that is used to fetch request data RQD_1 322 1.” Par 0046) [the handle for the shared memory connection acts as a unique identifier that is used to locate and fetch the request data (name)];
conveying the startup parameter to the second process in the non-running state such that the second process is started up to be in a running state based on the startup parameter (“the dispatcher's dispatching algorithm 308 increments the ARC value and at 3 places a “request notification” RN_1 320 1, into the request notification queue Q1 that feeds request notifications to the worker node 309 that is to handle the session.” Par 0044 and “The request notification RN_1 320 1 sits in its request notification queue Q1 until the targeted worker node 309 foresees an ability (or has the ability) to process the corresponding request 322 1.” Par 0048 and “When the targeted worker node 309 foresees an ability to process the request 322 1, it looks to its request notification queue Q1 and retrieves at 4 the request notification RN_1 320 1 from the request notification queue Q1.” Par 0050) [the dispatcher conveys request notification (startup parameter) into dedicated queue (to the worker node); the node retrieves notification to initiate processing (running state) what it has ability to do so];
in response to determining that the second process is in the running state, based on the to-be-processed service request, generating a first processing command (“When the targeted worker node 309 foresees an ability to process the request 322 1, it looks to its request notification queue Q1 and retrieves at 4 the request notification RN_1 320 1 from the request notification queue Q1… Recalling that the request notification RN_1 320 1 includes a pointer to the actual request RQD_1 322 1 within the request/response shared memory 350, the targeted worker node 309 subsequently retrieves at 5 the appropriate request RQD_1 322 1 from the request/response shared memory 350. ” Par 0050 and “The request notification RN_1 320 1 sits in its request notification queue Q1 until the targeted worker node 309 foresees an ability (or has the ability) to process the corresponding request 322 1.” Par 0048) [the first processing command is the request 322_1 which is initiated for execution (generated) when the worker node determines it is ready to process the request (running state) and proceeds to retrieve it]; and
writing the first processing command into the shared memory region such that the second process reads the first processing command from the shared memory region based on the information of the shared memory region and performs a processing operation based on the first processing command (“the dispatcher 308 submits at 2 the request 322 1 into the request/ response shared memory 350” par 0041 and “Recalling that the request notification RN_1 320 1 includes a pointer to the actual request RQD_1 322 1 within the request/ response shared memory 350, the targeted worker node 309 subsequently retrieves at 5 the appropriate request RQD_1 322 1 from the request/response shared memory 350. ” Par 0050 and “ With the targeted worker node 309 having the request RQD_1 322 2… the request is processed by the targeted worker node 309 resulting in the production of a response 324 that is to be sent back to the client.” Par 0053) [the dispatcher writes request data into shared memory which the worker node then reads using the pointer information to performance a processing operation to generate a response].
Claim 11 corresponds to claim 1 and is rejected accordingly.
Regarding claim 10, Kilian teaches the method of claim 1, further comprising:
writing first heartbeat data into the shared memory region (“While performing these tasks and subtasks, each of the worker threads is capable of reporting thread status information 940 into shared memory 925.” Par 0092) [the operational status may correspond to the heartbeat data]; wherein the first heartbeat data is configured to indicate that the second process generates a first response result based on the first heartbeat data and writes the first response result into the shared memory region (“The reporting tasks update shared memory 925 with the current status of the particular worker thread 1005.” Par 0097 and “Once thread status information 940 is reported into shared memory 925, monitoring console 910 can query shared monitoring memory 925 to display thread status information 940 for review” par 0093 and Figure 10) [the writing of current thread status (response/result) into memory indicates processes current operational state]; and
in response to determining that the first response result is not read from the shared memory region within a first preset time, stopping the second process and starting up a new second process (“In an embodiment, the shared memory structures 250, 260, 270 and request notification queues 212 help implement a fast session fail over protection mechan- ism in which a session that is assigned to a first worker node can be readily transferred to a second worker node upon the failure of the first worker node.” Par 0032 and “The connection-oriented architecture allows for easy session handling transfer from a crashed worker node to a new worker node because the routing of requests to a new targeted worker node is accomplished merely by routing the handle for a specific request/response shared memory connection to the new worker node.” Par 0058) [this describes the fast session fail over protection mechanism where upon failure (result was not processed/read in time) the active session is transferred to a new worker node, corresponding to stopping the old process and starting a new one].
Regarding claim 17, Kilian teaches the method of claim 11, further comprising:
writing second heartbeat data into the shared memory region (“While performing these tasks and subtasks, each of the worker threads is capable of reporting thread status information 940 into shared memory 925.” Par 0092) [the operational status may correspond to the heartbeat data]; wherein the second heartbeat data is configured to indicate that the first process generates a second response result based on the second heartbeat data and writes the second response result into the shared memory region (“The reporting tasks update shared memory 925 with the current status of the particular worker thread 1005.” Par 0097 and “Once thread status information 940 is reported into shared memory 925, monitoring console 910 can query shared monitoring memory 925 to display thread status information 940 for review” par 0093 and Figure 10) [the writing of current thread status (response/result) into memory indicates processes current operational state]; and
in response to determining that the second response result is not read from the shared memory region within a second preset time, stopping a running operation (“In an embodiment, the shared memory structures 250, 260, 270 and request notification queues 212 help implement a fast session fail over protection mechan- ism in which a session that is assigned to a first worker node can be readily transferred to a second worker node upon the failure of the first worker node.” Par 0032 and “The connection-oriented architecture allows for easy session handling transfer from a crashed worker node to a new worker node because the routing of requests to a new targeted worker node is accomplished merely by routing the handle for a specific request/response shared memory connection to the new worker node.” Par 0058) [this describes the fast session fail over protection mechanism where upon failure (result was not processed/read in time) the active session is transferred to a new worker node, corresponding to stopping the old process and starting a new one].
Regarding claim 20, Kilian teaches an electronic device (systems of Figures 2, 3, 12), comprising a memory (Figure 1, shared cache 206), a processor (Figure 21, processor 1206) and a computer program stored in the memory and run on the processor, wherein the processor executes the computer program to perform the service processing method of claim 1 (“Processes taught by the discussion above may be performed with program code such as machine-executable instructions which cause a machine (such as a “virtual machine”, a general-purpose processor disposed on a semiconductor chip or special-purpose processor disposed on a semiconductor chip) to perform certain functions. Alternatively, these functions may be performed by specific hardware components that contain hardwired logic for performing the functions, or by any combination of programmed computer components and custom hardware components.” Par 0110 and paragraphs 0111-0112 and Figure 12).
Regarding claim 21, Kilian teaches a non-transitory computer readable storage medium, storing computer executable instructions, wherein the computer executable instructions are executed by a processor to perform the service processing method of claim 1 (“An article of manufacture may be used to store program code. An article of manufacture that stores program code may be embodied as, but is not limited to, one or more memories (e.g., one or more flash memories, random access memories (static, dynamic or other)), optical disks, compact disks-read only memory (CD-ROMs), digital versatile/video disks (DVD ROMs), erasable programmable read-only memory (EPROMs), electrically erasable programmable read-only memory (EEPROMs), magnetic or optical cards or other type of machine-readable media suitable for storing electronic instructions. Program code may also be downloaded from a remote computer (e.g., a server) to a requesting computer (e.g., a client) by way of data signals embodied in a propagation medium (e.g., via a communication link (e.g., a network connection)).” Par 0111 and Figure 12).
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 2-5, 12-14 are rejected under 35 U.S.C. 103 as being unpatentable over Kilian in view of Kessler (US 2011/0246726 A1).
Regarding claim 2, Kilian teaches the method of claim 1. However, Kilian does not explicitly teach wherein the shared memory region comprises a first shared memory region and a second shared memory region; wherein the first shared memory region is configured to store data written by the first process, and the second shared memory region is configured to store data to be read by the first process; wherein writing the first processing command into the shared memory region comprises: writing the first processing command into the first shared memory region such that the second process reads the first processing command from the first shared memory region, performs a corresponding processing operation based on the first processing command to obtain a first processing result, and writes the first processing result into the second shared memory region; the method further comprises: reading the first processing result from the second shared memory region, and based on the first processing result, performing a corresponding processing operation.
In the analogous art, Kessler teaches wherein the shared memory region comprises a first shared memory region and a second shared memory region (“Application server 115 divides shared memory 150 in areas, and enables parallel reading of the shared memory areas by work processes 125, 130 and 135.” Par 0023 and Figure 1 and 2); wherein the first shared memory region is configured to store data written by the first process (“At 315, the work process writes one or more data units into its corresponding shared memory area.” Par 0025) [the designated memory may correspond to a first shared memory region], and the second shared memory region is configured to store data to be read by the first process (“Work process “1” 125 may still have read access to areas 230 and 235 of shared memory 150. Respectively, work process “2” 130 may have read access to areas 225 and 235, and work process “N” 135 may have read access to areas 225 and 230.” Par 0024) [work process 1 (first process) reads from areas 230 and 235 (second shared memory regions)];
wherein writing the first processing command into the shared memory region comprises:
writing the first processing command into the first shared memory region such that the second process reads the first processing command from the first shared memory region (“At 315, the work process writes one or more data units into its corresponding shared memory area. The data units may include information describing a request processed by the work process, consumer or user identification, processing time, type of requested service, information for the running application, etc.” par 0025 and “The data in a shared memory area may be read by any of the running work processes, and used for further processing or storing.” Par 0026) [the work process may correspond to the first work process; the writing of data units may correspond to the first processing command; the corresponding shared memory area corresponds to the first shared memory area], performs a corresponding processing operation based on the first processing command to obtain a first processing result (“At 650, the reading work process aggregates the units of data it has read from the shared memory areas corresponding to the work processes of the application server.” Par 0038) [the reading work process corresponds to the second process, the aggregation corresponds to the processing operation, the aggregated information corresponds to the first processing result], and writes the first processing result into the second shared memory region (“The work process writes information into the central shared memory area indicating the units of data read from the shared memory areas corresponding to the work processes running in the application server.” Par 0037 and Figures 6A, 6B) [the central shared memory area may include the second shared memory distinct from where the initial data units are written];
the method further comprises:
reading the first processing result from the second shared memory region (“Work process “1” 125 may still have read access to areas 230 and 235 of shared memory 150.” Par 0024) [other work processes may correspond to second processes and their dedicated memory area correspond to second shared memory regions], and
based on the first processing result, performing a corresponding processing operation (“At 650, the reading work process aggregates the units of data it has read from the shared memory areas corresponding to the work processes of the application server.” Par 0038) [the aggregation is based on the units of data is has read (first processing result)].
It would have been obvious to a person having ordinary skill in the art, having the teachings of Kilian and Kessler before him before the effective filing date of the claimed invention, to have modified Kilian to incorporate the teachings of Kessler to add Kessler’s structured shared memory regions to Kilian’s shared memory-based system, to provide allow for smoother inter-task communication. This would reduce communication overhead and resource consumption, enhancing overall parallel processing efficiency.
Regarding claim 3, Kilian and Kessler teach the method of claim 2. Kessler further teaches wherein the first shared memory region corresponds to a first read semaphore and a first write semaphore (“The writing in an area of the shared memory 150 needs additional locking steps to ensure that only one work process can write or change the content of the area.” Par 0023) [this describes the function of a write semaphore] (“The central shared memory area stores information indicating the processed data units in the other shared memory areas. For example, the central shared memory area may keep pointers assigned to each shared memory area corresponding to a work processes. Such a pointer may show the position of a last read (e.g., processed) data unit in an array of data units written in a shared memory area.” Par 0026) [these pointers in central shared memory, when read by other processors act as a read semaphore, indicating data availability and read status];
wherein writing the first processing command into the first shared memory region comprises:
setting the first write semaphore to a first state identifier and writing the first processing command into the first shared memory region (“Procedure 300 continues at 310, where one of the running work processes acquires write access to a corresponding shared memory area and read access to a central memory area (e.g., 210). At 315, the work process writes one or more data units into its corresponding shared memory area” par 0025) [acquiring write access implicitly corresponds to setting the first write semaphore to a first state identifier, allowing subsequent writing of first processing commands (data units)]; wherein the first state identifier indicates that the first shared memory region is in a data write state (“ Only one work process at a time can change a shared memory area.” Par 0023 and “The data unit “X” 449 is drawn with dashed line to illustrate that is still not available for reading by other processes, except work process “A” 425.” Par 0040 and Figure 4A, 4B, 7A) [when a process has write access, the shared memory area is in a data write state, where only the writing process can modify it and new data is not yet available for reading]; and
in response to completing the writing of the first processing command, setting the first write semaphore to a second state identifier (“The block diagram 480 of FIG. 4B shows the state of the shared memory area “1254” 440 after the work process “A” 425 has finished the operation for writing data unit “X” 449 as described in FIG. 3.” Par 0031) [finishing write operation implies release of write access, transitioning the shared memory area from a write state to a unwrite state for that process], and setting the first read semaphore to a third state identifier, such that the second process reads the first processing command from the first shared memory region in response to determining that the first read semaphore is set to the third state identifier (“Work process “A” 425 has also finished the writing operation for data unit “X” 449 in shared memory area “1254” 440. Therefore data unit “X” 449 is drawn with solid lines.” Par 0043 and “ Based on the indication in the central shared memory area, the work process reads the unread units of data from the shared memory area corresponding to the other work process at 624.” Par 0036) [the solid lines indicate the data is available to be read, acting as setting the read semaphore], performs the corresponding processing operation based on the first processing command to generate the first processing result, and writes the first processing result into the second shared memory region (“At 650, the reading work process aggregates the units of data it has read from the shared memory areas corresponding to the work processes of the application server…The aggregated information includes data for the working processes of the application server which is necessary for monitoring, management, auditing, and other purposes.” Par 0038 and “ The work process writes information into the central shared memory area indicating the units of data read from the shared memory areas corresponding to the work processes running in the application server.” Par 0037); wherein the second state identifier indicates that the first shared memory region is in a data un-write state and the third state identifier indicates that the first shared memory region is in a data read state (“The block diagram 480 of FIG. 4B shows the state of the shared memory area “1254” 440 after the work process “A” 425 has finished the operation for writing data unit “X” 449 as described in FIG. 3.” Par 0031 and “ Data units 446, 447 and 448 in shared memory area “1254” are available for reading by any of the running work processes of the application server, including work process “B” 725.” Par 0040) [completion of writing, releasing exclusive write access, means it’s no longer actively being written to by that process].
Regarding claim 4, Kilian and Kessler teach the method of claim 2. Kessler further teaches wherein writing the first processing command into the first shared memory region comprises:
writing the first processing command into the first shared memory region and locking the first shared memory region (“The writing in an area of the shared memory 150 needs additional locking steps to ensure that only one work process can write or change the content of the area.” Par 0023 and “Procedure 300 continues at 310, where one of the running work processes acquires write access to a corresponding shared memory area and read access to a central memory area (e.g., 210). At 315, the work process writes one or more data units into its corresponding shared memory area.” Par 0035); and
in response to completing the writing of the first processing command, unlocking the first shared memory region such that the second process reads the first processing command from the first shared memory region in response to determining that the first shared memory region is unlocked (“The block diagram 480 of FIG. 4B shows the state of the shared memory area “1254” 440 after the work process “A” 425 has finished the operation for writing data unit “X” 449 as described in FIG. 3.” Par 0031 and “Therefore data unit “X” 449 is drawn with solid lines” par 0043) [completion of writing implies release of exclusive writing access, effectively unlocking; solid lines indicate data is now available for reading, showing an unlocked state for other processes], performs the corresponding processing operation based on the first processing command to generate the first processing result (“At 650, the reading work process aggregates the units of data it has read from the shared memory areas corresponding to the work processes of the application server. The aggregation of data units could be based on a predefined algorithm. During the aggregation, the work process may use a local memory area for calculation and temporary saving of the read units of data. The aggregated information includes data for the working processes of the application server which is necessary for monitoring, management, auditing, and other purposes.” Par 0038), and writes the first processing result into the second shared memory region (“The work process writes information into the central shared memory area indicating the units of data read from the shared memory areas corresponding to the work processes running in the application server.” Par 0037) [the central shared memory area acts as a second shared memory region where the result/status of processing is written].
Regarding claim 5, Kilian and Kessler teach the method of claim 2, Kessler further teaches wherein the first processing command is in a first preset data format (“The data units may consist of conventional data types, organized efficiently to administer large amounts of data. The written data units may form an array or a queue of consecutive data units,” par 0026) [array/queue of data units may correspond to a first preset data format]; wherein the first processing result is generated based on a second preset data format (“The aggregation of data units could be based on a predefined algorithm… The aggregated information includes data for the working processes of the application server which is necessary for monitoring, management, auditing, and other purposes.” Par 0038 and “Once stored in a database or a file, the data is aggregated and processed to a predefined condensed structure before being used.” Par 0004 and “only an aggregated and condensed extraction of this data is actually needed.” Par 0022) [the predefined condensed structure may correspond to a second preset data format]; and wherein a development language corresponding to the first process is different from a development language corresponding to the second process (“Some embodiments of the invention may include the above-described methods being written as one or more software components. These components, and the functionality associated with each, may be used by client, server, distributed, or peer computer systems. These components may be written in a computer language corresponding to one or more programming languages such as, functional, declarative, procedural, object-oriented, lower level languages and the like.” Par 0045) [in one embodiment, the first process may use a functional language and the second process may use an object-oriented language, or any combination where both processes do not use the same language].
Regarding claim 12, Kilian teaches the method of claim 11. Kilian further teaches wherein reading the first processing command from the shared memory region comprises:
reading the first processing command from the first shared memory region (“Recalling that the request notification RN_1 320 1 includes a pointer to the actual request RQD_1 322 1 within the request/response shared memory 350, the targeted worker node 309 subsequently retrieves at 5 the appropriate request RQD_1 322 1 from the request/response shared memory 350.” Par 0050 and Figure 3) [the worker node (second process) actively retrieves request data (first processing command) from memory].
However, Kilian does not explicitly teach wherein the shared memory region comprises a first shared memory region and a second shared memory region; wherein the method further comprises: writing a first processing result into the second shared memory region, such that the first process reads the first processing result from the second shared memory region, and performs a corresponding processing operation based on the first processing result; wherein the first processing result is obtained by performing the processing operation based on the first processing command.
In the analogous art, Kessler teaches wherein the shared memory region comprises a first shared memory region and a second shared memory region (“Application server 115 divides shared memory 150 in areas, and enables parallel reading of the shared memory areas by work processes 125, 130 and 135.” Par 0023 and Figure 1 and 2);
wherein the method further comprises:
writing a first processing result into the second shared memory region, such that the first process reads the first processing result from the second shared memory region, and performs a corresponding processing operation based on the first processing result (“A number of work processes of an application server execute service requests at 305.” Par 0025 and “The data in a shared memory area may be read by any of the running work processes, and used for further processing or storing.” Par 0026) [work processes write data (first processing result) into shared memory areas, which can be read by other work processes (first process) for further processing]; wherein the first processing result is obtained by performing the processing operation based on the first processing command (“The processing of the data units could be invoked by a predefined condition, e.g., after a certain volume of data in the shared memory is reached; after a specified time period; relative to other system event; etc.” par 0032 and “At 650, the reading work process aggregates the units of data it has read from the shared memory areas corresponding to the work processes of the application server… The aggregated information includes data for the working processes of the application server” Par 0038) [the predefined condition (processing command) triggers processing operation (aggregated data unit); the aggregating information corresponds to first processing result].
It would have been obvious to a person having ordinary skill in the art, having the teachings of Kilian and Kessler before him before the effective filing date of the claimed invention, to have modified Kilian to incorporate the teachings of Kessler to add Kessler’s structured shared memory regions to Kilian shared memory-based system, to provide allow for smoother inter-task communication. This would reduce communication overhead and resource consumption, enhancing overall parallel processing efficiency.
Regarding claim 13, Kilian and Kessler teach the method of claim 12. Kessler further teaches wherein the second shared memory region corresponds to a second read semaphore and a second write semaphore (“The first process also reads at least one unit of data for a second process from a second area of the shared memory.” Par 0005 and “ The writing in an area of the shared memory 150 needs additional locking steps to ensure that only one work process can write or change the content of the area.” Par 0023) [additional locking steps functions as a write semaphore to ensure mutual exclusion; the ability for any running process to read data and track pointers in central memory function as a read semaphore to indicate data availability];
wherein writing the first processing result into the second shared memory region comprises:
setting the second write semaphore to a fourth state identifier, and writing the first processing result into the second shared memory region; wherein the fourth state identifier is configured to indicate that the second shared memory region is in a data write state (“Procedure 300 continues at 310, where one of the running work processes acquires write access to a corresponding shared memory area and read access to a central memory area (e.g., 210). At 315, the work process writes one or more data units into its corresponding shared memory area.” Par 0025) [acquiring write access effectively sets an internal state, acting as fourth state identifier, indicating the shared region is in a data write state for that process before first processing result (data unit) is written]; and
in response to completing the writing of the first processing result, setting the second write semaphore to a fifth state identifier and setting the second read semaphore to a sixth state identifier, such that the first process reads the first processing result from the second shared memory region in response to determining that the second read semaphore is set to the sixth state identifier (“Only one work process at a time can change a shared memory area.” Par 0023 and “The central shared memory area stores information indicating the processed data units in the other shared memory areas. For example, the central shared memory area may keep pointers assigned to each shared memory area corresponding to a work processes. Such a pointer may show the position of a last read (e.g., processed) data unit in an array of data units written in a shared memory area. This could be the position number of a data unit in the queue, or any other identifier that can specify data units across work process boundaries.” Par 0026) [the implicit release of write access means the write semaphore is no longer set for that process, allowing another process (fifth state identifier); the change in pointer’s state acts as sixth state identifier, indicating data is ready for reading]; wherein the fifth state identifier indicates that the second shared memory region is in a data un-write state and the sixth state identifier indicates that the second shared memory region is in a data read state (“Only one work process at a time can change a shared memory area.” Par 0023 and “At 610, the work process reads the unread (e.g., not processed) units of data from the shared memory area.” Par 0034) [sixth state is where the unread data units are present in the shared memory area as indicated by pointers, making them available to be read by the first process].
Regarding claim 14, Kilian and Kessler teach the method of claim 12. Kessler further teaches wherein writing the first processing result into the second shared memory region comprises:
writing the first processing result into the second shared memory region and locking the second shared memory region (“The writing in an area of the shared memory 150 needs additional locking steps to ensure that only one work process can write or change the content of the area.” Par 0023) [during write operation, shared memory is locked to ensure exclusive write access]; and
in response to completing the writing of the first processing result, unlocking the second shared memory region such that the first process reads the first processing result from the second shared memory region (“Work process “A” 425 has also finished the writing operation for data unit “X” 449 in shared memory area “1254” 440. Therefore data unit “X” 449 is drawn with solid lines.” Par 0043 and Figures 4A and 4B) [the solid lines after writing implies data unit is now available (unlocked) for other processes (first process) to read].
Claims 6-8, 15, 16 are rejected under 35 U.S.C. 103 as being unpatentable over Kilian and Kessler in view of Liu et al. (US 2019/0116348 A1).
Regarding claim 6, Kilian and Kessler teach the method of claim 2, However, Kilian and Kessler do not teach wherein the first process comprises a play process and the second process comprises a decoding process; wherein the to-be-processed service request comprises a video play request; wherein the first processing command comprises a video loading command; and wherein the first processing result comprises first indication information; wherein generating the first processing command comprises: based on the video play request, determining a video loading command identifier and a storage position of a to-be-played video; and based on a first preset data format, performing encapsulation on the video loading command identifier and the storage position of the to-be-played video to obtain the video loading command; wherein writing the first processing command into the shared memory region comprises: writing the video loading command into the first shared memory region such that the second process, in response to the video loading command identifier in the video loading command, obtains the to-be-played video based on the storage position of the to-be-played video in the video loading command, analyzes the to-be-played video to obtain video information of the to-be-played video, creates a third shared memory region, performs encapsulation on information of the third shared memory region and the video information based on a second preset data format, and writes the first indication information obtained by encapsulation into the second shared memory region; wherein the third shared memory region is configured to store a decoded to-be-played video.
In the analogous art, Liu teaches wherein the first process comprises a play process (“the first OS is configured to play the media data.” Par 0025) and the second process comprises a decoding process (“the second operating system 104 is configured to decode the media data to generate processing results.” Par 0030); wherein the to-be-processed service request comprises a video play request (“Process 900 starts at 902, where a browser kernel of a first operating system is configured to generate a playback request related to media data based on a user's operation. The playback request includes the source information of the media data.” Par 0102 and “media data can include video data corresponding to the video typed media,” par 0035) [a user’s operation for “media data” specifically “video data” generates a playback request, corresponding to a video play request]; wherein the first processing command comprises a video loading command (“The processing request, generated by the first operating system according to the media data to be played, includes information pertaining to processing of the media data. In some embodiments, the processing request includes the source information of the media data, control identifiers of the first operating system, and the application package information pertaining to the media application configured to play the media data. The source information of the media data can include a uniform resource locator (URL) corresponding to the media data,” par 0039) [the processing request (command) contains the URL (storage position) of the media, corresponding to a video loading command]; and wherein the first processing result comprises first indication information (“the processing results include the second graphic information, the playback status information, and the like. The second graphic information is used to generate the playback data corresponding to the media data in the first operating system,” par 0041) [the second graphic information corresponds to indication information that first OS uses to play media];
wherein generating the first processing command comprises:
based on the video play request, determining a video loading command identifier and a storage position of a to-be-played video (“Browser kernel 1022 is also configured to determine the source information of the media data based on the media playback request” par 0051 and “The source information of the media data can include a uniform resource locator (URL) corresponding to the media data, or other data pertaining to the media data such as the media label corresponding to the media data, and the like.” Par 0039 and “the browser kernel is configured to retrieve the control identifier of the first operating system (e.g., the ClientId of the first operating system) via a system interface.” Par 0114) [the browser kernel determines the URL (Storage position) and a control identifier (command identifier) based on media playback request, corresponding to a video play request]; and
based on a first preset data format, performing encapsulation on the video loading command identifier and the storage position of the to-be-played video to obtain the video loading command (“Next, the retrieved source information and the control identifier of the first operating system are set as the parameter information, which are transmitted to the bridge service module such that the bridge service module is triggered to send a processing request to the second operating system.” par 0114 and “ the processing request is generated to include information pertaining to the processing of media data. For example, the information can include the source information of the media data, the parameter information associated with the control identifier of first operating system 102, and the application package information (e.g., application name, etc.) corresponding to the media application which can play the media data.” Par 0029) [source information corresponds to storage position; this and the control identifier are set as parameter information and are used to generate the processing request, implying encapsulation into a defined structure to from the video loading command, under BRI];
wherein writing the first processing command into the shared memory region comprises:
writing the video loading command into the first shared memory region such that the second process, in response to the video loading command identifier in the video loading command, obtains the to-be-played video based on the storage position of the to-be-played video in the video loading command (“Next, the retrieved source information and the control identifier of the first operating system are set as the parameter information, which are transmitted to the bridge service module such that the bridge service module is triggered to send a processing request to the second operating system.” par 0114 and “In particular, the media application, equipped with a SDK, is configured to retrieve the media data corresponding to the media processing request based on the source information such as the uniform resource locator (URL) of the media data.” Par 0078), analyzes the to-be-played video to obtain video information of the to-be-played video, creates a third shared memory region (“The second graphic service module is configured to, after receiving the data frames, to synthesize the data frames to generate the second graphic information, which is set as the processing result.” Par 0087) [the generation and setting of specific output information (second graphic information) implies that it occupies a distinct memory area under BRI], performs encapsulation on information of the third shared memory region and the video information based on a second preset data format (“This second graphic information includes the second graphic and the handle information corresponding to the second graphic.” Par 0093) [this describes how video information (second graphic) and related control data are structured together (encapsulated) as the second graphic information (processed output)], and writes the first indication information obtained by encapsulation into the second shared memory region (“The second operating system is also configured to send the graphic processing results to the first graphic service module using the second graphic service module…the graphic processing results are transmitted to the first operating system using the two-way communication connection established by, for example, the Wayland protocol.” Par 0147) [this describes encapsulated graphic processing results (first indication information) being sent (written) back to the first OS via communication connection (serving as second shared memory region)];
wherein the third shared memory region is configured to store a decoded to-be-played video (“The second media service module is configured to, after receiving the media data, decode the media data to generate data frames, which are in turn transmitted to a second graphic service module (e.g., second graphics service module 1046 of FIG. 3).” Par 0086) [the data frames may correspond to the decoded to-be-played video; the data frames would necessarily be buffered in area of shared memory (third shared memory region) after decoding and before transmission to the second graphic service module].
It would have been obvious to a person having ordinary skill in the art, having the teachings of Kilian, Kessler and Liu before him before the effective filing date of the claimed invention, to have modified Kilian and Kessler to incorporate the teachings of Liu to allow for efficient and faster transfer and access of to-be-played videos between operating systems by reducing data copying overhead.
Regarding claim 7, Kilian, Kessler and Liu teach the method of claim 6. Kilian teaches wherein the information of the third shared memory region comprises a name of the third shared memory region (“In an embodiment, the following items are associated with each session table entry 370 1: 1) a “key” used to access the session table entry 370 1 itself (e.g., session key “SK1”);” Par 0043) [the session key serves as the identifying name used to access a specific entry within the session table (third shared memory region)].
Liu further teaches wherein the method further comprises:
in response to determining that the first indication information is read from the second shared memory region, generating a video play command (“browser kernel 1022 to retrieve the initialization complete message and to enter into a mode ready to playback the media data. Next, browser kernel 1022 is configured to send start playback message (e.g., via a call of Start) to trigger media service module 1044” Par 0049) [this effectively generates a video play command; this process implies checking indication information from an inter-OS communication channel which in a shred memory environment corresponds to, under BRI, a second shared memory region];
writing the video play command into the first shared memory region; wherein the video play command is configured to indicate that the second process decodes the to-be-played video and writes the decoded to-be-played video into the third shared memory region [par 0049; the “start” trigger is part of the processing request which includes information “pertaining to processing of media data”; the transmission mechanism implies buffering, and subsequent transmission of data frames corresponds to writing decoded video into third shared memory region, under BRI]; and
based on the name of the third shared memory region, reading the decoded to-be-played video from the third shared memory region and playing the decoded to-be-played video (“The second graphic service module is configured to, after receiving the data frames, to synthesize the data frames to generate the second graphic information, which is set as the processing result.” Par 0087 and paragraphs 32, 80, 97, 140, 147) [the second graphic information includes graphical representation of decoded video and is transmitted to first graphic service module; first OS plays media data based on processing results; this flow implies that the decoded video is accessed (read) from a shared buffer/region (which would be identified by name/key) for processing and playback, under BRI].
Regarding claim 8, Kilian, Kessler and Liu teach the method of claim 6. Kessler further teaches wherein creating the shared memory region and determining the startup parameter comprise:
in response to determining that the video play request indicates a plurality of to-be-played videos, creating a plurality of shared memory regions, and determining a plurality of startup parameters (“Application server 115 divides shared memory 150 in areas, and enables parallel reading of the shared memory areas by work processes 125, 130 and 135.” Par 0023 and Figures 1-5) [these multiple shared memory regions for parallel processing correspond to handling multiple videos requiring separate processing and this unique startup parameters for each];
wherein the plurality of startup parameters are in one-to-one correspondence with the plurality of shared memory regions (“the central shared memory area may keep pointers assigned to each shared memory area corresponding to a work processes. Such a pointer may show the position of a last read (e.g., processed) data unit in an array of data units written in a shared memory area.” Par 0026 and Figure 3).
Kilian further teaches wherein each of the plurality of startup parameters is configured to start up one second process (“Regarding request notification queues 212 Q1 through QM, one queue for each of the worker nodes 209 1 through 209 M has been implemented within the standards-based software suite 204.” Par 0032) [the dedicated request notification queue for each worder node ensures that a startup parameter (request notification) activates one corresponding process].
Regarding claim 15, Kilian and Kessler teach the method of claim 12. However, Kilian and Kessler do not explicitly teach wherein the second process comprises a decoding process, and the first process comprises a play process; wherein the first processing command comprises a video loading command and the first processing result comprises first indication information; wherein, based on the first processing command, performing the processing operation comprises: based on a storage position of a to-be-played video in the video loading command, obtaining the to-be-played video, and analyzing the to-be-played video to obtain video information of the to-be-played video; creating a third shared memory region; wherein the third shared memory region is configured to store a decoded to-be-played video; and based on a second preset data format, performing encapsulation on information of the third shared memory region and the video information to obtain the first indication information; wherein writing the first processing result into the second shared memory region comprises: writing the first indication information into the second shared memory region such that the first process generates a video play command based on the first indication information and writes the video play command into the first shared memory region.
In the analogous art, Liu teaches wherein the second process comprises a decoding process (“the second operating system 104 is configured to decode the media data to generate processing results.” Par 0030), and the first process comprises a play process (“the first OS is configured to play the media data.” Par 0025); wherein the first processing command comprises a video loading command (“The processing request, generated by the first operating system according to the media data to be played, includes information pertaining to processing of the media data. In some embodiments, the processing request includes the source information of the media data, control identifiers of the first operating system, and the application package information pertaining to the media application configured to play the media data. The source information of the media data can include a uniform resource locator (URL) corresponding to the media data,” par 0039) [the processing request (command) contains the URL (storage position) of the media, corresponding to a video loading command] and the first processing result comprises first indication information (“the processing results include the second graphic information, the playback status information, and the like. The second graphic information is used to generate the playback data corresponding to the media data in the first operating system,” par 0041) [the second graphic information corresponds to indication information that first OS uses to play media];
wherein, based on the first processing command, performing the processing operation comprises:
based on a storage position of a to-be-played video in the video loading command, obtaining the to-be-played video, and analyzing the to-be-played video to obtain video information of the to-be-played video (“Media data retrieval module 104201 is configured to retrieve the media data corresponding to the processing request based on the source information.” Par 0083 and “The media data is then decoded by use of the SDK to generate the processing results for the media data. In some embodiments, the SDK is used to invoke a call to the interface of a media service module to establish a decoding environment, under which the media data is in turn decoded into decoded data frames. The data frames are used to generate the graphic data corresponding to the media data such that the processing results for the media data can be generated based on the graphic data.” Par 0041 and Figure 7) [media data (video) is decoded into data frames which are used to generate graphic data (video information)];
creating a third shared memory region; wherein the third shared memory region is configured to store a decoded to-be-played video (“The second graphic service module is configured to, after receiving the data frames, to synthesize the data frames to generate the second graphic information, which is set as the processing result.” Par 0087) [the generation and setting of specific output information (second graphic information) implies that it occupies a distinct memory area under BRI] (“The second media service module is configured to, after receiving the media data, decode the media data to generate data frames, which are in turn transmitted to a second graphic service module (e.g., second graphics service module 1046 of FIG. 3).” Par 0086) [the data frames may correspond to the decoded to-be-played video; the data frames would necessarily be buffered in area of shared memory (third shared memory region) after decoding and before transmission to the second graphic service module];
based on a second preset data format, performing encapsulation on information of the third shared memory region and the video information to obtain the first indication information (“This second graphic information includes the second graphic and the handle information corresponding to the second graphic.” Par 0093) [this describes how video information (second graphic) and related control data are structured together (encapsulated) as the second graphic information (processed output)] (“The aggregation of data units could be based on a predefined algorithm… The aggregated information includes data for the working processes of the application server which is necessary for monitoring, management, auditing, and other purposes.” Par 0038 and “Once stored in a database or a file, the data is aggregated and processed to a predefined condensed structure before being used.” Par 0004 and “only an aggregated and condensed extraction of this data is actually needed.” Par 0022) [the predefined condensed structure may correspond to a second preset data format];
wherein writing the first processing result into the second shared memory region comprises:
writing the first indication information into the second shared memory region such that the first process generates a video play command based on the first indication information and writes the video play command into the first shared memory region (“After receiving the processing request from first operating system 102, second operating system 104 is configured to process the media data to generate processing results… Subsequently, the processing results are transmitted back to first operating system 102.” Par 0030 and “based on the processing results, first operating system 102 is configured to generate the corresponding playback data to display the media data on a display screen of the terminal device to play the media data.” Par 0033 and Figure 1, 2, 10, 11) [the second OS generates processing results and transmits them to first OS (writing to second shared memory region) which then generates playback data (video play command) based on these results for display; this implies that the second OS writes into its own memory, the first shared memory region].
It would have been obvious to a person having ordinary skill in the art, having the teachings of Kilian, Kessler and Liu before him before the effective filing date of the claimed invention, to have modified Kilian and Kessler to incorporate the teachings of Liu to allow for efficient and faster transfer and access of to-be-played videos between operating systems by reducing data copying overhead.
Regarding claim 16, Kilian, Kesseler and Liu teach the method of claim 15. Kilian further teaches wherein the information of the third shared memory region comprises a name of the third shared memory region (“In an embodiment, the following items are associated with each session table entry 370 1: 1) a “key” used to access the session table entry 370 1 itself (e.g., session key “SK1”);” Par 0043) [the session key serves as the identifying name used to access a specific entry within the session table (third shared memory region)].
Liu further teaches wherein the method further comprise:
in response to determining that the video play command is read from the first shared memory region, decoding the to-be-played video (“At 204, after receiving the processing request, the second operating system is configured to process the media data based on the processing request to generate the processing results, which are returned to the first operating system.” par 0040 and “After receiving the processing request from the first operating system, the second operating system is configured to launch a media application based on the processing request. Here, the media application includes the SDK corresponding to the media data, which can be decoded by the SDK for the purpose of processing the media data…The media data is then decoded by use of the SDK to generate the processing results for the media data. ” Par 0041) [upon receiving processing request (video play command), second OS decodes media data]; and
writing the decoded to-be-played video into the third shared memory region such that the first process reads the decoded to-be-played video from the third shared memory region based on the name of the third shared memory region, and plays the decoded to-be-played video (“Subsequently, the generated sub-graphic (e.g., via a call of SetSub Surface) is transmitted to first graphics service module 1026 (e.g., WestonServer) such that a generated second graphic is transmitted to first graphics service module 1026 to cause first operating system 302 to play the media data based on the second graphic.” Par 0048) [the generated sub-graphic corresponds to the decoded video; the first process access and plays the video in the first OS’s graphic module].
Response to Arguments
Applicant’s arguments with respect to claim(s) 1 and 11 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.
No additional arguments were presented as to the remaining claims. As such, the rejection is maintained.
Conclusion
Applicant's amendment necessitated the new ground(s) of rejection presented in this Office action. Accordingly, THIS ACTION IS MADE FINAL. See MPEP § 706.07(a). Applicant is reminded of the extension of time policy as set forth in 37 CFR 1.136(a).
A shortened statutory period for reply to this final action is set to expire THREE MONTHS from the mailing date of this action. In the event a first reply is filed within TWO MONTHS of the mailing date of this final action and the advisory action is not mailed until after the end of the THREE-MONTH shortened statutory period, then the shortened statutory period will expire on the date the advisory action is mailed, and any nonprovisional extension fee (37 CFR 1.17(a)) pursuant to 37 CFR 1.136(a) will be calculated from the mailing date of the advisory action. In no event, however, will the statutory period for reply expire later than SIX MONTHS from the mailing date of this final action.
Any inquiry concerning this communication or earlier communications from the examiner should be directed to AYMAN FATIMA whose telephone number is (571)270-0830. The examiner can normally be reached M to Fri EST.
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, Jaweed Abbaszadeh can be reached on (571)270-1640. 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.
/AYMAN FATIMA/Examiner, Art Unit 2176
/JAWEED A ABBASZADEH/Supervisory Patent Examiner, Art Unit 2176