DETAILED ACTION
Claims 1-8, 10-17, 20 and 21 are pending.
Notice of Pre-AIA or AIA Status
This Office Action is sent in response to Applicant’s Communication received on 04/13/2026 for application number 18/698,001.
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 § 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, 10, 11, 17, 20, 21 are rejected under 35 U.S.C. 103 as being unpatentable over Sysoev et al. (US 2019/0073316 A1) in view of Liu et al. (US 2019/0116348 A1).
Regarding claim 1, Sysoev 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 first shared memory region and a second shared memory region (“When an inbound request 120 [service request] with its corresponding data reaches the web server 128, it is passed to the router module 132.” par 0025 and “The shared memory manager 228 a in the router module 132 allocates a portion of the router’s address space 204 as a shared memory segment 148 a [first shared memory region].” par 0026 and “The worker process 136 likewise has an associated worker address space 208 and shared memory manager 228 b. The shared memory manager 228 b in the worker 136 allocates a shared memory segment 148 b [second region]” par 0028 and “segments are created dynamically based on load balancing between server processes. Memory segments referenced by lightly loaded processes are deleted [non-running state] to shift resources to processes that have higher workloads.” Par 0044), and determining a startup parameter, wherein the startup parameter comprises information of the first shared memory region and information of the second shared memory region (“the router module 132 and worker 136 use a pair of unidirectional sockets 140 a, 140 b to respectively send messages about the shared memory segments 148.” Par 0022 and “The memory mapping module 308 that creates a shared memory segment may include information about the partitioning of the memory segment in the control messages [startup parameter] sent to the entity with which the memory segment is shared.” Par 0035), and wherein the information of the first shared memory region comprises a size of the first shared memory region, and the information of the second shared memory region comprises a size of the second shared memory region (“For example, if a shared memory segment is one megabyte in size, it may be formed of eight 128 KB chunks…The memory mapping module 308 that creates a shared memory segment may include information about the partitioning of the memory segment in the control messages [startup parameter] sent to the entity with which the memory segment is shared.” Par 0035) [control messages sent between processes identify the partitioning and size for the memory regions (148a and 148b) used for unidirectional communication]; wherein the first process is configured to perform a write-only operation on the first shared memory region and a read-only operation on the second shared memory region; and the second process is configured to perform a read-only operation on the first shared memory region and a write-only operation on the second shared memory region (“These shared memory segments 148 a are used for unidirectional communications from the router module 132 to the worker 136. A worker 136 likewise uses one or more other shared memory segments 148 b to engage in unidirectional communications with the router module 132.” Par 0022 and “The entity that created the shared memory segment writes to the segment to send data to the other entity with which the memory segment is shared. Likewise, an entity reads from a shared memory segment created by another entity in order to receive data shared by the other entity.” Par 0036); and
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 router module 132 and workers 136 use shared memory segments 148 to share data related to the requests and responses generated therefrom… These shared memory segments 148 a are used for unidirectional communications from the router module 132 to the worker 136. A worker 136 likewise uses one or more other shared memory segments 148 b ” Par 0022 and “The first process writes 450 data to be shared” par 0047 and “The second process receives the control message and reads 460 the shared data” par 0048 and “The steps described above can also be performed by the second process in order to share data from the second process to the first process.” Par 0049 and “Upon processing the requests, the workers 136 send responses and data back to the router module 132.” Par 0021) [a first process writes a request (processing command) into 148a for the second process to read and process, after which the second process performs identical steps to write the response (processing result) back into 148b].
However, Sysoev does not explicitly teach the to-be- processed service request indicates that the second process is to be invoked; and wherein the non-running state indicates that the second process is not started up; conveying the startup parameter to a function or method corresponding to the second process in the non-running state, and causing the second process to be in a running state; 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.
In the analogous art, Liu teaches the to-be- processed service request indicates that the second process is to be invoked (“when it is determined that first operating system 102 does not support the media format, e.g., is not able to process the media data of the media format, first operating system 102 is configured to make a call to a communication interface (e.g., a configuration command to connect a guest OS to a host OS at a network based interface such as a bridge adaptor interface, bridge service interface, etc.) to start second operating system 104.” Par 0029) [an incoming media request (service request) that cannot be handled by the first processes triggers to start/invoke the second process (OS)];
and wherein the non-running state indicates that the second process is not started up (“first operating system 102 is configured to make a call to a communication interface … to start second operating system 104.” Par 0029) [a call is made when the second OS is determining to be in a non-running state, meaning it has not yet been invoked];
conveying the startup parameter to a function or method corresponding to the second process in the non-running state, and causing the second process to be in a running state (“first operating system 102 is configured to make a call to a communication interface (e.g., a configuration command … to start second operating system 104.” Par 0029 and “the processing request is used to trigger the second operating system to launch the media application corresponding to the application package information so that the media application is caused to call a preparation interface (e.g., ApplicationPrepare),” par 0127) [the first process conveys a configuration command/processing request (startup parameter) via a call to start the second OS (running state)];
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 (“cause 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)” par 0049 and “browser kernel 1022 of first operating system 302 is configured to generate media playback requests based on inputs of a user's operations.” Par 0051) [the running state check corresponds to the kernel receiving the completion message, which triggers the playback message (first processing command) based on the media playback request (service request)].
It would have been obvious to a person having ordinary skill in the art, having the teachings of Sysoev and Liu before him before the effective filing date of the claimed invention, to have modified Sysoev to incorporate the teachings of Liu to ensure that the problem of the first OS not supporting media data of all formats is solved by using Sysoev’s shared memory transport to handle inter-OS media processing requests.
Claim 11 corresponds to claim 1 and is rejected accordingly.
Regarding claim 10, Sysoev and Liu teach the method of claim 1, Sysoev further teaches further comprising:
writing first heartbeat data into the first shared memory region (“The router module 132 writes the data to be shared to a chunk (e.g., chunk 212) of the shared memory segment 148 a that is shared with the worker 136.” Par 0037); 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 second shared memory region (“The router module 132 and workers 136 use shared memory segments 148 to share data related to the requests and responses generated therefrom…A worker 136 likewise uses one or more other shared memory segments 148 b to engage in unidirectional communications with the router module 132.” Par 0022); and
in response to determining that the first response result is not read from the second shared memory region within a first preset time, stopping the second process and starting up a new second process (“a shared memory segment may be deleted responsive to the determination that the shared memory segment has not been used for a threshold period of time… Shared memory segments are created dynamically based on load balancing between server processes. ” Par 0044).
Regarding claim 17, Sysoev and Liu teach the method of claim 11. Sysoev further teaches further comprising:
writing second heartbeat data into the second shared memory region (“A worker 136 likewise uses one or more other shared memory segments 148 b to engage in unidirectional communications with the router module 132.” par 0022); 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 first shared memory region (“The router module 132 and workers 136 use shared memory segments 148 to share data related to the requests and responses generated therefrom” par 0022 and “The steps described above can also be performed by the second process in order to share data from the second process to the first process.” Par 0049); and
in response to determining that the second response result is not read from the first shared memory region within a second preset time, stopping a running operation (“Memory segments referenced by lightly loaded processes are deleted to shift resources to processes that have higher workloads. For example, a shared memory segment may be deleted responsive to the determination that the shared memory segment has not been used for a threshold period of time.” Par 0044).
Regarding claim 20, Sysoev teaches an electronic device (computer system 500, Figure 5), comprising a memory (Figure 5, memory 504), a processor (Figure 5, processor 502) 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 (“The storage unit 516 includes a machine-readable medium 522 on which is stored instructions 524 (e.g., program code modules) embodying any one or more of the methodologies or functions described herein. The instructions 524 may also reside, completely or at least partially, within the main memory 504 or within the processor 502 (e.g., within a processor's cache memory) during execution thereof by the computer system 500, the main memory 504 and the processor 502 also constituting machine-readable media. The instructions 524 may be transmitted or received over a network 526 via the network interface device 520.” Par 0055).
Regarding claim 21, Sysoev 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 (“The term “machine-readable medium” shall also be taken to include any non-transitory medium that is capable of storing instructions 524 for execution by the machine and that cause the machine to perform any one or more of the methodologies disclosed herein.” Par 0056 and Figure 5).
Claims 2-8, 12-16 are rejected under 35 U.S.C. 103 as being unpatentable over Sysoev and Liu in view of Kessler (US 2011/0246726 A1).
Regarding claim 2, Sysoev and Liu teach the method of claim 1. However, Sysoev and Liu do not explicitly teach wherein the first shared memory region is configured to store data written by a first process, and the second shared memory region is configured to store data to be read by the first process; 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 first shared memory region is configured to store data written by a 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)];
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 Sysoev, Liu and Kessler before him before the effective filing date of the claimed invention, to have modified Sysoev and Liu to incorporate the teachings of Kessler to add Kessler’s structured shared memory regions to Sysoev’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, Sysoev, Liu 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 may correspond 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 corresponds to releasing 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, Sysoev, Liu 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 corresponds to 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, Sysoev, Liu 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 6, Sysoev, Liu and Kessler teach the method of claim 2. Liu further 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, mapping to encapsulation into a defined structure to from the video loading command, under BRI];
wherein writing the first processing command into the first 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) corresponds to occupying 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].
Regarding claim 7, Sysoev, Liu and Kessler teach the method of claim 6. Kessler further teaches wherein the information of the third shared memory region comprises a name of the third shared memory region (“the first process writes information in a third area of the memory to indicate that the at least one unit of data for the first process and the at least one unit of data for the second process are read.” Par 0005 and “FIG. 4A is block diagram 400 that shows an exemplary state of a shared memory area “1254” 440 and a central shared memory 420,” par 0028) [the third memory region may correspond to the memory 420 and uses name (1254) to identify and register regions within that memory area].
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 shows 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 encompasses 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 shows 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, Sysoev, Liu and Kessler teach the method of claim 6. Kessler further teaches wherein creating the first shared memory region and the second 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); and
Liu further teaches wherein each of the plurality of startup parameters is configured to start up one second process (“first operating system 102 is configured to make a call to a communication interface (e.g., a configuration command to connect a guest OS to a host OS at a network based interface such as a bridge adaptor interface, bridge service interface, etc.) to start second operating system 104.” Par 0029 and “trigger the second operating system to launch a media application (e.g., media application 1042 of FIG. 3) corresponding to the application package information based on the media processing request for the purpose of processing the media data.” Par 0074) [the commands (startup parameter) have specific application information used to launch the second OS].
Regarding claim 12, Sysoev and Liu teach the method of claim 11. However, Sysoev and Liu do not explicitly teach 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 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 Sysoev, Liu and Kessler before him before the effective filing date of the claimed invention, to have modified Sysoev and Liu to incorporate the teachings of Kessler to add Kessler’s structured shared memory regions to Sysoev’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 13, Sysoev, Liu 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 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, Sysoev, Liu 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 shows that the data unit is now available (unlocked) for other processes (first process) to read].
Regarding claim 15, Sysoev, Liu and Kessler teach the method of claim 12. Liu further 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) shows 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 shows that the second OS writes into its own memory, the first shared memory region].
Regarding claim 16, Sysoev, Liu and Kessler the method of claim 15. Kessler further teaches wherein the information of the third shared memory region comprises a name of the third shared memory region (“the first process writes information in a third area of the memory to indicate that the at least one unit of data for the first process and the at least one unit of data for the second process are read.” Par 0005 and “FIG. 4A is block diagram 400 that shows an exemplary state of a shared memory area “1254” 440 and a central shared memory 420,” par 0028) [the third memory region may correspond to the memory 420 and uses name (1254) to identify and register regions within that memory area].
Liu further teaches wherein the method further comprises:
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
The prior art made of record and not relied upon is considered pertinent to applicant’s disclosure.
Saito (US 2020/0073793 A1) teaches a host unit of an information processing system that contains a command issuing block for issuing access requests to flash memory. These requests are necessary for management of flash memory.
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 between 8am and 4pm 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