Quick start system
By capturing device memory snapshots and using snapshots instead of reloading the program during restart, the problem of long boot time for user equipment is solved, and the system is quickly started and the user experience is improved.
Patent Information
- Application Number
- CN202380062413.X
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Priority Date
- 2022-08-30
- Filing Date
- 2023-08-16
- Publication Date
- 2025-05-27
AI Technical Summary
User devices such as smart TVs and streaming media players take a long time to boot because a large number of programs need to be loaded into memory, and each restart requires reloading of programs, wasting computing resources and time.
By capturing snapshots of device memory, monitoring device operations, determining program updates, and using snapshots instead of reloading programs when the device restarts, reducing startup time and resource consumption.
The system is quickly started, reducing device startup time and resource consumption, and improving user experience.
Smart Images

Figure CN120051997A_ABST
Abstract
Description
BACKGROUND OF THE INVENTION
[0001] User devices such as smart TVs and streaming players typically take a long time to boot because a large number of programs usually need to be loaded into memory. Each time the device restarts, the programs operating on the device need to be reloaded into memory, which wastes computing resources and time. Users starting these devices from a restart or power-off state have no choice but to wait until the device's boot process is complete before they can start using the device. This waiting time during cold boot typically degrades the user experience of the device and may also consume unnecessary resources. Reducing the time required for cold boot of the device and reducing the resources required for the boot process would be beneficial. SUMMARY OF THE INVENTION
[0002] Embodiments of systems, devices, articles of manufacture, methods, and / or computer program products for quickly starting a system are provided herein, and / or combinations and sub-combinations thereof.
[0003] Example embodiments operate as follows: Determine that one or more programs have been loaded into memory at device startup. Capture a snapshot of the memory including the loaded programs. Monitor the operation of the device after the snapshot is captured. Determine that a first program among the programs has been updated during the monitoring. Detect a restart of the device, wherein the snapshot is loaded into memory to replace loading one or more programs, and wherein the first program is updated during the restart of the device. BRIEF DESCRIPTION OF THE DRAWINGS
[0004] The drawings are incorporated herein and form a part of the specification.
[0005] Figure 1 A block diagram of a multimedia environment according to some embodiments is shown.
[0006] Figure 2 A block diagram of an example media device according to some embodiments is shown.
[0007] Figure 3 A block diagram of an example Fast Boot System (FBS) according to some embodiments is shown.
[0008] Figure 4 A flowchart of an example operation of a Fast Boot System (FBS) according to some embodiments is shown.
[0009] Figure 5 An example computer system for implementing various embodiments is shown.
[0010] In the drawings, like reference numerals generally represent the same or similar elements. Additionally, generally the leftmost digit of a reference numeral indicates the drawing in which the reference numeral first appears. Detailed implementation manners
[0011] Embodiments of systems, apparatuses, devices, methods, and / or computer program products for quickly starting a system are provided herein, and / or combinations and sub - combinations thereof.
[0012] Various embodiments of the present disclosure may use Figure 1 the multimedia environment 102 shown to implement and / or may be Figure 1 a part of the multimedia environment 102 shown. However, it should be noted that the multimedia environment 102 is for illustrative purposes only and is not restrictive. Based on the teachings contained herein, those skilled in the relevant art should understand that embodiments of the present disclosure may be implemented using an environment different from the multimedia environment 102 and / or may be a part of that environment, and / or may be implemented as an additional environment to the multimedia environment 102. An example of the multimedia environment 102 will now be described.
[0013] Multimedia environment
[0014] Figure 1 A block diagram of a multimedia environment 102 according to some embodiments is shown. In a non - restrictive example, the multimedia environment 102 may be for streaming media. However, the present disclosure is applicable to any type of media (alternatively or additionally to streaming media), as well as any mechanism, means, protocol, method, and / or process for distributing media.
[0015] The multimedia environment 102 may include one or more media systems 104. The media system 104 may represent a home room, kitchen, backyard, home theater, school classroom, library, car, boat, bus, airplane, cinema, stadium, auditorium, park, bar, restaurant, or any other location or space where it is desired to receive and play streaming media content. One or more users 132 may operate the media system 104 to select and consume content.
[0016] Each media system 104 may include one or more media devices 106, and each media device 106 is coupled to one or more display devices 108. It should be noted that unless otherwise specified herein, terms such as "coupled", "connected to", "attached", "joined", "combined", and similar terms may refer to physical, electrical, magnetic, logical, etc. connections.
[0017] The media device 106 can be a streaming media device, a DVD or Blu-ray device, an audio / video playback device, a cable TV box, and / or a digital video recording device, to name just a few examples. The display device 108 can be a monitor, a television (TV), a computer, a smartphone, a tablet, a wearable device (such as a watch or glasses), a household appliance, an Internet of Things (IoT) device, and / or a projector, to name just a few examples. In some embodiments, the media device 106 can be part of its corresponding display device 108, integrated with its corresponding display device 108, operatively coupled to its corresponding display device 108, and / or connected to its corresponding display device 108.
[0018] Each media device 106 can be configured to communicate with the network 118 via the communication device 114. The communication device 114 can include, for example, a cable modem or a satellite TV transceiver. The media device 106 can communicate with the communication device 114 via the link 116, where the link 116 can include a wireless connection (such as Wi-Fi) and / or a wired connection.
[0019] In various embodiments, the network 118 can include, but is not limited to, a wired and / or wireless intranet, extranet, Internet, cellular network, Bluetooth, infrared, and / or any other short-range, long-range, local, regional, global communication mechanism, means, method, protocol, and / or network, and any combination thereof.
[0020] The media system 104 can include a remote control 110. The remote control 110 can be any component, part, device, and / or method for controlling the media device 106 and / or the display device 108, such as a remote control, a tablet, a laptop, a smartphone, a wearable device, a screen control, an integrated control button, an audio control, or any combination thereof, to name just a few examples. In an embodiment, the remote control 110 communicates wirelessly with the media device 106 and / or the display device 108 via a cellular network, Bluetooth, infrared, etc., or any combination thereof. The remote control 110 can include a microphone 112, which will be further described below.
[0021] The multimedia environment 102 can include multiple content servers 120 (also referred to as content providers, channels, or sources 120). Although Figure 1 only one content server 120 is shown, in reality, the multimedia environment 102 can include any number of content servers 120. Each content server 120 can be configured to communicate with the network 118.
[0022] Each content server 120 may store content 122 and metadata 124. The content 122 may include music, video, movies, television shows, multimedia, images, still pictures, text, graphics, game applications, advertisements, program content, public service content, government content, local community content, software, and / or any combination of any other content or data objects in electronic form.
[0023] In some embodiments, the metadata 124 includes data about the content 122. For example, the metadata 124 may include associative information or ancillary information indicating or relating to the author, director, producer, composer, artist, actor, synopsis, chapter, production, history, year, trailer, alternate version, related content, application, and / or any other information related or relevant to the content 122. The metadata 124 may also or alternatively include links to any such information related or relevant to the content 122. The metadata 124 may also or alternatively include one or more indexes of the content 122, such as but not limited to a trick mode index.
[0024] The multimedia environment 102 may include one or more system servers 126. The system servers 126 may operate to support the media devices 106 from the cloud. It should be noted that the structural and functional aspects of the system servers 126 may exist in whole or in part in the same or different system servers 126.
[0025] The media devices 106 may be present in thousands or millions of media systems 104. Thus, the media devices 106 may be applicable to crowdsourcing embodiments, and accordingly the system servers 126 may include one or more crowdsourcing servers 128.
[0026] For example, using information received from the media devices 106 in thousands and millions of media systems 104, one or more crowdsourcing servers 128 may identify similarities and overlaps between closed captioning requests made by different users 132 while watching a particular movie. Based on such information, one or more crowdsourcing servers 128 may determine that turning on closed captions during a particular part of the movie (e.g., when the original audio of the movie is difficult to hear) may enhance the viewing experience of the user, while turning off closed captions during other parts of the movie (e.g., when displaying closed captions would obscure key visual aspects of the movie) may enhance the viewing experience of the user. Thus, one or more crowdsourcing servers 128 may operate to automatically turn on and / or off closed captions during future streaming of the movie.
[0027] The system server 126 may also include an audio command processing module 130. As described above, the remote control 110 may include a microphone 112. The microphone 112 may receive audio data from the user 132 (and other sources such as the display device 108). In some embodiments, the media device 106 may be audio-responsive, and the audio data may represent verbal commands from the user 132 for controlling the media device 106 and other components in the media system 104 such as the display device 108).
[0028] In some embodiments, the audio data received by the microphone 112 in the remote control 110 is transmitted to the media device 106, and then the audio data is forwarded to the audio command processing module 130 in the system server 126. The audio command processing module 130 may operate to process and analyze the received audio data to identify the verbal commands of the user 132. The audio command processing module 130 may then forward the verbal command back to the media device 106 for processing.
[0029] In some embodiments, the audio data may alternatively or additionally be processed and analyzed by an audio command processing module 216 in the media device 106 (see Figure 2 ). Then the media device 106 and the system server 126 may cooperate to select one of the verbal commands for processing (either the verbal command identified by the audio command processing module 130 in the system server 126 or the verbal command identified by the audio command processing module 216 in the media device 106).
[0030] Figure 2 A block diagram of an example media device 106 according to some embodiments is shown. The media device 106 may include a streaming module 202, a processing module 204, a memory / buffer 208, and a user interface module 206. As described above, the user interface module 206 may include an audio command processing module 216.
[0031] The media system 106 may also include one or more audio decoders 212 and one or more video decoders 214.
[0032] Each audio decoder 212 may be configured to decode audio in one or more audio formats, such as but not limited to AAC, HE-AAC, AC3 (Dolby Digital), EAC3 (Dolby Digital+), WMA, WAV, PCM, MP3, OGG GSM, FLAC, AU, AIFF, and / or VOX, to name just a few.
[0033] Similarly, each video decoder 214 may be configured to decode video in one or more video formats, such as but not limited to MP4 (mp4, m4a, m4v, f4v, f4a, m4b, m4r, f4b, mov), 3GP (3gp, 3gp2, 3g2, 3gpp, 3gpp2), OGG (ogg, oga, ogv, ogx), WMV (wmv, wma, asf), WEBM, FLV, AVI, QuickTime, HDV, MXF (OP1a, OP-Atom), MPEG-TS, MPEG-2PS, MPEG-2TS, WAV, Broadcast WAV, LXF, GXF, and / or VOB, to name a few. Each video decoder 214 may include one or more video codecs, such as but not limited to H.263, H.264, HEV, MPEG1, MPEG2, MPEG-TS, MPEG-4, Theora, 3GP, DV, DVCPRO, DVCPRO, DVCProHD, IMX, XDCAMHD, XDCAM HD422, and / or XDCAM EX, to name a few examples.
[0034] Now referring to Figure 1 and Figure 2 , in some embodiments, user 132 may interact with media device 106 via, for example, remote control 110. For example, user 132 may use remote control 110 to interact with user interface module 206 of media device 106 to select content, such as movies, TV shows, music, books, applications, games, etc. Streaming module 202 of media device 106 may request the selected content from one or more content servers 120 via network 118. Content server 120 may transmit the requested content to streaming module 202. Media device 106 may send the received content to display device 108 for playback to user 132.
[0035] In a streaming embodiment, streaming module 202 may send the content to display device 108 in real-time or near real-time when the content is received from one or more content servers 120. In a non-streaming embodiment, media device 106 may store the content received from one or more content servers 120 in memory / buffer 208 for later playback on display device 108.
[0036] Fast Start System
[0037] User devices such as smart TVs and streaming players typically take a long time to boot up because a large number of programs usually need to be loaded into the memory. Each time the device restarts, the programs operating on the device need to be reloaded into the memory, which wastes computing resources and time. Users starting these devices from a restart or shutdown state have no choice but to wait until the device's boot process is complete before they can start using the device. This waiting time during cold boot typically degrades the user experience of the device and may also consume unnecessary resources. Reducing the time required for cold boot of the device and reducing the resources required for the boot process would be beneficial.
[0038] Figure 3 FIG. 300 is a block diagram showing a Fast Boot System (FBS) 302 according to some example embodiments. The FBS 302 can be a system that reduces the boot time and / or computing resources used when a user device boots up or powers on. In some embodiments, the FBS 302 can take a snapshot 304 of the device's memory 306 for use during device boot.
[0039] The device can include any user device or computing device that loads programs into the memory 306 as part of its boot process. Some example devices to which the FBS 302 can be connected or integrated include a streaming device 308 (or 106), a "smart" TV (which can represent the display device 108), a laptop computer, or any Internet of Things (IoT) device.
[0040] The streaming device 308 can include a streaming player connected to or integrated into a monitor or TV 310. In some embodiments, the streaming device 308 can be connected to the TV 310 via a Universal Serial Bus (USB) or High-Definition Multimedia Interface (HDMI) cable. In some embodiments, the connection between the streaming device 308 and the TV 310 can be wireless or via a network. In some embodiments, the streaming device 308 can include a streaming platform that runs on or is integrated into the firmware or software of the TV 310.
[0041] During a normal non-FBS or cold boot process, the streaming device 308 can load various different programs 312A-C, device settings 314, and user preferences 316 into an unsecured portion (referred to herein as unsecured memory 318) of the memory 306. Loading these various data into the unsecured memory 318 uses computing resources and may take a long time and consume various computing resources each time the device boots. During this time, the user 321 must wait for the streaming device 308 (also referred to as device 308) to complete its boot process before the user 321 can start using the device 308.
[0042] However, since the same programs and data are typically loaded into the memory 306 during each startup process, the FBS 302 can take a snapshot 304 of the memory 306 after at least a portion of the data or programs are loaded into the memory 306, and this snapshot 304 can be used in subsequent startup commands (such as when the device is restarted, rebooted, powered off / on) to reduce the startup time and consume less computing resources and bandwidth during the startup process.
[0043] In some embodiments, the programs 312A-C can include loadable applications, programs, web services. For example, for the streaming device 308, the programs 312A-C can include various streaming services such as NETFLIX, HULU, DISNEY PLUS, HBO MAX, etc. Or for example, the programs 312A-C can include any other applications that can be downloaded to and run on the device 308. The device settings 314 can include any specific settings for the device 308, such as WI-FI and local area network settings. The user preferences 316 can include different user-specific or user-specified options such as color, theme, text size, and background.
[0044] The snapshot 304 can include the state of the memory 306 after one or more of the programs 312A-C, device settings 314, and user preferences 316 are loaded into the memory 306 (or the unprotected memory 318). If the snapshot 304 exists at the location of the disk memory 320, then at the next restart of the device 308, the FBS 302 or the device 308 can retrieve the snapshot 304 and load the snapshot 304 into the memory 306 instead of downloading each program 312A-C and / or installing each program 312A-C individually into the memory 306. Loading the snapshot 304 can be a faster and less resource-consuming process compared to loading the various programs 312A-C individually into the memory 306.
[0045] Then, for example, after the snapshot 304 is loaded into the memory 306, only the device settings 314 and user preferences 316 need to be loaded into the memory 306 before allowing the user 321 to use the device 308. In some embodiments, the snapshot 304 can also include the device settings 314 and / or user preferences 316 such that no new content needs to be loaded into the memory 306 in addition to the snapshot 304.
[0046] In some embodiments, during a first cold start, after programs 312A-C have been loaded into memory 306, FBS 302 may take a snapshot 304 of memory 306. In some embodiments, FBS 302 may automatically take a snapshot 304 of memory 306 without a user prompt or action (such as a user action indicating a hibernate or sleep command on device 308). Alternatively, for example, the snapshot 304 may be captured before device 308 recognizes or responds to any command from user 321.
[0047] On a traditional laptop computer, when the user selects the hibernate function or after a certain period of time, the laptop computer's operating system may take a snapshot of the laptop computer's memory for use when the laptop computer is "awakened" or used again (if it has not been powered off first). In a traditional laptop computer, the cue as to when to capture the snapshot is based on user activity or inactivity. In contrast, FBS 302 may be configured to take a snapshot 304 of memory 306 during or immediately after the boot process, before any user activity or user inactivity, or before device 308 is ready to receive and execute user commands, and may store the snapshot 304 on disk memory 320 rather than in memory 306. In some embodiments, disk memory 320 may include a (removable) multimedia card (MMC) or an embedded multimedia card (eMMC). The MMC or eMMC may provide a low-cost flash memory system with a built-in controller, which may replace more expensive solid-state memory or a traditional solid-state drive as a bootable device.
[0048] In some embodiments, FBS 302 may be configured to take snapshot 304 after a certain number of programs 312A-C have been loaded into memory, before or after device settings 314 or user preferences 316 have been loaded into memory, after a certain time after boot, or once memory 306 has been occupied by programs and data up to a certain threshold amount. In some embodiments, the trigger or cue as to when to capture snapshot 304 may be configured by user 321.
[0049] Memory 306 may be volatile memory, which is reset or cleared upon power loss or a system reboot command. Disk memory 320 may be non-volatile memory space, which persists even when device 308 is powered off or restarted / booted again. FBS 302 may store snapshot 304 in disk memory 320 such that snapshot 304 is available during the next boot of device 308, and even during subsequent cold starts of the device (e.g., when memory 306 has been cleared).
[0050] As described above, the FBS 302 may take or capture a snapshot 304 during or after the boot process and before the user 321 performs any interaction with the streaming device 308. During the normal operation of the streaming device 308, the user 321 or the device 308 may perform change operations on the data (e.g., programs 312A-C, device settings 314, and / or user preferences 316) that have been loaded into the memory 306 during the boot process. However, since the snapshot 304 has been captured, these changes need to be taken into account so that the user 321 sees the latest state of the streaming device 308 when the device 308 is booted up next time.
[0051] The monitor 322 may monitor the operation of the streaming device 308 and / or the memory 306 to detect changes to the data or programs stored in the memory 306 during the boot process. These changes may include, for example, installing a new program, updating or deleting an existing program 312A-C, updating the device settings 314, and / or the user preferences 316. In some embodiments, a flag 324 may be set when a change affecting the memory is detected.
[0052] In some embodiments, the monitor 322 may ignore any changes made to the loaded or unloaded data (e.g., runtime data) after the boot process, unless such a change affects what data is captured as part of the snapshot 304. In some embodiments, the monitor 322 may be configured to detect a specific set of enumerated changes, such as adding a new program, updating the version of a program, deleting an existing program, or updating the user preferences 316. If any of these enumerated changes are detected, the flag 324 may be set.
[0053] The flag 324 may indicate which program 312A-C or other part or data of the snapshot 304 needs to be updated based on the monitoring operations performed by the user 321 and / or the device 308. For example, if program 312A is updated to a new version, the flag 324 may be set for program 312A (saved in the snapshot 304). If program 312C is deleted, similarly, the flag 324 may be set for program 312C.
[0054] In some embodiments, if the flag 324 is set for a new program or an updated version of a program, the new program or the updated version may be downloaded as download content 326 from one or more content servers 330 as a background process while the device 308 is running. At the next reboot, the snapshot 304 may be loaded from the disk memory 320 into the memory 306, and the FBS 302 may check if any flag 324 is set. Pre-downloading the program as download content 326 may save resources that would otherwise be required to download the new version or program from one or more content servers 330 at the next reboot. The download content 326 may then be installed during the boot process.
[0055] If flag 324 is set, FBS 302 can control device 308 to perform actions corresponding to the flag 324. These actions can include deleting a program from the memory, installing downloaded content 326, or other actions. Once the actions of these flags are executed, FBS 302 can capture a new snapshot 304 including the updates to replace the old snapshot 304. FBS 302 can also reset any flag 324, or the new snapshot 304 does not set any flag 324. Once the downloaded program has been installed or captured as part of the updated snapshot 304, FBS 302 can also delete the downloaded content 326 to save storage space in the disk memory 320.
[0056] In some embodiments, if the number of changes to the memory 306 or the number of flags 324 set detected during the operation of device 308 (e.g., after the snapshot 304 has been loaded into the memory 306) exceeds a threshold 328, a new snapshot 304 of the memory 306 can be taken or captured as a background process (e.g., without user prompt or notification), and the new snapshot 304 can be used at the next reboot. Any flag 324 that is no longer relevant to the new snapshot 304 can then be cleared. In some embodiments, any change to the data or program in the memory 306 that affects the snapshot 304 (which can include the installation of a new program) may cause FBS 302 to additionally or alternatively take a new snapshot 304 in addition to setting the flag 324.
[0057] In some embodiments, the memory 306 can include both an unprotected portion 318 of the memory and a secured portion 332 of the memory. The unprotected memory 318 can store data that is not generally regarded as sensitive information, such as downloaded channels, applications, or programs 312A-C and setting information (e.g., 314 and 316). However, there may be other data that is regarded as private, private, or confidential, such as user data 334 and financial information 336, and FBS 302 provides enhanced security for such information. User data 334 can include information such as usernames, locations, ages, passwords, etc. Financial information 336 can include purchases, purchase histories, credit card information, etc. In some embodiments, the protected memory 332 can be used to store encryption keys specific to the device and / or manufacturer - as a supplement or alternative to the user data 334 and financial information 336.
[0058] As described above, the snapshot 304 can be an image of the memory 306. However, if the memory 306 includes a protected memory 332 with sensitive data, the snapshot 304 can be only an image of the unprotected memory 318. Thus, any sensitive data (e.g., user data 334 or financial information 336, or encryption key information) can be excluded or removed from the snapshot 304. In some embodiments, the sensitive data 334, 336 (which can include encryption key information) can be stored in a protected portion of the disk memory 320 or downloaded from the protected content server 330 at restart. Excluding the sensitive information 334, 336 from the snapshot 304 can help improve security in the case where an authorized user accesses the snapshot 304. In some embodiments, the FBS 302 can encrypt the snapshot 304, and then at the next restart, before the snapshot 304 is loaded into the memory, the FBS 302 can decrypt the snapshot 304.
[0059] Figure 4 FIG. 400 is a flowchart showing an example operation of a fast boot system (FBS) 302 according to some embodiments. The method 400 can be executed by processing logic including hardware (e.g., circuits, dedicated logic, programmable logic, microcode, etc.), software (e.g., instructions executed on a processing device), or a combination thereof. It should be understood that not all steps need to be performed for the disclosure provided herein. Additionally, those skilled in the art will understand that some steps can be performed simultaneously or in a different order than Figure 4 shown. The method 400 will be described with reference to Figure 3 However, the method 400 is not limited to this example embodiment. For example but not limited to, the method 400 can also be applicable to Figure 1 the example embodiment shown.
[0060] In step 410, it is determined that one or more programs have been loaded into the memory at device startup. For example, the FBS 302 can determine that programs 312A-C have been loaded into the memory 306.
[0061] In step 420, a snapshot of the memory including the one or more loaded programs is captured. For example, the FBS 302 can take a snapshot 304 of the memory 306. In some embodiments, if user data 334, financial information 336, or other sensitive information has been stored in the protected memory 332, such data can be excluded from the snapshot 304.
[0062] In step 430, the operation of the device is monitored after the snapshot is captured. For example, the monitor 322 can monitor the user's operations during the operation of the device 308.
[0063] In step 440, it is determined that a first program among one or more programs has been updated during monitoring. For example, the monitor 322 may detect that one of the programs 312A - C has been updated and set the flag 323 accordingly. In some embodiments, a new version of the updated program 312A - C may be downloaded from the content server 330 as the downloaded content 326. Then, for example, at the next restart, the downloaded content 326 may be installed, and a new snapshot 304 may be taken.
[0064] In step 450, a restart of the device is detected, where the snapshot is loaded into the memory to replace loading one or more programs, and where the first program is updated during the restart of the device. For example, the FBS 302 may check whether the snapshot 304 exists in the disk memory 320. If the snapshot 304 does not exist, the normal startup procedure may be followed, and a new snapshot 304 of the memory 306 (or the unprotected memory 318) may be taken. However, if the snapshot 304 is detected, the snapshot 304 may be decrypted (if necessary), loaded into the unprotected memory 318, sensitive information (if any) may be loaded into the protected memory 332, the FBS 302 may perform a handshake procedure between the unprotected memory 318 and the protected memory 332, and the device 308 may be made available to the user 321.
[0065] Example computer system
[0066] Various embodiments may be implemented using, for example, one or more known computer systems, such as using the computer system 500 as Figure 5 shown. For example, the media device 10 may be implemented using a combination or sub - combination of the computer system 500. Additionally or alternatively, one or more computer systems 500 may be used to implement, for example, any of the embodiments discussed herein, as well as combinations and sub - combinations of these embodiments.
[0067] The computer system 500 may include one or more processors (also referred to as central processing units, or CPUs), such as the processor 504. The processor 504 may be connected to a communication infrastructure or bus 506.
[0068] The computer system 500 may also include one or more user input / output devices 503, such as monitors, keyboards, pointing devices, etc., which may communicate with the communication infrastructure 506 through one or more user input / output interfaces 502.
[0069] One or more processors 504 may be a graphics processing unit (GPU). In an embodiment, the GPU may be an electronic circuit processor specifically designed to process math-intensive applications. The GPU may have a parallel architecture that can effectively process large chunks of data in parallel, such as the math-intensive data common in computer graphics applications, images, videos, etc.
[0070] The computer system 500 may also include a main memory (main memory or primary memory) 508, such as random access memory (RAM). The main memory 508 may include one or more cache levels. Control logic (i.e., computer software) and / or data may already be stored in the main memory 508.
[0071] The computer system 500 may also include one or more auxiliary storage devices or memories 510. The auxiliary memory 510 may include, for example, a hard disk drive 512 and / or a removable storage device or drive 514. The removable storage device 514 may be a floppy disk drive, a tape drive, an optical disk drive, an optical storage device, a tape backup device, and / or any other storage device / drive.
[0072] The removable storage drive 514 may interact with a removable memory unit 518. The removable memory unit 518 may include a computer-usable or computer-readable storage device on which computer software (control logic) and / or data are stored. The removable memory unit 518 may be a floppy disk, a tape, an optical disk, a DVD, an optical storage disk, and / any other computer data storage device. The removable storage drive 514 may read from and / or write to the removable memory unit 518.
[0073] The auxiliary memory 510 may include other devices, equipment, components, instruments, or other tools that allow computer programs and / or other instructions and / or data to be accessed by the computer system 500. Such devices, equipment, components, instruments, or other tools may include, for example, a removable memory unit 522 and an interface 520. Examples of the removable memory unit 522 and the interface 520 may include a program cartridge and a cartridge interface (such as the cartridge interface in a video game device), a removable memory chip (such as an EPROM or PROM) and an associated socket, a memory stick and a USB or other port, a memory card and an associated memory card slot, and / or any other removable memory unit and associated interface.
[0074] The computer system 500 may also include a communication or network interface 524. The communication interface 524 enables the computer system 500 to communicate and interact with any combination of external devices, external networks, external entities, etc. (collectively and individually referred to by reference numeral 528). For example, the communication interface 524 may allow the computer system 500 to communicate with an external or remote device 528 via a communication path 526, which may be wired and / or wireless (or a combination thereof) and may include any combination of LAN, WAN, the Internet, etc. Control logic and / or data may be transmitted to or from the computer system 500 via the communication path 526.
[0075] The computer system 500 may also be any one of a personal digital assistant (PDA), a desktop workstation, a laptop or notebook computer, a netbook, a tablet computer, a smart phone, a smart watch or other wearable device, a household appliance, part of the Internet of Things and / or an embedded system (to name just a few non-limiting examples), or any combination thereof.
[0076] The computer system 500 may be a client or a server that accesses or hosts any application and / or data through any delivery paradigm, including but not limited to: remote or distributed cloud computing solutions; local software or on-premises software (cloud-based "on-premises" solutions); "as a service" models (e.g., Content as a Service (CaaS), Digital Content as a Service (DCaaS), Software as a Service (SaaS), Managed Software as a Service (MSaaS), Platform as a Service (PaaS), Desktop as a Service (DaaS), Framework as a Service (FaaS), Backend as a Service (BaaS), Mobile Backend as a Service (MBaaS), Infrastructure as a Service (IaaS), etc.); and / or a hybrid model that includes any combination of the above examples or other services or delivery paradigms.
[0077] Any applicable data structures, file formats, and schemas in the computer system 500 may be derived from standards, including but not limited to JavaScript Object Notation (JSON), Extensible Markup Language (XML), another markup language (YAML), Extensible HyperText Markup Language (XHTML), Wireless Markup Language (WML), MessagePack, XML User Interface Language (XUL), or any other functionally similar representation, alone or in combination. Alternatively, proprietary data structures, formats, or schemas may be used alone or in combination with known or open-source standards.
[0078] In some embodiments, a tangible, non-transitory device or article of manufacture that stores thereon a tangible, non-transitory computer-usable or readable medium of control logic (software) may also be referred to herein as a computer program product or a program storage device. This includes but is not limited to computer system 500, main memory 508, secondary memory 510, and removable memory units 518 and 522, as well as tangible articles that incorporate any combination of the foregoing. When the control logic is executed by one or more data processing devices, such as computer system 700 or one or more processors 704, the data processing device may be caused to operate as described herein.
[0079] Based on the teachings contained herein, it will be apparent to those skilled in the art how to make and use embodiments of the present disclosure using data processing devices, computer systems, and / or computer architectures other than those shown in FIG. 7. In particular, embodiments are capable of operating using software, hardware, and / or operating system implementations different from those described herein.
[0080] Conclusion
[0081] It should be noted that the "Detailed Description" section, rather than any other section, is intended to interpret the claims. The other sections may set forth one or more example embodiments as contemplated by the inventor, but not all example embodiments, and thus these other sections are not intended to limit the disclosure or the appended claims in any way.
[0082] Although the present disclosure describes example embodiments for example fields and applications, it should be understood that the present disclosure is not limited thereto. Other embodiments and modifications thereof are possible and are all within the scope and spirit of the present disclosure. For example, without limiting the generality of this paragraph, embodiments are not limited to the software, hardware, firmware, and / or entities shown in the figures and / or described herein. Additionally, embodiments (whether or not explicitly described herein) have significant utility for fields and applications other than those described by way of example herein.
[0083] Embodiments are described herein using functional modules that depict embodiments of specific functions and their relationships. For convenience of description, the boundaries of these functional modules are arbitrarily defined herein. Alternative boundaries may be defined so long as the specific functions and relationships (or their equivalents) are appropriately performed. Additionally, alternative embodiments may perform functional blocks, steps, operations, methods, etc. in an order different from that described herein.
[0084] As used herein, the phrases "one embodiment", "an embodiment", "an example embodiment", or similar phrases mean that the described embodiment may include a particular feature, structure, or characteristic, but each embodiment does not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases do not necessarily refer to the same embodiment. Further, when a particular feature, structure, or characteristic is described in connection with an embodiment, those skilled in the art can incorporate such feature, structure, or characteristic into other embodiments whether or not explicitly mentioned or described herein. Additionally, the terms "coupled" and "connected" and their derivatives may be used to describe some embodiments. These terms are not necessarily synonyms of each other. For example, the phrases "connected" and / or "coupled" may be used to describe some embodiments to indicate that two or more elements are in direct physical or electrical contact with each other. However, the term "coupled" may also mean that two or more elements are not in direct contact with each other but still cooperate or interact with each other.
[0085] The breadth and scope of the present disclosure should not be limited by any of the above-described exemplary embodiments, but should be defined only in accordance with the appended claims and their equivalents.
Claims
1. A method, comprising: determining, by at least one processor, that one or more programs have been loaded into a memory when the device is started; capturing a snapshot of the memory including the one or more loaded programs; after capturing the snapshot, monitoring the operation of the device; determining that a first program among the one or more programs has been updated during the monitoring; and detecting a restart of the device, wherein the snapshot is loaded into the memory to replace the loading of the one or more programs, and wherein the first program is updated during the restart of the device.
2. The method according to claim 1, further comprising: setting a flag corresponding to the determination that the first program has been updated.
3. The method according to claim 2, wherein determining the restart comprises: determining that a flag has been set for the first program; and after the restart and after loading the snapshot into the memory, updating the first program.
4. The method according to claim 3, further comprising: capturing a new snapshot to replace the captured snapshot, the new snapshot including the update to the first program, and wherein the new snapshot is used during a subsequent restart of the device.
5. The method according to claim 1, further comprising: downloading an update to the first program before detecting the restart, wherein the downloaded update to the first program is used during the restart of the device.
6. The method according to claim 1, wherein the capturing comprises: encrypting the snapshot; and wherein determining the restart comprises decrypting the encrypted snapshot.
7. The method according to claim 1, wherein the memory includes an unprotected portion and a protected portion, and wherein the snapshot excludes the protected portion of the memory.
8. The method according to claim 7, further comprising: after loading the snapshot into the unprotected portion of the memory, loading protected data into the protected portion of the memory.
9. The method according to claim 1, wherein the device includes a streaming media device, and wherein the one or more programs include one or more streaming media applications configured to operate on the streaming media device.
10. A system comprising at least one processor, each processor coupled to one or more memories and configured to perform operations including the following: determining that one or more programs have been loaded into a memory when the device is started; capturing a snapshot of the memory including the one or more loaded programs; after capturing the snapshot, monitoring the operation of the device; determining that a first program among the one or more programs has been updated during the monitoring; and detecting a restart of the device, wherein the snapshot is loaded into the memory to replace the loading of the one or more programs, and wherein the first program is updated during the restart of the device.
11. The system according to claim 10, the operations further comprising: setting a flag corresponding to the determination that the first program has been updated.
12. The system according to claim 11, wherein determining the restart comprises: determining that a flag has been set for the first program; and After a restart and after loading the snapshot into the memory, update the first program.
13. The system according to claim 12, the operation further comprises: Capturing a new snapshot to replace the captured snapshot, the new snapshot including an update to the first program, and wherein the new snapshot is used during a subsequent restart of the device.
14. The system according to claim 10, the operation further comprises: Downloading an update to the first program before detecting a restart, wherein the downloaded update to the first program is used during the restart of the device.
15. The system according to claim 10, wherein the capturing comprises: encrypting the snapshot; and wherein determining a restart includes decrypting the encrypted snapshot.
16. The system according to claim 10, wherein the memory includes an unprotected portion and a protected portion, and wherein the snapshot excludes the protected portion of the memory.
17. The system according to claim 16, the operation further comprises: After loading the snapshot into the unprotected portion of the memory, loading protected data into the protected portion of the memory.
18. The system according to claim 10, wherein the device includes a streaming media device, and wherein the one or more programs include one or more streaming media applications configured to operate on the streaming media device.
19. A non-transitory computer-readable medium having instructions stored thereon that, when executed by at least one computing device, cause the at least one computing device to perform operations including: Determine that one or more programs have been loaded into memory when the device boots; Capture a snapshot of the memory including the one or more loaded programs; After capturing the snapshot, monitor the operation of the device; Determine that a first program among the one or more programs has been updated during the monitoring; and Detect a restart of the device, wherein the snapshot is loaded into memory to replace loading the one or more programs, and wherein the first program is updated during the restart of the device.
20. The non-transitory computer-readable medium according to claim 19, the operation further comprises: Setting a flag corresponding to the determination that the first program has been updated.