US20230359486A1 - Transferral Of Process State And/Or Components In Computing Environments - Google Patents
Transferral Of Process State And/Or Components In Computing Environments Download PDFInfo
- Publication number
- US20230359486A1 US20230359486A1 US18/355,826 US202318355826A US2023359486A1 US 20230359486 A1 US20230359486 A1 US 20230359486A1 US 202318355826 A US202318355826 A US 202318355826A US 2023359486 A1 US2023359486 A1 US 2023359486A1
- Authority
- US
- United States
- Prior art keywords
- state information
- function
- update
- receive
- notification
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/656—Updates while running
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
Definitions
- a computer program or process may at times crash (e.g., terminate unnaturally), need to be updated or need to be ported to a remote computer for processing. If a computer program or process is performing tasks, interruption of those tasks by one or more of the foregoing events may impact the performance of the computer program or process. For example, in a server-client environment, if state information (e.g., handles) is lost by any of the foregoing events, a client application may need to reestablish state information to restore or start anew the client application. This may also occur with server processes. Reestablishing state information may prove inefficient in terms of computing resources and time needed to have access to new resources, e.g., handles, virtual memory objects, etc.
- state information e.g., handles
- the system comprises one or more computing devices, one or more computer readable storage media and program instructions, stored on the one or more computer readable storage media, for execution by at least one of the one or more computing devices.
- the program instructions comprise registering processing information associated with a first process within an operating system, requesting, by a second process after the first process has terminated, the processing information from the operating system, and transferring, by the operating system, ownership of the processing information to the second process.
- transferring ownership may comprise the operating system notifying a spawner of the first process that the second process requested the registered processing information.
- the program instructions may further comprise transmitting, by the spawner a verification code to the second process.
- the program instructions may also comprise verifying that the second process is allowed to receive the first process processing information.
- transferring ownership may comprise the operating system receiving one or more capability handles as a portion of the registered processing information.
- the program instructions may further comprise the operating system transferring the one or more capability handles to a safekeeping process and transferring, by the safekeeping process, the capability handle to the second process.
- the program instructions may also comprise the operating system transferring the one or more capability handles to a safekeeping process and transferring, by the safekeeping process, the capability handle to the second process.
- the program instructions may also further comprise the second process forwarding the one or more capability handles it received to the operating system and the operating system comparing information contained in the capability handle transferred by the safekeeping process to information contained in the capability handle forwarded by the second process.
- the program instructions may further comprise the operating system, in response to receiving notification of an update associated with the first process, notifying the first process of the update.
- the operating system may cause spawning of the second process based on the update.
- the first process initiates registering the processing information.
- the second process initiates requesting the processing information.
- the processing information may comprise state information.
- State information may generally comprise resources, e.g., handles, threads, memory objects and other data, established in running an old or original process or program that can be used in running a new or replacement process or program.
- the technology is a method for transferring information between computing processes.
- the method comprises registering processing information associated with a first process with an operating system; requesting, by a second process after the first process has terminated, the processing information from the operating system; and transferring, by the operating system, ownership of the processing information to the second process.
- transferring ownership comprises the operating system notifying a spawner of the first process that the second process requested the registered processing information.
- the method may also further comprise transmitting, by the spawner, a verification code to the second process and comparing, by the operating system, the verification code provided to the new process to a verification code associated with the first process.
- transferring ownership may comprise the operating system receiving one or more capability handles as a portion of the registered processing information.
- the operating system in response to receiving notification of an update associated with the first process, notifying the first process of the update. Further still, the operating system may cause spawning of the second process based on the update. Also, in response to being notified of the update, the first process may initiate registering the processing information. Additionally, in response to detecting the update, the second process may initiate requesting the processing information.
- FIG. 1 is an example diagram of a system in accordance with aspects of the disclosure.
- FIG. 2 is an example functional diagram of a system in accordance with aspects of the disclosure.
- FIG. 3 is an example flow diagram in accordance with aspects of the disclosure.
- FIG. 4 is an example flow diagram in accordance with aspects of the disclosure.
- FIG. 5 is an example flow diagram in accordance with aspects of the disclosure.
- FIG. 6 is an example flow diagram in accordance with aspects of the disclosure.
- FIG. 7 is an example flow diagram in accordance with aspects of the disclosure.
- FIG. 8 is an example flow diagram in accordance with aspects of the disclosure.
- the technology relates to updating and/or restoring computer programs or processes in computer systems.
- Computer programs and processes may suffer errors and enter an unrecoverable state (e.g., “crash”) so that their execution has to be terminated unnaturally, their memory discarded and a new or replacement program or process be instantiated to take the place of the original or old program or process.
- active or running programs or processes may need to undergo planned version upgrades or transfer execution of the program or process to one or more remote computers.
- Some programs or processes perform the function of “server” to other client programs or processes, e.g., taking in data, operating on such data and supplying results.
- a server process or program typically owns and maintains information, e.g., state information, across multiple exchanges with client processes or programs.
- the state information generally comprises resources, e.g., handles, threads, memory objects and other data, established in running a process or program. Such resources may be lost (or expire) when the process ends naturally (e.g., completes its function and exits) or unnaturally (e.g., crashes). In other instances, such resources may need to be transferred to another computer or maintained in the presence of an impending software upgrade.
- a process or program running on a computing device that is able to store or archive its state information in a form that can be recovered and used by a future process would allow for seamless and dynamic transfer of such state information in the face of crashes, planned upgrades or making use of remote computing resources.
- a function call may be provided by an operating system (“OS”) of a computing device that allows prior instantiated server processes (or more generally any process that performs a server or cooperative function to other processes) to store state information outside of its directly accessible memory.
- OS operating system
- Such state information would contain sufficient state information necessary for a newly started or replacement server process to successfully replace a prior instantiated server process.
- Such a replacement server process would be able to successfully serve client requests even while a sequence of requests is taking place.
- State information generally comprises information that may be used to resume functioning of a given application without interruption.
- State information will typically be application or program specific, and would generally comprise a mixture of operating system resources (memory buffers, handles, channels, sockets) and the application state (e.g. authentication information, current operational settings (e.g., volume setting, video format, etc.), etc.
- the state information may comprise a current layout of the interface; for a long-running computation the state may comprise a recent value computed and an algorithm for resuming the computation.
- state information generally comprises information that allows migration of an application's or program's state incrementally while the application or program runs and respond to requests.
- state information may be stored by a prior instantiated or old process to the OS at any time.
- the handle/socket or capability stored by the old process may include a handle to a virtual memory object (“VMO”) which would allow storage of additional data, which would be readable once the handle is retrieved and restored.
- VMO virtual memory object
- the OS may perform the internal operations necessary to atomically transfer ownership of the transferred or stored state information to a replacement or new process, and allow the replacement or new process to read the state information (e.g., handles and other state information).
- a determination may be made by the OS to verify whether the new or replacement process has the necessary rights to access the state information of the old or original process. For instance, this may be achieved by use of one or more secret tokens or keys. More specifically, state information stored in association with a token may be read only by a new or replacement process that possesses the token. A spawner of a server process may, for example, provide the same key or token both the original or old process and the replacement or new process, which would have started after the original or old process was no longer running. In a capability-based OS, verification of access rights to the state information may be implemented by means of a capability.
- the capability would be provided to the OS as part of the function call that stores the original state information, passed to another process for safekeeping and then passed to new or replacement process allowing it to restore the original state information.
- a server manager could receive the capability and then pass it to new incarnations or instances of the server process.
- an application update process may receive the capability from an application that it was about to upgrade, and then pass the capability to the new application once it restarted.
- the OS may also provide as a feature translation of state information supplied by the old or original process to make them valid or readable to the new or replacement process.
- the translation feature may be provided as part of the OS's transferral of ownership between an old and a new process. Such translations may be performed similar to those that are done when passing state information, such as resources, between concurrent running processes.
- the storage or archiving of state information may be implemented using a system call such as zx_snapshot_store ( ), or more generally call_store ( ).
- a system call such as zx_snapshot_store ( ), or more generally call_store ( ).
- Such a call would allow, for example, an array of handles and moderate amount of data to be stored. In this way, the state information being stored may be data light.
- Another system call such as zx_snapshot_recover ( ) or more generally call_recover ( ) may be implemented to allow a new or replacement process to read or obtain the state information previously owned by the old or original process.
- a server process may “checkpoint” its state after each new client connects and establishes state information for serving a sequence of requests. If the server process unexpectedly crashes or is terminated, a new or replacement server process would then be able to request the handles, which, since they were stored in the checkpoint service, would have been suspended rather than deleted when the old process died. In a case where a process wanted to checkpoint its state to guard against unexpected crashes, there may be multiple writes or stores for every read. Thus, a third system call zx_snapshot_initialize ( ) or more generally call_initialize, which would return a pair of handles. One handle would be passed to the old or original process and could be used for writing snapshots to the operating system via zx_snapshot_store ( ).
- the other handle would be passed to the “new” process and could be used, once, for passing to zx_snapshot_recover ( ).
- the new or replacement process would also receive an additional handle of storing its own snapshots.
- the technology may be implemented to facilitate updating parts or portions of an OS or end-user software without interrupting or having to restart the system.
- OS a component of the entire system
- updating may require re-starting the system. Re-starting the system may be inconvenient to a user at a given time, which may result in an update being delayed. This may expose the software and system to additional risks, e.g., security risks if the update is a security fix.
- the other features may include one or more OS components that communicate through inter-process communication.
- the other features may also include a transition protocol for transferring forward-compatible state information (e.g., handles and other information) to an updated process.
- state information is written in a forward-compatible format to a memory buffer that can be transferred to a new process.
- the format of the forward-compatible buffer may be similar in principle to Protobuf and Flatbuffers, which provide forward compatible data serialization for remote procedure calls.
- This technology is applicable to system components (e.g., OS), for which in-place upgrades are typically ascribed more value, and non-system components (e.g., end-user applications).
- System components maintain, for example, a list of handles representing connections with clients, connections with other system components, and operating system resources used by the component itself.
- This technology may overcome a challenge in updating system components or bringing up a new version of the component that has access to and knows how to interpret a list of handles and internal state of the old instance or process.
- the technology may be generally implemented by notifying the OS of an update, performing a handshake to initiate transfer of state and capabilities pertaining to active tasks being performed by the old instance or process and completing such transfer to the new/replacement instance or process, resuming old tasks and, if necessary, initiating new tasks by the new/replacement instance and terminating the old instance/replacement instance.
- One or more aspects of the disclosed technology may be implemented to improve computing technologies including server and client performance and/or OSs, such as for example, capability based OSs. For example, in recovering from server crashes, one or more clients may not, at the necessary moment, be in a state where the operations necessary to recover from a crash may be readily performed. In addition, the client functionality necessary to restore server state may be difficult to test adequately, particularly where clients may need to interact and server crashes may happen at random times. For example, it is not uncommon for process A to first give a resource to process B, which then passes it to the server. Process A may not monitor the server's health or know when it has crashed.
- process B will have to interrupt whatever it is doing, request a new resource for process A, give that resource to the server, before process B can again use the server's functionality.
- One or more of the above disclosed features of this technology may avoid or at least mitigate the need to have another process interrupt the tasks it may be performing so that an interrupted process may recover from a server crash.
- the disclosed features of this technology may mitigate the effects of server crashes for which there was not full recovery as to avoid function degradation and/or improper operation elsewhere in the system.
- this technology mitigates security risks exposures caused by having processes exchange, for example, handle information outside the purview of the OS.
- One or more aspects of the disclosed technology may, for example, reduce the complexity of operations that may need to be performed on the client side and may result in simplification of the client. For example, there may be no need to recovery code on the client side as the OS would have state and other information necessary to have the new/replacement process take over the function at the client without noticeable impact on performance of the client application.
- FIG. 1 is a pictorial diagram of an example system 100 that includes a plurality of computing devices 110 , 120 , 130 , 140 and a storage system 150 connected via a network 160 .
- each of computing devices 110 , 120 , 130 may include one or more processors, memory, data and instructions.
- server computing device 110 includes one or more processors 172 , memory 174 , instructions 176 and data 178 .
- the memory 174 stores information accessible by the one or more processors 172 , including instructions 176 and data 178 that may be executed or otherwise used by the processor(s) 172 .
- the memory 174 may be of any type capable of storing information accessible by the processor, including a computing device-readable medium, or other medium that stores data that may be read with the aid of an electronic device, such as a hard-drive, memory card, ROM, RAM, DVD or other optical disks, as well as other write-capable and read-only memories.
- Systems and methods may include different combinations of the foregoing, whereby different portions of the instructions and data are stored on different types of media.
- the instructions 176 may be any set of instructions to be executed directly (such as machine code) or indirectly (such as scripts) by the processor.
- the instructions may be stored as computing device code on the computing device-readable medium.
- the terms “instructions” and “programs” may be used interchangeably herein.
- the instructions may be stored in object code format for direct processing by the processor, or in any other computing device language including scripts or collections of independent source code modules that are interpreted on demand or compiled in advance. Processes, functions, methods and routines of the instructions are explained in more detail below.
- the data 178 may be retrieved, stored or modified by processor 172 in accordance with the instructions 176 .
- data 178 associated with memory 174 may comprise data used in supporting services for one or more client devices, e.g., 120 , 130 or more.
- client devices e.g., 120 , 130 or more.
- Such data may include data to support hosting web-based applications, file share services, communication services, gaming, sharing video or audio files, or any other networked based services.
- the one or more processor 172 may be any conventional processor, such as commercially available CPUs. Alternatively, the one or more processors may be a dedicated device such as an ASIC or other hardware-based processor. Although FIG. 1 functionally illustrates the processor, memory, and other elements of computing device 110 as being within the same block, it will be understood by those of ordinary skill in the art that the processor, computing device, or memory may actually include multiple processors, computing devices, or memories that may or may not be located or stored within the same physical housing.
- one or more computing devices 110 may include one or more server computing devices having a plurality of computing devices, e.g., a load balanced server farm, that exchange information with different nodes of a network for the purpose of receiving, processing and transmitting the data to and from other computing devices.
- server computing devices having a plurality of computing devices, e.g., a load balanced server farm, that exchange information with different nodes of a network for the purpose of receiving, processing and transmitting the data to and from other computing devices.
- the network 160 may include various configurations and protocols including short range communication protocols such as BluetoothTM, BluetoothTM LE, the Internet, World Wide Web, intranets, virtual private networks, wide area networks, local networks, private networks using communication protocols proprietary to one or more companies, Ethernet, WiFi and HTTP, and various combinations of the foregoing.
- short range communication protocols such as BluetoothTM, BluetoothTM LE, the Internet, World Wide Web, intranets, virtual private networks, wide area networks, local networks, private networks using communication protocols proprietary to one or more companies, Ethernet, WiFi and HTTP, and various combinations of the foregoing.
- Such communication may be facilitated by any device capable of transmitting data to and from other computing devices, such as modems and wireless interfaces.
- each client computing device 120 , 130 , 140 may be a personal computing device intended for use by a user and have all of the components normally used in connection with a personal computing device including a one or more processors (e.g., a central processing unit (CPU)), memory (e.g., RAM and internal hard drives) storing data and instructions, a display such as displays 124 , 134 , 144 (e.g., a monitor having a screen, a touch-screen, a projector, a television, or other device that is operable to display information), speakers, and user input devices 126 , 136 , 146 (e.g., a mouse, keyboard, touchscreen or microphone).
- the client computing devices may also include a camera for recording video streams, speakers, a network interface device, and all of the components used for connecting these elements to one another.
- Client computing device 140 may also be a workstation associated with the network devices, e.g., one or more server computing devices 110 , and used for administration and/or maintenance.
- client computing device 140 may be operated by a network administrator who supports, maintains and manages security associated with server computing devices 110 .
- the client computing device 140 may enable the network administrator to access information about the servers such as the current version of software running on the server and installing updates, patches, etc.
- FIG. 1 the system may actually include tens or hundreds of such workstations and network administrators.
- client computing devices 120 , 130 , 140 may each comprise a full-sized personal computing device, they may alternatively comprise mobile computing devices capable of wirelessly exchanging data with a server computing device (such as the server computing devices 110 ) over a network such as the Internet.
- client computing device 120 may be a mobile phone or a device such as a wireless-enabled PDA, a tablet PC, a wearable computing device or system, or a netbook that is capable of obtaining information via the Internet or other networks.
- client computing device 130 may be a wearable computing system, such as a smartwatch.
- the user may input information using a small keyboard, a keypad, microphone, using visual signals with a camera, or a touch screen.
- storage system 150 can be of any type of computerized storage capable of storing information accessible by the server computing devices 110 , such as a hard-drive, memory card, ROM, RAM, DVD, CD-ROM, write-capable, and read-only memories.
- storage system 150 may include a distributed storage system where data is stored on a plurality of different storage devices which may be physically located at the same or different geographic locations.
- Storage system 150 may be connected to the computing devices via the network 160 as shown, and/or may be directly connected to or incorporated into any of the computing devices 110 , 120 , 130 , etc.
- Storage system 150 may store various types of information as described in more detail below. This information may be retrieved or otherwise accessed by one or more server computing devices, such as the devices 110 , and/or one or more client computing device, such as the client computing device 120 , in order to perform some or all of the features described herein.
- FIG. 2 is an example functional diagram of a system 200 in accordance with aspects of the disclosure.
- the system 200 includes one or more client computing devices 2101 through 210 m communicating over network 220 to a server computing device 240 .
- Computing devices 210 may comprise client computing device 120 , 130 described above in relation to FIG. 1 .
- Network 220 may comprise one or more of the networks described in relation to network 160 .
- Server computing device 240 is shown functionally but may comprise a server computing device 110 described in relation to FIG. 1 . While FIG. 2 provides an example with a single server computing device 240 , the system 200 may comprise multiple server computing devices operating in parallel and/or in cooperation, and similarly, to server computing device 240 .
- Server computing device 240 includes an OS function 242 .
- OS function 242 may comprise a kernel or microkernel 244 (including the case of capability based OS).
- the kernel comprises the inner core of the OS and typically has complete control over operation of the computer system and generally connects software applications to the hardware used to run such applications.
- a microkernel typically implements a smaller subset of functionality provided via a kernel.
- OS 242 communicates with one or more Server Processes (SP) 246 .
- OS 242 also communicates with one or memory locations, 248 , 250 .
- Memory location 248 is used by OS 242 to operate and will be loaded with programs or instructions that are necessary for OS 242 to perform its function. For example, memory location 248 will typically be loaded with the kernel/microkernel code.
- Memory location 250 is memory set aside to store state information or data involved in restoring a server process 246 in accordance with this technology.
- a server process may issue a system call recognized by the OS 242 as request for a service to store state information.
- a call may be generally referred to as call_store.
- a system call may be implemented as zx_snapshot_store ( ).
- the OS takes the necessary steps to receive and store state information associated with the server process (e.g., State Info. k ).
- the state information generally comprises resources, e.g., may include handles, threads, memory objects and other data, established in running a process or program.
- Other data may for example include information about the settings for a client application supported by the server process, e.g., the volume or video quality setting for a video playing on a client device.
- the OS 242 Upon receiving the state information, the OS 242 then stores the state information into a process recovery memory 250 location.
- SP k may be considered the old or original process. It may issue a call_store or zx_snapshot_store periodically to OS 242 or when it detects a change in state information that is normally stored as part of this system call.
- SP k′ may issue a system call to OS 242 requesting recovery of the state information which SP k requested be stored by OS 242 .
- the system call issued by SP k′ may be generally referred to as call_recovery and may be implemented as zx_snapshot_recovery ( ).
- OS 242 verifies that the SP k′ s is allowed access to the information stored on behalf of SP k . If verification is successful, State Info. k is then provided by OS 242 to SP k′ .
- SP k′ may then replace SP k and SP k , if not already terminated, may be terminated.
- SP k′ may then continue in its place and perform old and new tasks necessary to have the process previously supported by SP k run as normal.
- FIG. 3 is an example flow diagram 300 in accordance with aspects of the disclosure. More specifically, FIG. 3 shows a flow of a method 300 for storing and retrieving state information.
- OS 310 receives a request from a server process to store state information associated with an original/old process currently running.
- the state information storage request received at the OS in accordance may be in accordance with the system call, call_store, described above.
- the OS would then take the necessary steps to have the server process provide the state information associated with an original/old process and store it for possibly later usage, block 320 .
- the OS may receive a request to recover the state information, block 330 , via a call_recover system call from the new or replacement process.
- the OS then invokes its verification process 340 with respect the new or replacement process. If the OS verifies that the new or replacement process is authorized to receive the state information, then such state information is transferred to the new process, block 350 . As explained above, in this case, the old or original process may then terminate. If the OS is unable to verify or authenticate the new process as being allowed to receive the state information of the old or original process, then the OS denies access to the state information and does not pass it on to the new process, block 360 . In this latter instance, to the extent the old or original process is still running at a given function level, it may not be terminated. In such a case where the old or original process crashed or need to be migrated to a remote computer for processing, the service process and any client applications being served may need to be restarted with new state information.
- the processes performed by blocks 340 and 350 comprises at least some of the processes that would be performed as part of the more general step or process of transferring ownership of state information from an old or original process to a new or replacement process.
- handles associated with resources associated with an old/original process as discussed herein including for example network sockets, database connections, process identifiers, file identifiers or job identifiers, are transferred to the new/replacement process.
- addresses may for example be remapped or socket descriptors may need to be provided (and/or translated) to the new/replacement process so that it can identify the socket the old/original process had used with the old process.
- FIG. 4 is an example flow diagram 400 in accordance with aspects of the disclosure. More specifically, FIG. 4 shows an example of verification process 340 . As shown, the verification process begins with receipt of a request for state from a new process, block 410 . The OS thereafter notifies a spawner of the old or original process that a new or replacement process seeks state information owned by the old/original process, block 420 . A spawner may also be considered a “launcher” or “parent.” It may comprise code storing state information in accordance with the disclosed technology. It may also be a separate server, a parent process, or the kernel itself.
- the kernel may store recovery data and a separate “launcher server” may be responsible for restarting a process and instructing the kernel to transfer the recovery data.
- launcher server may be responsible for restarting a process and instructing the kernel to transfer the recovery data.
- the spawner create the old/original process, it would have access to a token/key that the old process also has access to and provided to the OS in terms of establishing ownership of the old/original process.
- the spawner transmits the key/token to new/replacement process identified by the OS.
- the spawner provides the key/token to the new/replacement process.
- the OS compares that key/token with the key/token it previously received from the old/original process. If there is a match, the method proceeds to A (see FIG. 3 ). If there is no match, the process proceeds to B (see FIG. 3 ).
- FIG. 5 is an example flow diagram 500 in accordance with aspects of the disclosure. More specifically, FIG. 5 shows another example of verification process 340 .
- This process may find use in capability based OSs, such OSs generally use capability based security techniques.
- the OS receives a capability handle as part of the information provided in association with the call_store, block 520 .
- the OS thereafter passes the capability handle to a safekeeping process, block 530 .
- the safekeeping process thereafter transfers the capability handle to the new/replacement process, block 540 .
- the new process thereafter transfers the security information provided as part of the capability information to the OS, block 550 .
- the OS thereafter compares the security information with the key/token and/or other security information it previously received from the old/original process. If there is a match, the method proceeds to A (see FIG. 3 ). If there is no match, the process proceeds to B (see FIG. 3 ).
- FIG. 6 is an example flow diagram 600 in accordance with aspects of the disclosure.
- FIG. 6 shows a high level flow diagram for use in updating a portion of an OS or end-user software.
- the OS is notified of an update associated with an old/original active system component.
- a handshake is performed and includes the old/original component initiating transfer of state information and capabilities pertaining to active tasks that it may be performing.
- a new component is started.
- the old components is then terminated.
- FIG. 7 shows in more detail the sub-operations performed in block 610 of FIG. 6 .
- the OS is notified of an available update for a component currently running or active. This may be considered an old component or old instance associated with a service being performed. In general, a component may be thought of as some unit of execution, and an instance is that unit of execution actually running.
- a new instance/component is instantiated.
- the OS then notifies the old component/instance that the update is available. At this stage the notification stage of the process is completed and the method continues on to C, as is shown in FIG. 8 .
- FIG. 8 is an example flow diagram 800 in accordance with aspects of the disclosure. In particular, FIG. 8 describes in more detail blocks 620 , 630 and 640 of FIG. 6 .
- the old component/instance suspends work in response to notification, e.g., from the OS, that an update is available.
- the old component/instance may capture state information for transfer as part of call_store, e.g., zx_snapshot_store ( ), or serializing data for transfer to the new instance of the software (either over a channel, socket, file, shared memory region or other means of communication).
- the old component then transfer state information to the OS and notify the OS that the update may proceed.
- the two instances of the program e.g. old and new
- a handshake protocol may be implemented cooperatively (through program logic while the old and new program instances run concurrently) or non-cooperatively (through system intervention during which one or both instances is suspended while the transfer takes place).
- the new component detects the update and notifies the OS that the update is detected.
- the new component requests the state information previously received from the old component and stored by the OS. Such a request may be implemented via zx_snapshot_store ( ).
- the new component then loads the acquired state information and checks for compatibility. If compatibility is found at decision diamond 866 , then the new component notifies the OS that the update is ready, block 870 .
- a determination is made as to whether the state information has changed. If it has, processing proceeds to 850 and proceeds as previously discussed. If at decision diamond 874 , it is determined that the state has not changed, then at block 878 , the old component/instance is terminated.
- the new component/instance then takes over and operations proceed with the updated component, or software.
- the new component/instance notifies the OS of same, block 882 . Thereafter, the new component/instance is terminated, block 886 . Additionally, operations continue with the old components.
- the specific transfer mechanism is implementation specific, but common strategies would be: orthogonal, “safe-state,” or ad-hoc.
- the transfer may involve multiple round-trips, such as draining connection queues or incrementally transferring large pieces of data.
- a mechanism such as the one described above in relation to zx_snapshot_store( ), zx_snapshot_recover ( ) and/or zx_snapshot_initial ( ) may be useful to complete the final transfer of handles to the new process.
- An orthogonal strategy would persist program state without explicit synchronization operations.
- An example would be using a shared memory buffer as the only read/write runtime state.
- a component being updated could be paused or terminated by the system, and the shared memory buffer would be transferred to the new version.
- a “safe-state” strategy would use the incoming update notification to allow the program to halt its threads at specially denoted “safe places.” This process may be simplified for developers, e.g., the program's framework or the language runtime may be modified to support updates (similar to how garbage collected language runtimes have special “safepoint” annotations to determine when the garbage collector can run).
- Other ad-hoc persistence strategies may be used as well, including but not limited to explicitly serializing internal state when requested and sending it to the new instance.
- the data format used by the program may be forward-compatible, but otherwise can be defined on a per-program basis.
- the following properties may be found desirable: 1.
- the data may be updated in place. This avoids an expensive serialization/deserialization step during state transfer.
- Data may be freed and reused if the data is stored in place, ensuring a small memory footprint at the expense of garbage collection.
- Data is self-describing, so that updated programs can evolve their state over time.
- Protobuf and Flatbuffers may be useful options for self-describing formats, though they cannot be updated in-place.
- a more general “memory heap” implementation which can be as sophisticated as needed (with recounting, garbage collection, etc.), could support in-place updates and reusing space.
- the resumption of old tasks and taking on of new ones is entered when (and if) the hand-off completes successfully.
- the new instance takes over the responsibilities of the old instance. Shutting down old instances is entered regardless of the success of the handoff. If the handoff succeeded, the old instance may be terminated (either by cooperatively exiting or by explicit termination). If the hand-off fails, the old instance continues performing its responsibilities as before.
- the new instance may be terminated and restarted later or it may continue to run until the old instance eventually terminates and the new instance can take over its responsibilities without preservation of state and connections.
- the explicit check for state not changing of the handshake protocol permits implementations that allow the old component to continue serving requests, but if its state changes the handshake must be restarted. If forward progress does not need to be guaranteed, the implementation may avoid suspending work in progress in preparation for the update.
- This disclosure supports a type of cooperative persistence that may be found useful in solving real usability problems in modern systems. Users do not want to be interrupted to update software, even if that opens them up to security issues. Solving the problem using in accordance with this encourages developers to build small services that are independently updateable. The end result is a persistent operating system that may need to restart in very rare cases.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Hardware Redundancy (AREA)
- Stored Programmes (AREA)
Abstract
Description
- The present application is a continuation of U.S. patent application Ser. No. 17/331,177, filed May 26, 2021, which is a continuation of U.S. patent application Ser. No. 16/375,189, filed Apr. 4, 2019, now issued as U.S. Pat. No. 11,048,549, the disclosures of which are incorporated herein by reference.
- Within a typical computing environment computer programs or processes may at times crash (e.g., terminate unnaturally), need to be updated or need to be ported to a remote computer for processing. If a computer program or process is performing tasks, interruption of those tasks by one or more of the foregoing events may impact the performance of the computer program or process. For example, in a server-client environment, if state information (e.g., handles) is lost by any of the foregoing events, a client application may need to reestablish state information to restore or start anew the client application. This may also occur with server processes. Reestablishing state information may prove inefficient in terms of computing resources and time needed to have access to new resources, e.g., handles, virtual memory objects, etc.
- One aspect of the disclosed technology provides a computing system for transferring information between computing processes. The system comprises one or more computing devices, one or more computer readable storage media and program instructions, stored on the one or more computer readable storage media, for execution by at least one of the one or more computing devices. The program instructions comprise registering processing information associated with a first process within an operating system, requesting, by a second process after the first process has terminated, the processing information from the operating system, and transferring, by the operating system, ownership of the processing information to the second process.
- In this aspect of this technology, transferring ownership may comprise the operating system notifying a spawner of the first process that the second process requested the registered processing information.
- As a further example, the program instructions may further comprise transmitting, by the spawner a verification code to the second process. The program instructions may also comprise verifying that the second process is allowed to receive the first process processing information.
- In this aspect of this technology, transferring ownership may comprise the operating system receiving one or more capability handles as a portion of the registered processing information.
- As a further example, the program instructions may further comprise the operating system transferring the one or more capability handles to a safekeeping process and transferring, by the safekeeping process, the capability handle to the second process. The program instructions may also comprise the operating system transferring the one or more capability handles to a safekeeping process and transferring, by the safekeeping process, the capability handle to the second process.
- The program instructions may also further comprise the second process forwarding the one or more capability handles it received to the operating system and the operating system comparing information contained in the capability handle transferred by the safekeeping process to information contained in the capability handle forwarded by the second process.
- In this aspect of this technology, the program instructions may further comprise the operating system, in response to receiving notification of an update associated with the first process, notifying the first process of the update. In addition, the operating system may cause spawning of the second process based on the update. Further, in response to being notified of the update, the first process initiates registering the processing information. Further still, in response to detecting the update, the second process initiates requesting the processing information.
- In this aspect of the technology, the processing information may comprise state information. State information may generally comprise resources, e.g., handles, threads, memory objects and other data, established in running an old or original process or program that can be used in running a new or replacement process or program.
- In another aspect, the technology is a method for transferring information between computing processes. The method comprises registering processing information associated with a first process with an operating system; requesting, by a second process after the first process has terminated, the processing information from the operating system; and transferring, by the operating system, ownership of the processing information to the second process.
- In this aspect of the technology, transferring ownership comprises the operating system notifying a spawner of the first process that the second process requested the registered processing information. As an example, the method may also further comprise transmitting, by the spawner, a verification code to the second process and comparing, by the operating system, the verification code provided to the new process to a verification code associated with the first process.
- In accordance with this aspect of the technology, transferring ownership may comprise the operating system receiving one or more capability handles as a portion of the registered processing information.
- Further in accordance with this aspect of the technology, the operating system, in response to receiving notification of an update associated with the first process, notifying the first process of the update. Further still, the operating system may cause spawning of the second process based on the update. Also, in response to being notified of the update, the first process may initiate registering the processing information. Additionally, in response to detecting the update, the second process may initiate requesting the processing information.
-
FIG. 1 is an example diagram of a system in accordance with aspects of the disclosure. -
FIG. 2 is an example functional diagram of a system in accordance with aspects of the disclosure. -
FIG. 3 is an example flow diagram in accordance with aspects of the disclosure. -
FIG. 4 is an example flow diagram in accordance with aspects of the disclosure. -
FIG. 5 is an example flow diagram in accordance with aspects of the disclosure. -
FIG. 6 is an example flow diagram in accordance with aspects of the disclosure. -
FIG. 7 is an example flow diagram in accordance with aspects of the disclosure. -
FIG. 8 is an example flow diagram in accordance with aspects of the disclosure. - The technology relates to updating and/or restoring computer programs or processes in computer systems. Computer programs and processes may suffer errors and enter an unrecoverable state (e.g., “crash”) so that their execution has to be terminated unnaturally, their memory discarded and a new or replacement program or process be instantiated to take the place of the original or old program or process. In addition, at times, active or running programs or processes may need to undergo planned version upgrades or transfer execution of the program or process to one or more remote computers. Some programs or processes perform the function of “server” to other client programs or processes, e.g., taking in data, operating on such data and supplying results. In operation, a server process or program typically owns and maintains information, e.g., state information, across multiple exchanges with client processes or programs. The state information generally comprises resources, e.g., handles, threads, memory objects and other data, established in running a process or program. Such resources may be lost (or expire) when the process ends naturally (e.g., completes its function and exits) or unnaturally (e.g., crashes). In other instances, such resources may need to be transferred to another computer or maintained in the presence of an impending software upgrade. If state information is lost and unavailable to a server process or program that replaces a previous instantiation of a process or program that used such state information, clients may need to undertake complicated operations, perhaps working in concert with other clients, in order to restore the proper state to the replacement server process.
- In one instance, a process or program running on a computing device that is able to store or archive its state information in a form that can be recovered and used by a future process would allow for seamless and dynamic transfer of such state information in the face of crashes, planned upgrades or making use of remote computing resources. In particular, a function call may be provided by an operating system (“OS”) of a computing device that allows prior instantiated server processes (or more generally any process that performs a server or cooperative function to other processes) to store state information outside of its directly accessible memory. Such state information would contain sufficient state information necessary for a newly started or replacement server process to successfully replace a prior instantiated server process. Such a replacement server process would be able to successfully serve client requests even while a sequence of requests is taking place. State information generally comprises information that may be used to resume functioning of a given application without interruption. State information will typically be application or program specific, and would generally comprise a mixture of operating system resources (memory buffers, handles, channels, sockets) and the application state (e.g. authentication information, current operational settings (e.g., volume setting, video format, etc.), etc. For instance, in a user interface application, the state information may comprise a current layout of the interface; for a long-running computation the state may comprise a recent value computed and an algorithm for resuming the computation. Stated another way, state information generally comprises information that allows migration of an application's or program's state incrementally while the application or program runs and respond to requests.
- More specifically, state information (e.g., one or more handles/sockets or capabilities and other optional state information) may be stored by a prior instantiated or old process to the OS at any time. For example, the handle/socket or capability stored by the old process may include a handle to a virtual memory object (“VMO”) which would allow storage of additional data, which would be readable once the handle is retrieved and restored. Subsequently, in response to a request for a read function call from a properly validated successor process, the OS may perform the internal operations necessary to atomically transfer ownership of the transferred or stored state information to a replacement or new process, and allow the replacement or new process to read the state information (e.g., handles and other state information).
- With respect to transferring ownership to a replacement or new process, to maintain security a determination may be made by the OS to verify whether the new or replacement process has the necessary rights to access the state information of the old or original process. For instance, this may be achieved by use of one or more secret tokens or keys. More specifically, state information stored in association with a token may be read only by a new or replacement process that possesses the token. A spawner of a server process may, for example, provide the same key or token both the original or old process and the replacement or new process, which would have started after the original or old process was no longer running. In a capability-based OS, verification of access rights to the state information may be implemented by means of a capability. The capability would be provided to the OS as part of the function call that stores the original state information, passed to another process for safekeeping and then passed to new or replacement process allowing it to restore the original state information. In practice, a server manager could receive the capability and then pass it to new incarnations or instances of the server process. Alternatively, an application update process may receive the capability from an application that it was about to upgrade, and then pass the capability to the new application once it restarted.
- The OS may also provide as a feature translation of state information supplied by the old or original process to make them valid or readable to the new or replacement process. The translation feature may be provided as part of the OS's transferral of ownership between an old and a new process. Such translations may be performed similar to those that are done when passing state information, such as resources, between concurrent running processes.
- As an example, the storage or archiving of state information may be implemented using a system call such as zx_snapshot_store ( ), or more generally call_store ( ). Such a call would allow, for example, an array of handles and moderate amount of data to be stored. In this way, the state information being stored may be data light. Another system call such as zx_snapshot_recover ( ) or more generally call_recover ( ) may be implemented to allow a new or replacement process to read or obtain the state information previously owned by the old or original process.
- A server process may “checkpoint” its state after each new client connects and establishes state information for serving a sequence of requests. If the server process unexpectedly crashes or is terminated, a new or replacement server process would then be able to request the handles, which, since they were stored in the checkpoint service, would have been suspended rather than deleted when the old process died. In a case where a process wanted to checkpoint its state to guard against unexpected crashes, there may be multiple writes or stores for every read. Thus, a third system call zx_snapshot_initialize ( ) or more generally call_initialize, which would return a pair of handles. One handle would be passed to the old or original process and could be used for writing snapshots to the operating system via zx_snapshot_store ( ). The other handle would be passed to the “new” process and could be used, once, for passing to zx_snapshot_recover ( ). In addition, in the case of a server, the new or replacement process would also receive an additional handle of storing its own snapshots.
- In another instance, the technology may be implemented to facilitate updating parts or portions of an OS or end-user software without interrupting or having to restart the system. For example, as software evolves new features are typically added and errors, flaws or faults in the software must sometimes be fixed. Where the software that is being updated is a component of the entire system (e.g., the OS), updating may require re-starting the system. Re-starting the system may be inconvenient to a user at a given time, which may result in an update being delayed. This may expose the software and system to additional risks, e.g., security risks if the update is a security fix. In this instance, by employing the “snapshot” calls and/or other features described above, software may be updated transparently including, for example, without interrupting ongoing workflow. The other features may include one or more OS components that communicate through inter-process communication. The other features may also include a transition protocol for transferring forward-compatible state information (e.g., handles and other information) to an updated process. With regard to this latter feature, rather than explicitly writing state information to storage, e.g., such as a database, state information is written in a forward-compatible format to a memory buffer that can be transferred to a new process. As such, the persistence for the running software is maintained implicitly by the program without typically requiring explicit checkpointing or saving state information. The format of the forward-compatible buffer may be similar in principle to Protobuf and Flatbuffers, which provide forward compatible data serialization for remote procedure calls.
- This technology is applicable to system components (e.g., OS), for which in-place upgrades are typically ascribed more value, and non-system components (e.g., end-user applications). System components maintain, for example, a list of handles representing connections with clients, connections with other system components, and operating system resources used by the component itself. This technology may overcome a challenge in updating system components or bringing up a new version of the component that has access to and knows how to interpret a list of handles and internal state of the old instance or process.
- With regard to the updating aspect of the disclosed technology, the technology may be generally implemented by notifying the OS of an update, performing a handshake to initiate transfer of state and capabilities pertaining to active tasks being performed by the old instance or process and completing such transfer to the new/replacement instance or process, resuming old tasks and, if necessary, initiating new tasks by the new/replacement instance and terminating the old instance/replacement instance.
- One or more aspects of the disclosed technology may be implemented to improve computing technologies including server and client performance and/or OSs, such as for example, capability based OSs. For example, in recovering from server crashes, one or more clients may not, at the necessary moment, be in a state where the operations necessary to recover from a crash may be readily performed. In addition, the client functionality necessary to restore server state may be difficult to test adequately, particularly where clients may need to interact and server crashes may happen at random times. For example, it is not uncommon for process A to first give a resource to process B, which then passes it to the server. Process A may not monitor the server's health or know when it has crashed. Thus, to recover from the server crash, process B will have to interrupt whatever it is doing, request a new resource for process A, give that resource to the server, before process B can again use the server's functionality. One or more of the above disclosed features of this technology may avoid or at least mitigate the need to have another process interrupt the tasks it may be performing so that an interrupted process may recover from a server crash. In addition, the disclosed features of this technology may mitigate the effects of server crashes for which there was not full recovery as to avoid function degradation and/or improper operation elsewhere in the system. In addition, this technology mitigates security risks exposures caused by having processes exchange, for example, handle information outside the purview of the OS.
- One or more aspects of the disclosed technology may, for example, reduce the complexity of operations that may need to be performed on the client side and may result in simplification of the client. For example, there may be no need to recovery code on the client side as the OS would have state and other information necessary to have the new/replacement process take over the function at the client without noticeable impact on performance of the client application.
-
FIG. 1 is a pictorial diagram of anexample system 100 that includes a plurality ofcomputing devices storage system 150 connected via anetwork 160. As shown inFIG. 1 , each ofcomputing devices server computing device 110 includes one ormore processors 172,memory 174,instructions 176 anddata 178. - The
memory 174 stores information accessible by the one ormore processors 172, includinginstructions 176 anddata 178 that may be executed or otherwise used by the processor(s) 172. Thememory 174 may be of any type capable of storing information accessible by the processor, including a computing device-readable medium, or other medium that stores data that may be read with the aid of an electronic device, such as a hard-drive, memory card, ROM, RAM, DVD or other optical disks, as well as other write-capable and read-only memories. Systems and methods may include different combinations of the foregoing, whereby different portions of the instructions and data are stored on different types of media. - The
instructions 176 may be any set of instructions to be executed directly (such as machine code) or indirectly (such as scripts) by the processor. For example, the instructions may be stored as computing device code on the computing device-readable medium. In that regard, the terms “instructions” and “programs” may be used interchangeably herein. The instructions may be stored in object code format for direct processing by the processor, or in any other computing device language including scripts or collections of independent source code modules that are interpreted on demand or compiled in advance. Processes, functions, methods and routines of the instructions are explained in more detail below. - The
data 178 may be retrieved, stored or modified byprocessor 172 in accordance with theinstructions 176. As an example,data 178 associated withmemory 174 may comprise data used in supporting services for one or more client devices, e.g., 120, 130 or more. Such data may include data to support hosting web-based applications, file share services, communication services, gaming, sharing video or audio files, or any other networked based services. - The one or
more processor 172 may be any conventional processor, such as commercially available CPUs. Alternatively, the one or more processors may be a dedicated device such as an ASIC or other hardware-based processor. AlthoughFIG. 1 functionally illustrates the processor, memory, and other elements ofcomputing device 110 as being within the same block, it will be understood by those of ordinary skill in the art that the processor, computing device, or memory may actually include multiple processors, computing devices, or memories that may or may not be located or stored within the same physical housing. In one example, one ormore computing devices 110 may include one or more server computing devices having a plurality of computing devices, e.g., a load balanced server farm, that exchange information with different nodes of a network for the purpose of receiving, processing and transmitting the data to and from other computing devices. - The
network 160, and intervening nodes, may include various configurations and protocols including short range communication protocols such as Bluetooth™, Bluetooth™ LE, the Internet, World Wide Web, intranets, virtual private networks, wide area networks, local networks, private networks using communication protocols proprietary to one or more companies, Ethernet, WiFi and HTTP, and various combinations of the foregoing. Such communication may be facilitated by any device capable of transmitting data to and from other computing devices, such as modems and wireless interfaces. - As shown in
FIG. 1 , eachclient computing device displays -
Client computing device 140 may also be a workstation associated with the network devices, e.g., one or moreserver computing devices 110, and used for administration and/or maintenance. In this regard,client computing device 140 may be operated by a network administrator who supports, maintains and manages security associated withserver computing devices 110. With regard to maintenance, theclient computing device 140 may enable the network administrator to access information about the servers such as the current version of software running on the server and installing updates, patches, etc. Again, although only a single customer service work station is depicted inFIG. 1 , the system may actually include tens or hundreds of such workstations and network administrators. - Although the
client computing devices client computing device 120 may be a mobile phone or a device such as a wireless-enabled PDA, a tablet PC, a wearable computing device or system, or a netbook that is capable of obtaining information via the Internet or other networks. In another example,client computing device 130 may be a wearable computing system, such as a smartwatch. As an example the user may input information using a small keyboard, a keypad, microphone, using visual signals with a camera, or a touch screen. - As with
memory 174,storage system 150 can be of any type of computerized storage capable of storing information accessible by theserver computing devices 110, such as a hard-drive, memory card, ROM, RAM, DVD, CD-ROM, write-capable, and read-only memories. In addition,storage system 150 may include a distributed storage system where data is stored on a plurality of different storage devices which may be physically located at the same or different geographic locations.Storage system 150 may be connected to the computing devices via thenetwork 160 as shown, and/or may be directly connected to or incorporated into any of thecomputing devices Storage system 150 may store various types of information as described in more detail below. This information may be retrieved or otherwise accessed by one or more server computing devices, such as thedevices 110, and/or one or more client computing device, such as theclient computing device 120, in order to perform some or all of the features described herein. -
FIG. 2 is an example functional diagram of asystem 200 in accordance with aspects of the disclosure. Thesystem 200 includes one or more client computing devices 2101 through 210 m communicating overnetwork 220 to aserver computing device 240.Computing devices 210 may compriseclient computing device FIG. 1 .Network 220 may comprise one or more of the networks described in relation tonetwork 160.Server computing device 240 is shown functionally but may comprise aserver computing device 110 described in relation toFIG. 1 . WhileFIG. 2 provides an example with a singleserver computing device 240, thesystem 200 may comprise multiple server computing devices operating in parallel and/or in cooperation, and similarly, toserver computing device 240. -
Server computing device 240 includes anOS function 242.OS function 242 may comprise a kernel or microkernel 244 (including the case of capability based OS). The kernel comprises the inner core of the OS and typically has complete control over operation of the computer system and generally connects software applications to the hardware used to run such applications. A microkernel typically implements a smaller subset of functionality provided via a kernel.OS 242 communicates with one or more Server Processes (SP) 246.OS 242 also communicates with one or memory locations, 248, 250.Memory location 248 is used byOS 242 to operate and will be loaded with programs or instructions that are necessary forOS 242 to perform its function. For example,memory location 248 will typically be loaded with the kernel/microkernel code.Memory location 250 is memory set aside to store state information or data involved in restoring aserver process 246 in accordance with this technology. - In operation, for example, a server process, e.g., SPk, may issue a system call recognized by the
OS 242 as request for a service to store state information. Such a call may be generally referred to as call_store. More specifically, such a system call may be implemented as zx_snapshot_store ( ). When a server process issues such a system call toOS 242, the OS takes the necessary steps to receive and store state information associated with the server process (e.g., State Info.k). The state information generally comprises resources, e.g., may include handles, threads, memory objects and other data, established in running a process or program. Other data may for example include information about the settings for a client application supported by the server process, e.g., the volume or video quality setting for a video playing on a client device. Upon receiving the state information, theOS 242 then stores the state information into aprocess recovery memory 250 location. In this example, SPk may be considered the old or original process. It may issue a call_store or zx_snapshot_store periodically toOS 242 or when it detects a change in state information that is normally stored as part of this system call. - In the event SPk terminates, crashes or needs to updated for example, and needs to be replaced by server process SPk′, SPk′ may issue a system call to
OS 242 requesting recovery of the state information which SPk requested be stored byOS 242. The system call issued by SPk′ may be generally referred to as call_recovery and may be implemented as zx_snapshot_recovery ( ). In response to receipt of SPk′'s call_recovery request,OS 242 verifies that the SPk′s is allowed access to the information stored on behalf of SPk. If verification is successful, State Info.k is then provided byOS 242 to SPk′. SPk′ may then replace SPk and SPk, if not already terminated, may be terminated. SPk′ may then continue in its place and perform old and new tasks necessary to have the process previously supported by SPk run as normal. - In addition to the operations described above and illustrated in the figures, various operations will now be described. It should be understood that the following operations do not have to be performed in the precise order described below. Rather, various operations can be handled in a different order or simultaneously, and operations may also be added or omitted. For instance,
FIG. 3 is an example flow diagram 300 in accordance with aspects of the disclosure. More specifically,FIG. 3 shows a flow of amethod 300 for storing and retrieving state information. - As shown, at
block 310,OS 310 receives a request from a server process to store state information associated with an original/old process currently running. The state information storage request received at the OS in accordance may be in accordance with the system call, call_store, described above. The OS would then take the necessary steps to have the server process provide the state information associated with an original/old process and store it for possibly later usage, block 320. Subsequently, the OS may receive a request to recover the state information, block 330, via a call_recover system call from the new or replacement process. - At
block 340, the OS then invokes itsverification process 340 with respect the new or replacement process. If the OS verifies that the new or replacement process is authorized to receive the state information, then such state information is transferred to the new process, block 350. As explained above, in this case, the old or original process may then terminate. If the OS is unable to verify or authenticate the new process as being allowed to receive the state information of the old or original process, then the OS denies access to the state information and does not pass it on to the new process, block 360. In this latter instance, to the extent the old or original process is still running at a given function level, it may not be terminated. In such a case where the old or original process crashed or need to be migrated to a remote computer for processing, the service process and any client applications being served may need to be restarted with new state information. - The processes performed by
blocks -
FIG. 4 is an example flow diagram 400 in accordance with aspects of the disclosure. More specifically,FIG. 4 shows an example ofverification process 340. As shown, the verification process begins with receipt of a request for state from a new process, block 410. The OS thereafter notifies a spawner of the old or original process that a new or replacement process seeks state information owned by the old/original process, block 420. A spawner may also be considered a “launcher” or “parent.” It may comprise code storing state information in accordance with the disclosed technology. It may also be a separate server, a parent process, or the kernel itself. It may also be some combination of the previous working server and/or kernel, for example: 1) the entity storing the recovery data, 2) the entity responsible for starting a process, and/or 3) the entity responsible for transferring the recovery data to the new process. For example, the kernel may store recovery data and a separate “launcher server” may be responsible for restarting a process and instructing the kernel to transfer the recovery data. As the spawner created the old/original process, it would have access to a token/key that the old process also has access to and provided to the OS in terms of establishing ownership of the old/original process. Atblock 440, the spawner transmits the key/token to new/replacement process identified by the OS. At block 450, the spawner provides the key/token to the new/replacement process. Atblock 460, having received the key/token from the new/replacement process, the OS compares that key/token with the key/token it previously received from the old/original process. If there is a match, the method proceeds to A (seeFIG. 3 ). If there is no match, the process proceeds to B (seeFIG. 3 ). -
FIG. 5 is an example flow diagram 500 in accordance with aspects of the disclosure. More specifically,FIG. 5 shows another example ofverification process 340. This process may find use in capability based OSs, such OSs generally use capability based security techniques. As shown inFIG. 5 , in this example, the OS receives a capability handle as part of the information provided in association with the call_store, block 520. The OS thereafter passes the capability handle to a safekeeping process, block 530. The safekeeping process thereafter transfers the capability handle to the new/replacement process, block 540. The new process thereafter transfers the security information provided as part of the capability information to the OS, block 550. Atblock 560, The OS thereafter compares the security information with the key/token and/or other security information it previously received from the old/original process. If there is a match, the method proceeds to A (seeFIG. 3 ). If there is no match, the process proceeds to B (seeFIG. 3 ). -
FIG. 6 is an example flow diagram 600 in accordance with aspects of the disclosure. In particular,FIG. 6 shows a high level flow diagram for use in updating a portion of an OS or end-user software. As shown atblock 610, the OS is notified of an update associated with an old/original active system component. Atblock 620, a handshake is performed and includes the old/original component initiating transfer of state information and capabilities pertaining to active tasks that it may be performing. Atblock 630, a new component is started. Atblock 640, the old components is then terminated. - Turning now to
FIG. 7 , there is shown an example flow diagram 700 in accordance with aspects of the disclosure.FIG. 7 shows in more detail the sub-operations performed inblock 610 ofFIG. 6 . In particular, atblock 710, the OS is notified of an available update for a component currently running or active. This may be considered an old component or old instance associated with a service being performed. In general, a component may be thought of as some unit of execution, and an instance is that unit of execution actually running. Atblock 720, a new instance/component is instantiated. Atblock 730, the OS then notifies the old component/instance that the update is available. At this stage the notification stage of the process is completed and the method continues on to C, as is shown inFIG. 8 . -
FIG. 8 . is an example flow diagram 800 in accordance with aspects of the disclosure. In particular,FIG. 8 describes in more detail blocks 620, 630 and 640 ofFIG. 6 . Atblock 810, the old component/instance suspends work in response to notification, e.g., from the OS, that an update is available. Atblock 820, the old component/instance may capture state information for transfer as part of call_store, e.g., zx_snapshot_store ( ), or serializing data for transfer to the new instance of the software (either over a channel, socket, file, shared memory region or other means of communication). Atblock 830, the old component then transfer state information to the OS and notify the OS that the update may proceed. As such, at this point the two instances of the program, e.g. old and new, proceed to complete a handshake protocol. Such a protocol may be implemented cooperatively (through program logic while the old and new program instances run concurrently) or non-cooperatively (through system intervention during which one or both instances is suspended while the transfer takes place). - At
block 840, the new component detects the update and notifies the OS that the update is detected. Atblock 850, the new component then requests the state information previously received from the old component and stored by the OS. Such a request may be implemented via zx_snapshot_store ( ). Atblock 860, the new component then loads the acquired state information and checks for compatibility. If compatibility is found atdecision diamond 866, then the new component notifies the OS that the update is ready, block 870. Atblock 874, a determination is made as to whether the state information has changed. If it has, processing proceeds to 850 and proceeds as previously discussed. If atdecision diamond 874, it is determined that the state has not changed, then atblock 878, the old component/instance is terminated. Atblock 880, the new component/instance then takes over and operations proceed with the updated component, or software. - Returning to
decision diamond 866, if incompatibility is detected, the new component/instance notifies the OS of same, block 882. Thereafter, the new component/instance is terminated, block 886. Additionally, operations continue with the old components. - As discussed above, the transfer of state information from the old component/instance to the new component/instance takes place via
blocks - The specific transfer mechanism is implementation specific, but common strategies would be: orthogonal, “safe-state,” or ad-hoc. The transfer may involve multiple round-trips, such as draining connection queues or incrementally transferring large pieces of data. In all cases, a mechanism such as the one described above in relation to zx_snapshot_store( ), zx_snapshot_recover ( ) and/or zx_snapshot_initial ( ) may be useful to complete the final transfer of handles to the new process.
- An orthogonal strategy would persist program state without explicit synchronization operations. An example would be using a shared memory buffer as the only read/write runtime state. A component being updated could be paused or terminated by the system, and the shared memory buffer would be transferred to the new version. A “safe-state” strategy would use the incoming update notification to allow the program to halt its threads at specially denoted “safe places.” This process may be simplified for developers, e.g., the program's framework or the language runtime may be modified to support updates (similar to how garbage collected language runtimes have special “safepoint” annotations to determine when the garbage collector can run). Other ad-hoc persistence strategies may be used as well, including but not limited to explicitly serializing internal state when requested and sending it to the new instance.
- The data format used by the program may be forward-compatible, but otherwise can be defined on a per-program basis. The following properties may be found desirable: 1. The data may be updated in place. This avoids an expensive serialization/deserialization step during state transfer. 2. Data may be freed and reused if the data is stored in place, ensuring a small memory footprint at the expense of garbage collection. 3. Data is self-describing, so that updated programs can evolve their state over time.
- Protobuf and Flatbuffers may be useful options for self-describing formats, though they cannot be updated in-place. A more general “memory heap” implementation, which can be as sophisticated as needed (with recounting, garbage collection, etc.), could support in-place updates and reusing space. The resumption of old tasks and taking on of new ones is entered when (and if) the hand-off completes successfully. The new instance takes over the responsibilities of the old instance. Shutting down old instances is entered regardless of the success of the handoff. If the handoff succeeded, the old instance may be terminated (either by cooperatively exiting or by explicit termination). If the hand-off fails, the old instance continues performing its responsibilities as before. The new instance may be terminated and restarted later or it may continue to run until the old instance eventually terminates and the new instance can take over its responsibilities without preservation of state and connections. The explicit check for state not changing of the handshake protocol permits implementations that allow the old component to continue serving requests, but if its state changes the handshake must be restarted. If forward progress does not need to be guaranteed, the implementation may avoid suspending work in progress in preparation for the update.
- This disclosure supports a type of cooperative persistence that may be found useful in solving real usability problems in modern systems. Users do not want to be interrupted to update software, even if that opens them up to security issues. Solving the problem using in accordance with this encourages developers to build small services that are independently updateable. The end result is a persistent operating system that may need to restart in very rare cases.
- Unless otherwise stated, the foregoing alternative examples are not mutually exclusive, but may be implemented in various combinations to achieve unique advantages. As these and other variations and combinations of the features discussed above can be utilized without departing from the subject matter defined by the claims, the foregoing description of the embodiments should be taken by way of illustration rather than by way of limitation of the subject matter defined by the claims. In addition, the provision of the examples described herein, as well as clauses phrased as “such as,” “including” and the like, should not be interpreted as limiting the subject matter of the claims to the specific examples; rather, the examples are intended to illustrate only one of many possible embodiments. Further, the same reference numbers in different drawings can identify the same or similar elements.
Claims (20)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US18/355,826 US20230359486A1 (en) | 2019-04-04 | 2023-07-20 | Transferral Of Process State And/Or Components In Computing Environments |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/375,189 US11048549B2 (en) | 2019-04-04 | 2019-04-04 | Transferral of process state and/or components in computing environments |
US17/331,177 US11755364B2 (en) | 2019-04-04 | 2021-05-26 | Transferral of process state and/or components in computing environments |
US18/355,826 US20230359486A1 (en) | 2019-04-04 | 2023-07-20 | Transferral Of Process State And/Or Components In Computing Environments |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US17/331,177 Continuation US11755364B2 (en) | 2019-04-04 | 2021-05-26 | Transferral of process state and/or components in computing environments |
Publications (1)
Publication Number | Publication Date |
---|---|
US20230359486A1 true US20230359486A1 (en) | 2023-11-09 |
Family
ID=68502057
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/375,189 Active 2039-08-05 US11048549B2 (en) | 2019-04-04 | 2019-04-04 | Transferral of process state and/or components in computing environments |
US17/331,177 Active 2039-06-28 US11755364B2 (en) | 2019-04-04 | 2021-05-26 | Transferral of process state and/or components in computing environments |
US18/355,826 Pending US20230359486A1 (en) | 2019-04-04 | 2023-07-20 | Transferral Of Process State And/Or Components In Computing Environments |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/375,189 Active 2039-08-05 US11048549B2 (en) | 2019-04-04 | 2019-04-04 | Transferral of process state and/or components in computing environments |
US17/331,177 Active 2039-06-28 US11755364B2 (en) | 2019-04-04 | 2021-05-26 | Transferral of process state and/or components in computing environments |
Country Status (4)
Country | Link |
---|---|
US (3) | US11048549B2 (en) |
EP (1) | EP3931700A1 (en) |
CN (1) | CN113661482B (en) |
WO (1) | WO2020204997A1 (en) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210124821A1 (en) * | 2019-10-29 | 2021-04-29 | Facebook Technologies, Llc | Operating System Implementation of Language to Describe Permissions |
JP7313321B2 (en) * | 2020-08-25 | 2023-07-24 | 株式会社日立製作所 | Storage system and data management method |
CN114189357B (en) * | 2021-11-16 | 2023-07-14 | 苏州浪潮智能科技有限公司 | Registration message processing method, device, computer equipment and storage medium |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110202905A1 (en) * | 2009-09-30 | 2011-08-18 | Amitt Mahajan | Apparatuses, methods and systems for an api call abstractor |
US20120109914A1 (en) * | 2010-10-27 | 2012-05-03 | Antonio Lain | Version mismatch delay and update for a distributed system |
US20130332886A1 (en) * | 2012-06-08 | 2013-12-12 | Apple Inc. | Identification of recently downloaded content |
US20140047425A1 (en) * | 2012-08-07 | 2014-02-13 | Microsoft Corporation | Initiating update operations |
US8839222B1 (en) * | 2011-09-21 | 2014-09-16 | Amazon Technologies, Inc. | Selecting updates for deployment to a programmable execution service application |
US20140289333A1 (en) * | 2013-03-21 | 2014-09-25 | Nextbit Systems Inc. | Mechanism for sharing states of applications and devices across different user profiles |
US20150006854A1 (en) * | 2013-06-28 | 2015-01-01 | International Business Machines Corporation | Predictive fetching and decoding for selected return instructions |
US20150074766A1 (en) * | 2013-09-09 | 2015-03-12 | Lenovo (Beijing) Co., Ltd. | Information processing method and apparatus |
US20150248284A1 (en) * | 2014-03-03 | 2015-09-03 | Google Inc. | Methods and Systems for Updating Components on a Computing Device |
US20150293962A1 (en) * | 2014-04-15 | 2015-10-15 | Google Inc. | Methods for In-Place Access of Serialized Data |
US20160132310A1 (en) * | 2014-11-07 | 2016-05-12 | Amazon Technologies, Inc. | Dynamic reconstruction of application state upon application re-launch |
US20160283198A1 (en) * | 2012-10-16 | 2016-09-29 | Citrix Systems, Inc. | Wrapping an application with field-programmable business logic |
US20190028462A1 (en) * | 2017-07-21 | 2019-01-24 | International Business Machines Corporation | Privacy-aware id gateway |
US20190171439A1 (en) * | 2017-03-21 | 2019-06-06 | Microsoft Technology Licensing, Llc | Optimizing feature deployment based on usage pattern |
US10552141B1 (en) * | 2018-02-26 | 2020-02-04 | Amazon Technologies, Inc. | Upgrading an execution environment for event-driven functions |
Family Cites Families (66)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0365728B1 (en) * | 1988-10-28 | 1993-12-29 | International Business Machines Corporation | Resource access for a multiprocessing computer system |
JPH0833799B2 (en) * | 1988-10-31 | 1996-03-29 | 富士通株式会社 | Data input / output control method |
US5961582A (en) * | 1994-10-25 | 1999-10-05 | Acorn Technologies, Inc. | Distributed and portable execution environment |
SE504943C2 (en) * | 1994-12-09 | 1997-06-02 | Ericsson Telefon Ab L M | Synchronization procedure that permits state transfer |
US5809248A (en) * | 1995-07-05 | 1998-09-15 | Sun Microsystems, Inc. | Method and apparatus for front end navigator and network architecture for performing functions on distributed files in a computer network |
US6314567B1 (en) * | 1998-11-13 | 2001-11-06 | Hewlett-Packard Company | Apparatus and method for transferring state data when performing on-line replacement of a running program code and data |
GB9825102D0 (en) * | 1998-11-16 | 1999-01-13 | Insignia Solutions Plc | Computer system |
US7013454B2 (en) * | 1999-02-22 | 2006-03-14 | Sun Microsystems, Inc. | Thread suspension system and method using trapping instructions |
US6513115B2 (en) * | 1999-11-17 | 2003-01-28 | International Business Machines Corporation | System for reconfiguring an existing server process without ending and restarting |
US7296073B1 (en) * | 2000-09-13 | 2007-11-13 | Network Appliance, Inc. | Mechanism to survive server failures when using the CIFS protocol |
GB0304628D0 (en) * | 2003-02-28 | 2003-04-02 | Imec Inter Uni Micro Electr | Method for hardware-software multitasking on a reconfigurable computing platform |
US20040003085A1 (en) * | 2002-06-26 | 2004-01-01 | Joseph Paul G. | Active application socket management |
TWI227441B (en) * | 2002-10-11 | 2005-02-01 | Ambit Microsystems Corp | Firmware upgrade method for digital subscriber line device |
US7484208B1 (en) * | 2002-12-12 | 2009-01-27 | Michael Nelson | Virtual machine migration |
US20040230661A1 (en) * | 2003-01-29 | 2004-11-18 | Gus Rashid | Rules based notification system |
TWI227858B (en) * | 2003-04-29 | 2005-02-11 | Via Tech Inc | Method for updating BIOS |
US8020163B2 (en) * | 2003-06-02 | 2011-09-13 | Interuniversitair Microelektronica Centrum (Imec) | Heterogeneous multiprocessor network on chip devices, methods and operating systems for control thereof |
US7225448B2 (en) * | 2003-08-14 | 2007-05-29 | Lenovo (Singapore) Pte. Ltd. | System and method for hibernating application state data on removable module |
US20050050170A1 (en) * | 2003-08-29 | 2005-03-03 | International Business Machines Corporation | Method and apparatus for securely conducting digital property trade |
US7698229B2 (en) * | 2003-08-29 | 2010-04-13 | International Business Machines Corporation | Method and apparatus for trading digital items in a network data processing system |
US8095826B1 (en) | 2004-06-29 | 2012-01-10 | Symantec Operating Corporation | Method and apparatus for providing in-memory checkpoint services within a distributed transaction |
US20060070055A1 (en) * | 2004-09-24 | 2006-03-30 | Hodder Leonard B | Method of updating printer firmware and printing device employing the method |
US8024605B2 (en) * | 2005-01-24 | 2011-09-20 | Oracle International Corporation | To server processes |
US7818736B2 (en) * | 2005-09-14 | 2010-10-19 | International Business Machines Corporation | Dynamic update mechanisms in operating systems |
US9497247B2 (en) * | 2006-03-06 | 2016-11-15 | Ca, Inc. | Transferring session state information between two or more web-based applications of a server system |
US7814495B1 (en) | 2006-03-31 | 2010-10-12 | V Mware, Inc. | On-line replacement and changing of virtualization software |
WO2007130416A2 (en) * | 2006-04-29 | 2007-11-15 | Navio Systems, Inc. | Title-enabled networking |
WO2007146710A2 (en) * | 2006-06-08 | 2007-12-21 | Hewlett-Packard Development Company, L.P. | Device management in a network |
WO2008019501A1 (en) * | 2006-08-17 | 2008-02-21 | Research In Motion Limited | Enhanced user interface manager and method for managing non-contemporaneous user interface modules |
US8127316B1 (en) | 2006-11-30 | 2012-02-28 | Quest Software, Inc. | System and method for intercepting process creation events |
GB2445168A (en) * | 2006-12-29 | 2008-07-02 | Symbian Software Ltd | Loading resource administer program into main or higher memory depending on the type of usage requests being sent to the program. |
CA2678016C (en) * | 2007-02-26 | 2014-01-14 | Groupe Gecko Alliance Inc. | A method, device and system for use in configuring a bathing unit controller |
CN101369241A (en) | 2007-09-21 | 2009-02-18 | 中国科学院计算技术研究所 | A cluster fault-tolerant system, device and method |
KR101571001B1 (en) * | 2008-10-01 | 2015-11-23 | 파나소닉 주식회사 | Reproduction device |
JP5081786B2 (en) * | 2008-10-20 | 2012-11-28 | 株式会社日立製作所 | Information providing method and system |
US8954977B2 (en) * | 2008-12-09 | 2015-02-10 | Intel Corporation | Software-based thread remapping for power savings |
US20100274858A1 (en) * | 2009-04-27 | 2010-10-28 | Nokia Corporation | Mid-service sharing |
CN102405475B (en) * | 2009-07-16 | 2015-07-29 | 松下电器产业株式会社 | Access control apparatus, access control method, program, recording medium and integrated circuit |
US9697042B2 (en) * | 2010-07-30 | 2017-07-04 | Sap Se | Extensibility of business process and application logic |
US8719559B2 (en) | 2010-10-13 | 2014-05-06 | International Business Machines Corporation | Memory tagging and preservation during a hot upgrade |
US8924965B2 (en) * | 2011-01-07 | 2014-12-30 | Red Hat Israel, Ltd. | Memory state transfer of virtual machine-controlled peripherals during migrations of the virtual machine |
CN102625297B (en) * | 2011-01-27 | 2016-01-13 | 腾讯科技(深圳)有限公司 | For identity management method and the device of mobile terminal |
US8910177B2 (en) * | 2011-04-14 | 2014-12-09 | Advanced Micro Devices, Inc. | Dynamic mapping of logical cores |
US9104460B2 (en) * | 2011-05-31 | 2015-08-11 | Red Hat, Inc. | Inter-cloud live migration of virtualization systems |
US8909912B2 (en) * | 2011-07-29 | 2014-12-09 | Cisco Technology, Inc. | Apparatus and method for configuring a target machine with captured operational state comprising a static machine profile and a dynamic machine state to continue operations of a source machine |
US9462466B2 (en) * | 2011-09-29 | 2016-10-04 | Israel L'Heureux | Gateway router supporting session hand-off and content sharing among clients of a local area network |
US9323563B2 (en) * | 2012-02-28 | 2016-04-26 | Red Hat Israel, Ltd. | Determining virtual machine migration in view of a migration rule |
US9152410B2 (en) | 2012-06-21 | 2015-10-06 | Vaibhav KHANDELWAL | Auto-update while running client interface with handshake |
US9152458B1 (en) * | 2012-08-30 | 2015-10-06 | Google Inc. | Mirrored stateful workers |
US9049265B1 (en) * | 2012-12-26 | 2015-06-02 | Google Inc. | Serving remote access to storage resources |
US9455879B1 (en) * | 2013-03-04 | 2016-09-27 | Amazon Technologies, Inc. | Validating changes to attributes for computing resources |
US9311326B2 (en) * | 2013-04-12 | 2016-04-12 | Alterante, Inc. | Virtual file system for automated data replication and review |
US9591060B1 (en) * | 2013-06-04 | 2017-03-07 | Ca, Inc. | Transferring applications between computer systems |
KR102043641B1 (en) * | 2013-07-08 | 2019-11-13 | 삼성전자 주식회사 | Operating Method For Nearby Function and Electronic Device supporting the same |
US20160149854A1 (en) * | 2013-07-12 | 2016-05-26 | Telefonaktiebolaget L M Ericsson (Publ) | Framework for Application to Application Interworking in the M2M World |
US9292367B2 (en) * | 2014-04-08 | 2016-03-22 | Microsoft Corporation | Efficient migration of client-side web state |
US9652328B2 (en) | 2014-05-12 | 2017-05-16 | International Business Machines Corporation | Restoring an application from a system dump file |
US9847990B1 (en) * | 2014-07-18 | 2017-12-19 | Google Inc. | Determining, by a remote system, applications provided on a device based on association with a common identifier |
EP3373508B1 (en) * | 2015-11-05 | 2020-11-04 | Mitsubishi Electric Corporation | Security device and security method |
US10671630B2 (en) * | 2016-05-09 | 2020-06-02 | Sap Se | External access to database container artifacts |
US10083098B1 (en) * | 2016-06-07 | 2018-09-25 | Sprint Communications Company L.P. | Network function virtualization (NFV) virtual network function (VNF) crash recovery |
US10915553B2 (en) * | 2017-01-11 | 2021-02-09 | Microsoft Technology Licensing, Llc | Multi-application state navigation |
US10261780B2 (en) | 2017-05-01 | 2019-04-16 | Google Llc | Transparent upgrade of a system service or application |
US9960837B1 (en) * | 2017-07-19 | 2018-05-01 | Vector Launch Inc. | Pseudo-geosynchronous configurations in satellite platforms |
JP2019191931A (en) * | 2018-04-25 | 2019-10-31 | 富士通株式会社 | Information processing system, input value verification support program, and input value verification program |
US11971874B2 (en) * | 2019-01-31 | 2024-04-30 | Salesforce, Inc. | Systems, methods, and apparatuses for implementing efficient storage and validation of data and metadata within a blockchain using distributed ledger technology (DLT) |
-
2019
- 2019-04-04 US US16/375,189 patent/US11048549B2/en active Active
- 2019-10-22 CN CN201980095201.5A patent/CN113661482B/en active Active
- 2019-10-22 EP EP19801177.7A patent/EP3931700A1/en active Pending
- 2019-10-22 WO PCT/US2019/057405 patent/WO2020204997A1/en unknown
-
2021
- 2021-05-26 US US17/331,177 patent/US11755364B2/en active Active
-
2023
- 2023-07-20 US US18/355,826 patent/US20230359486A1/en active Pending
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110202905A1 (en) * | 2009-09-30 | 2011-08-18 | Amitt Mahajan | Apparatuses, methods and systems for an api call abstractor |
US20120109914A1 (en) * | 2010-10-27 | 2012-05-03 | Antonio Lain | Version mismatch delay and update for a distributed system |
US8839222B1 (en) * | 2011-09-21 | 2014-09-16 | Amazon Technologies, Inc. | Selecting updates for deployment to a programmable execution service application |
US20130332886A1 (en) * | 2012-06-08 | 2013-12-12 | Apple Inc. | Identification of recently downloaded content |
US20140047425A1 (en) * | 2012-08-07 | 2014-02-13 | Microsoft Corporation | Initiating update operations |
US20160283198A1 (en) * | 2012-10-16 | 2016-09-29 | Citrix Systems, Inc. | Wrapping an application with field-programmable business logic |
US20140289333A1 (en) * | 2013-03-21 | 2014-09-25 | Nextbit Systems Inc. | Mechanism for sharing states of applications and devices across different user profiles |
US20150006854A1 (en) * | 2013-06-28 | 2015-01-01 | International Business Machines Corporation | Predictive fetching and decoding for selected return instructions |
US20150074766A1 (en) * | 2013-09-09 | 2015-03-12 | Lenovo (Beijing) Co., Ltd. | Information processing method and apparatus |
US20150248284A1 (en) * | 2014-03-03 | 2015-09-03 | Google Inc. | Methods and Systems for Updating Components on a Computing Device |
US20150293962A1 (en) * | 2014-04-15 | 2015-10-15 | Google Inc. | Methods for In-Place Access of Serialized Data |
US20160132310A1 (en) * | 2014-11-07 | 2016-05-12 | Amazon Technologies, Inc. | Dynamic reconstruction of application state upon application re-launch |
US20190171439A1 (en) * | 2017-03-21 | 2019-06-06 | Microsoft Technology Licensing, Llc | Optimizing feature deployment based on usage pattern |
US20190028462A1 (en) * | 2017-07-21 | 2019-01-24 | International Business Machines Corporation | Privacy-aware id gateway |
US10552141B1 (en) * | 2018-02-26 | 2020-02-04 | Amazon Technologies, Inc. | Upgrading an execution environment for event-driven functions |
Also Published As
Publication number | Publication date |
---|---|
US20200319918A1 (en) | 2020-10-08 |
EP3931700A1 (en) | 2022-01-05 |
CN113661482A (en) | 2021-11-16 |
US11755364B2 (en) | 2023-09-12 |
WO2020204997A1 (en) | 2020-10-08 |
CN113661482B (en) | 2025-03-18 |
US20210286645A1 (en) | 2021-09-16 |
US11048549B2 (en) | 2021-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102430869B1 (en) | Live migration of clusters in containerized environments | |
US20230359486A1 (en) | Transferral Of Process State And/Or Components In Computing Environments | |
US11907254B2 (en) | Provisioning and managing replicated data instances | |
US9229707B2 (en) | Zero downtime mechanism for software upgrade of a distributed computer system | |
US9473598B2 (en) | Network connection failover during application service interruption | |
US11275599B1 (en) | Hypervisor remote offload for VM data migration between storage devices | |
US20070220323A1 (en) | System and method for highly available data processing in cluster system | |
US8504873B1 (en) | Method and apparatus for providing in-memory checkpoint services within a distributed transaction | |
JP2002328813A (en) | How to modify the program | |
US7783921B2 (en) | Code recovery system and method | |
CN112965790B (en) | PXE protocol-based virtual machine starting method and electronic equipment | |
US20220179790A1 (en) | Fault tolerant cluster data handling | |
US11663091B2 (en) | Transparent database session recovery with client-side caching | |
US11593030B2 (en) | Cross-stream transactions in a streaming data storage system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: GOOGLE LLC, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BROWN, JEFFREY;JOHNSON, CHRISTOPHER;PHOENIX, CHRISTOPHER JONATHAN;SIGNING DATES FROM 20190402 TO 20190403;REEL/FRAME:064329/0933 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: ADVISORY ACTION MAILED |
|
STCV | Information on status: appeal procedure |
Free format text: NOTICE OF APPEAL FILED |
|
STCV | Information on status: appeal procedure |
Free format text: APPEAL BRIEF (OR SUPPLEMENTAL BRIEF) ENTERED AND FORWARDED TO EXAMINER |
|
STCV | Information on status: appeal procedure |
Free format text: EXAMINER'S ANSWER TO APPEAL BRIEF MAILED |
|
STCV | Information on status: appeal procedure |
Free format text: ON APPEAL -- AWAITING DECISION BY THE BOARD OF APPEALS |