System and method for container-based multi-operating system delivery under limited RAM

By using software containers and dynamic resource management in IoT devices, the problem of unbalanced resource consumption when the device handles different tasks is solved, and more efficient resource usage and performance optimization is achieved.

CN119585713APending Publication Date: 2025-03-07QUALCOMM INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202280097169.6
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2022-06-22
Publication Date
2025-03-07

AI Technical Summary

Technical Problem

Existing IoT devices use uneven resource consumption when handling complex and simple tasks, resulting in reduced device performance and battery life.

Method used

By using software containers to host multiple operating system user space instances of the shared kernel, dynamically switch containers and activate/deactivate memory sections to suit resource requirements of different tasks.

Benefits of technology

It realizes a balance of optimized resource usage, reduced power consumption, extended device life, and improved performance when executing different types of applications.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119585713A_ABST
    Figure CN119585713A_ABST
Patent Text Reader

Abstract

Systems and methods for hosting multiple operating system (OS) user spaces sharing a same kernel using containers in a computing device (e.g., an IOT device, etc. The computing device is configured to intelligently and dynamically switch a currently active container to another container in response to detecting a trigger, event, or condition on the computing device. The computing device may also dynamically activate or deactivate all or a portion of one or more memories of the computing device based on characteristics and / or workloads of the current active container.
Need to check novelty before this filing date? Find Prior Art

Description

Background Art

[0001] Computing devices that include wireless communication capabilities are becoming smaller, cheaper, and more common. Such computing devices and wireless communication capabilities are increasingly being incorporated into more objects, gradually forming a large-scale distributed network of computing devices, generally referred to as the Internet of Things (IoT). For these and other reasons, modern residential and commercial computer networks are increasingly populated by IoT devices.

[0002] IOT devices can communicate and interact with other devices to complete a variety of tasks. Some of these tasks are complex tasks that require complex operating systems (OS) and / or robust memory, processing resources, and / or energy resources. Other tasks are much simpler tasks, for which the use of complex operating systems and / or large amounts of memory may excessively consume the device's usually limited resources (e.g., battery resources, etc.). Summary of the invention

[0003] Various aspects include methods for using software containers to host multiple operating system (OS) user space instances of a shared kernel to support applications executed in different operating systems and computing devices (e.g., IoT devices) that perform these methods. Various aspects may include: operating, by a processor in a computing device, a first container associated with a first OS user space instance as a currently active container on a kernel of the computing device, and switching the currently active container to a second container associated with a second OS user space instance based on a detected condition on the computing device.

[0004] Some aspects may also include activating or deactivating a portion of a memory of the computing device in response to switching a currently active container to a second container associated with the second OS user space instance.

[0005] In some aspects, switching the currently active container to a second container associated with the second OS user space instance based on a detected condition on the computing device may include switching the currently active container to the second container associated with the second OS user space instance in response to receiving a trigger from an external source.

[0006] In some aspects, switching the currently active container to a second container associated with the second OS user space instance based on a detected condition on the computing device may include switching the currently active container to the second container associated with the second OS user space instance in response to receiving user input on the computing device.

[0007] In some aspects, switching a currently active container to a second container associated with a second OS user space instance based on a detected condition on the computing device may include switching the currently active container to the second container associated with the second OS user space instance based on an operating condition of a software application operating on the computing device.

[0008] In some aspects, switching the currently active container to the second container associated with the second OS user space instance based on an operating condition of a software application operating on the computing device may include: switching the currently active container to the second container associated with the second OS user space instance based on at least one of: a performance characteristic of the software application, a memory usage characteristic of the software application, or an energy consumption characteristic of the software application. In some aspects, switching the currently active container to the second container associated with the second OS user space instance based on a detected condition on the computing device may include: switching the currently active container to the second container associated with the second OS user space instance based on at least one of: an amount of time that a processor has remained idle, an amount of memory used by the processor, or an amount of energy used by the processor.

[0009] In some aspects, switching the currently active container to a second container associated with a second OS user space instance based on a detected condition on the computing device may include: switching the currently active container to one of: a container associated with an OpenWrt user space instance, a container associated with a Linux Embedded user space instance, a container associated with an Ubuntu user space instance, or a container associated with an Android user space instance. In some aspects, the computing device is an Internet of Things (IOT) device.

[0010] Additional aspects may include a computing device having: a memory including memory segments that can be individually activated or deactivated; a processor coupled to the memory and configured to support multiple operating system (OS) user space instances sharing a kernel by performing the operations of any of the methods outlined above. Additional aspects may include a computing device having various components for performing the functions of any of the methods outlined above. Additional aspects may include a non-transitory processor-readable storage medium having processor-executable instructions stored thereon, the processor-executable instructions being configured to cause the processor to perform the operations of any of the methods outlined above. BRIEF DESCRIPTION OF THE DRAWINGS

[0011] The accompanying drawings, which are incorporated herein and constitute a part of this specification, illustrate exemplary embodiments, and together with the general description given above and the detailed description given below, serve to explain features of the various embodiments.

[0012] Figure 1 is a block diagram illustrating a computing system that can be configured to use containers to host multiple OS user spaces sharing the same kernel, according to some embodiments.

[0013] Figure 2A and Figure 2B is a block diagram illustrating components, operations, and communications in a computing system configured to dynamically switch a currently active container to another container according to some embodiments.

[0014] FIG. 3A to FIG. 3C is a block diagram illustrating a memory bank that may be dynamically activated or deactivated according to some embodiments.

[0015] Figures 4 to 6 is a process flow diagram illustrating a method of operating multiple OS user space instances sharing a kernel according to various embodiments.

[0016] Figure 7 is a component block diagram illustrating components in a system-on-chip device that may be configured to implement various embodiments.

[0017] Figure 8 is a component block diagram of an example computing device in the form of a smart phone suitable for implementing the various embodiments.

[0018] Fig. 9A and Fig. 9B is a component block diagram of an example IOT device suitable for use with the various embodiments. DETAILED DESCRIPTION

[0019] Various embodiments will be described in detail with reference to the accompanying drawings. Where possible, the same reference numerals will be used throughout the drawings to refer to the same or similar parts. References to specific examples and implementations are for illustrative purposes and are not intended to limit the scope of the claims.

[0020] In general, various embodiments include methods for using software containers in computing devices (e.g., IOT devices, etc.) to host multiple OS user spaces sharing the same kernel and computing devices configured to implement these methods. Typically, the operating system kernel only runs one container at a time. In various embodiments, the computing device may be configured to intelligently and dynamically switch the current active container to another container based on an event or condition on the computing device and / or in response to detecting a trigger (automatically or manually). The computing device may also dynamically activate or deactivate (e.g., power off, de-energize, shut down, etc.) all or part of one or more memories of the computing device in response to switching the current active container and / or based on an event, condition, or trigger.

[0021] Various embodiments may allow the same computing device (e.g., IOT device, etc.) to operate with low power consumption while executing lightweight applications that require very little processing (e.g., point of sale, electronic shelf displays, and similar applications that require very low power consumption and memory usage), and also support access to rich features for heavyweight applications that require much greater processing power (e.g., video playback and other applications that require more complex OS features and larger memory). In addition, various embodiments facilitate the maintenance of common kernel source code, and support different memory size settings, simultaneous use of multiple OS-specific features, and dynamic activation and deactivation of OS-specific features on computing devices. Other additional improvements to the performance and functional operation of computing devices will be apparent from the disclosure herein.

[0022] By intelligently and dynamically switching the current active container and dynamically activating or deactivating all or part of the memory, various embodiments allow the computing device to handle a variety of different tasks while balancing the tradeoffs between the performance characteristics, memory usage characteristics, and / or power consumption characteristics of the computing device. Therefore, various embodiments can improve the performance characteristics and energy consumption characteristics of the computing device. Such improvements can be particularly beneficial in computing devices with limited resources (such as limited memory capacity and / or limited battery power, as is common in many types of IOT devices).

[0023] The term "computing device" is used herein to refer to any or all of the following: Internet of Things (IOT) devices (e.g., point of sale devices, electronic shelf displays, smart watches, smart TVs, smart speakers, smart locks, lighting systems, smart switches, smart plugs, smart doorbells, smart doorbell cameras, smart air pollution / quality monitors, smart smoke alarms, security systems, smart thermostats, etc.), personal computers, laptop computers, tablet computers, user equipment (UE), smart phones, personal or mobile multimedia players, personal data assistants (PDAs), handheld computers, wireless email receivers, multimedia Internet-enabled cellular phones, gaming systems, wearable devices (e.g., smart watches, head-mounted displays, fitness trackers, etc.), media players, digital video recorders (DVRs), Internet access gateways, modems, routers, network switches, residential gateways, access points, integrated access devices (IADs), mobile convergence products, networking adapters, multiplexers, and other similar devices that include programmable processors and communication circuits to provide the functionality described herein.

[0024] The term "system on chip" (SOC) is used herein to refer to a single integrated circuit (IC) chip that includes multiple resources and / or processors integrated on a single substrate. A single SOC may include circuits for digital, analog, mixed signal, and radio frequency functions. A single SOC may also include any number of general and / or specialized processors (digital signal processors, modem processors, video processors, etc.), storage blocks (e.g., ROM, RAM, flash memory, etc.), and resources (e.g., timers, voltage regulators, oscillators, etc.). The SOC may also include software for controlling the integrated resources and processors and for controlling peripheral devices.

[0025] The term "system-in-package" (SIP) is used herein to refer to a single module or package that contains multiple resources, computing units, cores and / or processors on two or more IC chips, substrates, or SOCs. For example, a SIP may include a single substrate on which multiple IC chips or semiconductor dies are stacked in a vertical configuration. Similarly, a SIP may include one or more multi-chip modules (MCMs) on which multiple ICs or semiconductor dies are packaged into a unified substrate. A SIP may also include multiple independent SOCs that are coupled together via high-speed communication circuits and packaged in close proximity, such as on a single motherboard or in a single wireless device. The proximity of the SOCs facilitates high-speed communication and sharing of memory and resources.

[0026] The term "multi-core processor" is used herein to refer to a single integrated circuit (IC) chip or chip package that includes two or more independent processing cores (e.g., CPU cores, Internet Protocol (IP) cores, graphics processor unit (GPU) cores, etc.) configured to read and execute program instructions. A SOC may include multiple multi-core processors, and each processor in the SOC may be referred to as a core. The term "multiprocessor" is used herein to refer to a system or device that includes two or more processing units configured to read and execute program instructions.

[0027] The term "container" is used herein to refer to software components that implement abstraction (or virtualization) of computing resources and / or separate applications from their underlying infrastructure (thus making them infrastructure agnostic). Containers operate on containerization platforms (e.g., Docker, Rocket, Linux Containers (LXC), etc.) and share a host operating system kernel. That is, each container can be one of many isolated user space instances operating on the same shared host operating system kernel, but operating under the illusion of having full or exclusive access to the computing system's processors, peripherals, memory, and I / O.

[0028] An application running inside a container can only see the contents of the container and the resources assigned to the container. In addition to these isolation mechanisms, a containerized platform may also include a container management system and / or resource management features that further limit the impact of one container's activities on other containers.

[0029] Containers are typically only a few megabytes in size and thus provide an effective and efficient way to virtualize an operating system so that multiple workloads can run on a single shared host operating system kernel on a resource-constrained computing device.

[0030] A virtual machine (VM) is a software solution that provides an interface between an application and physical hardware, thereby potentially allowing an application bound to a specific instruction set architecture (ISA) to execute on hardware that implements a different ISA. A virtual machine solution may include a "manager" or virtual machine monitor (VMM) that runs on actual hardware (native) or runs on an operating system (hosted) to emulate a hardware ISA and / or otherwise provide virtualized hardware resources to an application. Each virtual machine may have its own separate operating system image, binary files, libraries, and software applications. Therefore, each virtual machine may be many gigabytes in size.

[0031] There are many well-known differences between virtual machines and containers. One important difference is that containers run on a shared host operating system kernel, while virtual machines run on a hypervisor or VMM that emulates the hardware ISA. In addition, each virtual machine can be many gigabytes in size, while containers are typically only a few megabytes each.

[0032] Many operating system kernels are organized into user space and kernel space. This separation can be used to provide protection against malicious or poorly designed software. Generally speaking, kernel space is reserved for running privileged operating system kernels, kernel extensions, device drivers, and other critical or security-sensitive components of the operating system. On the other hand, user space can be used for client application software.

[0033] Many computing devices (e.g., IOT devices) are multi-purpose devices that run a variety of different software applications that allow their users to complete a variety of different tasks. For example, a handheld IOT device may be equipped with point-of-sale software, quick response (QR) code scanning software, and multimedia streaming software. The point-of-sale and QR code scanning software applications may be "lightweight applications" that only require thin client software applications that operate on a lightweight operating system (e.g., OpenWRT, etc.) with a small memory footprint. On the other hand, multimedia streaming software may be a "heavyweight application" that requires or benefits from a more robust client software application that operates on a more heavyweight, robust, or complex operating system (e.g., Linux embedded, Android, etc.) with more features and a larger memory footprint.

[0034] Another example of an IOT device that can benefit from various embodiments is a wearable device, such as a smart watch, a smart necklace, etc. For example, a smart watch that only presents a display of time can execute lightweight applications in low power mode, but can switch to heavyweight applications to present videos, measure user physiological parameters, etc.

[0035] Another example of an IOT device that could benefit from various embodiments is an electronic shelf display that could execute lightweight applications in a low-power mode when displaying static information (such as product information and prices), but could switch to heavyweight applications to receive and display multimedia streams, interact with nearby customers' wireless devices, and the like.

[0036] In order to support a variety of different software applications, a computing device may be configured with an operating system suitable for operating its most complex software applications (e.g., multimedia streaming in the above example). However, when running thin client software applications, such a solution may require the use of an excessive amount of the computing device's memory, processing, and / or battery resources. This may have a significant negative or user-perceivable impact on the device's responsiveness or battery life, and / or otherwise degrade the user experience.

[0037] Various embodiments may equip a computing device with containers and / or container technology that allow multiple OS user space instances to share the same kernel. Each OS user space instance may host a different operating system instance. The computing device may be configured to intelligently and dynamically switch containers so that the currently active operating system instance is commensurate with the current software application. The computing device may also dynamically activate or deactivate portions of its memory based on the currently active operating system instance and / or the currently active software application.

[0038] For example, in some embodiments, a computing device may be configured to operate multiple OS user space instances that share the kernel of a computing device by operating a first container associated with a first OS user space instance as the current active container on the kernel of the computing device. The computing device may monitor various operations and events on the computing device (e.g., context switches, system events, state changes, actions or operations of software applications, etc.), collect information related to the monitored operations / events, and analyze the collected information to determine whether there is an actionable condition on the computing device. In some embodiments, the computing device may generate a trigger for transforming a container in response to determining that there is an actionable condition on the computing device. In some embodiments, the computing device may switch the current active container to a second container associated with a second OS user space instance based on a detected condition on the computing device (or in response to detecting a trigger). In some embodiments, the computing device may activate or deactivate a portion of the memory of the computing device based on a detected condition on the computing device (or in response to detecting a trigger).

[0039] Figure 1 An example computing system 100 is illustrated that can be configured to use containers to host multiple OS user spaces that share the same kernel according to some embodiments. Figure 1 In the illustrated example, computing system 100 includes a hardware layer 102, an operating system and container engine 104, and a plurality of containers 106a-106d.

[0040] The hardware layer 102 may include one or more processors 110, memory 112, and various other system components and resources 114. As an example, the processor 110 may include a digital signal processor (DSP), a modem processor (e.g., a 5G modem processor, etc.), a graphics processor, an application processor, a coprocessor, etc., any or all of which may operate as a central processing unit (CPU) of the computing system 100 to execute instructions of software applications (e.g., by performing arithmetic, logic, control, and input / output operations specified by these instructions). In some embodiments, any or all of the one or more processors 110 may be coupled to any or all of the memories 112 and configured to support multiple OS user space instances of a shared kernel (e.g., a shared host operating system kernel 120, etc.).

[0041] The memory 112 may include any of a variety of different types of memory and / or memory technologies. Examples of memory 112 include phase change memory (PRAM), dynamic random access memory (DRAM), static random access memory (SRAM), non-volatile random access memory (NVRAM), pseudo-static random access memory (PSRAM), double data rate synchronous dynamic random access memory (DDR SDRAM) and other random access memory (RAM) and read-only memory (ROM), as well as other memories or technologies known in the art. Each of the above-mentioned memory technologies may include, for example, elements suitable for storing instructions, programs, control signals and / or data for use in or for use by a computer or other digital electronic device. In some embodiments, any or all of the memories in the memory 112 may include memory segments that can be independently (i.e., independently of other memory segments) activated or deactivated.

[0042] System components and resources 114 may include various components for supporting the processor and applications running on the computing device, such as clocks, voltage regulators, oscillators, phase-locked loops, peripheral bridges, data controllers, circuits for interfacing with peripheral devices (e.g., cameras, electronic displays, wireless communication devices, external memory chips, etc.), system controllers, access ports, timers, etc.

[0043] The operating system and container engine 104 may include a shared host operating system kernel 120 including a namespace 122 component and a control group 124 component. The operating system and container engine 104 may also include a container engine or containerization platform (e.g., Docker, Rocket, Linux Containers (LXC), etc.) suitable for generating and managing containers and their associated resources.

[0044] Each of the containers 106a-106d may include an isolated user space operating system instance 130-136, such as the illustrated OpenWrt user space instance 130, Linux Embedded user space instance 132, Ubuntu user space instance 134, and Android user space instance 136. All user space operating system instances 130-136 may operate on the same shared host operating system kernel 120, but operate under the illusion of having full and exclusive access to the processor, peripherals, memory, and I / O of the computing system 100.

[0045] In some embodiments, the computing system 100 may be configured to generate a trigger based on user input. In some embodiments, the computing system 100 may be configured to automatically generate the trigger based on current, observed, determined, expected, or estimated energy, memory, and / or performance (e.g., workload, etc.) requirements or characteristics of the computing system 100 or an application. As an example, the computing system 100 may be configured to generate a trigger based on the amount of one or more memories 112 used by an application, the amount of time one or more of the processors 110 have remained idle, the amount of time an application has remained in an idle state, the type of workload present on the device, so as to achieve improved performance per watt of power consumed, to balance the tradeoff between performance and power consumption on the computing device, etc.

[0046] In some embodiments, only one of the user space operating system instances 130 - 136 may be active on the computing system 100 , and the computing system 100 may be configured to do so dynamically in response to detecting a trigger for switching a currently active container 106 to another container 106 .

[0047] In some embodiments, the computing system 100 may be configured to dynamically activate or deactivate all or part of one or more memories in the memory 112 in response to receiving a trigger and / or based on the energy, memory, and / or performance (e.g., workload, etc.) requirements or characteristics of the computing system 100 or an application. For example, the computing system 100 may dynamically power off, de-energize, de-activate, or shut down all or part of one or more memories 112 in the computing system 100 in response to determining that the current active container 106 includes an OpenWrt user space instance 130 that does not require a large amount of processing resources or memory resources. Similarly, the computing system 100 may dynamically power on, energize, activate, or open all or part of one or more memories in the memory 112 in response to determining that the current active container 106 includes an Android user space instance 136 that requires a large amount of processing resources and / or memory resources.

[0048] Figure 2A and Figure 2B Components and operations in a computing system configured to dynamically switch a currently active container to another container in response to detecting a trigger are illustrated according to some embodiments.

[0049] refer to Figures 1 to 2A, the computing system may generate a trigger indicating that the performance (e.g., workload), memory, and / or energy requirements of an application or computing system have increased or will increase. In various embodiments, the computing device may generate a trigger in response to user input, based on the operation or characteristics of the application, based on the results of monitoring resource usage on the computing device, etc. In response to detecting a trigger indicating that the performance requirements have increased or will increase, the computing system may switch from using a container 106a including an OpenWrt user space instance 130 to using a container 106b including a Linux Embedded user space instance 132.

[0050] refer to Figures 1 to 2B , the computing system may generate a trigger indicating that the performance, memory, and / or energy requirements of the application have been reduced. For example, the computing system may monitor the operation of the application, determine an amount of time that the application has remained idle, determine whether the amount of time that the application has remained idle exceeds a threshold, and generate a trigger in response to determining that the amount of time exceeds the threshold. In response to detecting the trigger indicating that the performance requirements have been reduced, the computing system may switch from using a container 106b including a Linux Embedded user space instance 132 to using a container 106a including an OpenWrt user space instance 130.

[0051] In some embodiments, the computing system may be configured to determine a threshold and / or determine whether to generate a trigger in order to balance the tradeoff between performance and power consumption on the computing device.

[0052] FIG. 3A to FIG. 3C Double data rate (DDR) banks 304a-304d illustrating memory 302 may be dynamically activated or deactivated based on characteristics and / or workload of currently active containers.

[0053] exist Figure 3A In the illustrated example, all DDR banks 304a-304d are online DDR banks. The computing device may have activated DDR banks 304a-304d in response to determining that the current total memory usage 306 of the current active container requires the use of all available DDR banks 304a-304d. As another example, the computing device may have activated DDR banks 304a-304d in response to determining that the current active container is an Android user space instance 136, which includes robust features and / or typically uses a large amount of memory resources.

[0054] exist Figure 3B In the illustrated example, DDR bank 304d has been deactivated by the computing device to additionally save power. For example, the computing system may dynamically power off DDR bank 304d in response to determining that the currently active container is a Linux embedded user space instance 132 that does not need to use all available memory resources.

[0055] exist Figure 3C In the illustrated example, DDR banks 304b-304d have all been deactivated by the computing device to further save power. For example, the computing system may dynamically deactivate DDR banks 304b-304d in response to determining that the currently active container is an OpenWrt user space instance 130 that does not require the use of a significant amount of memory resources.

[0056] Figures 4 to 6 Methods 400, 500, 600 of operating multiple OS user space instances sharing a kernel of a computing device according to various embodiments are illustrated. The methods 400, 500, 600 may be performed by one or more processors in a computing device (eg, an IOT device).

[0057] refer to Figures 1 to 4 In block 402 of method 400 , a computing device may begin operating a first container associated with a first OS user space instance as a currently active container on a kernel of the computing device.

[0058] In block 404, the computing device may switch the current active container to a second container associated with the second OS user space instance based on a detected condition on the computing device. In some embodiments, the detected condition may be a trigger communication message received from an external source. Thus, in some embodiments, the operation of switching the current active container in block 404 to the second container associated with the second OS user space instance may be performed in response to receiving a trigger from an external source.

[0059] In some embodiments, the detected condition may be receiving a user input on the computing device. Thus, in some embodiments, switching the current active container to a second container associated with the second OS user space instance based on the detected condition on the computing device in block 404 may include: switching the current active container to the second container in response to receiving the user input on the computing device.

[0060] In some embodiments, the computing device may switch the current active container to the second container associated with the second OS user space instance based on an operating condition of the software application operating on the computing device in block 404. That is, in some embodiments, the detected condition may be related to an operating condition of the software application, such as a new software application having been launched on the computing device, a change in the operating state of the software application (e.g., idle, active, etc.), a performance characteristic of the software application, a memory usage characteristic of the software application, an energy consumption characteristic of the software application, and the like.

[0061] In some embodiments, in box 404, the computing device may switch the current active container to a second container associated with a second OS user space instance based on device conditions, such as the amount of time one or more processors of the computing device have remained idle, the amount of memory used by the processor, the amount of energy used by the processor, etc.

[0062] In some embodiments, the currently active container may be a container associated with an OpenWrt user space instance, a container associated with a Linux Embedded user space instance, a container associated with an Ubuntu user space instance, or a container associated with an Android user space instance in block 404. In some embodiments, in block 404, the computing device may switch the currently active container to a container associated with an OpenWrt user space instance, a container associated with a Linux Embedded user space instance, a container associated with an Ubuntu user space instance, or a container associated with an Android user space instance.

[0063] refer to Figures 1 to 5 In blocks 502 and 504 of method 500, the computing device may perform the same or similar operations discussed above with reference to blocks 402 and 404 of method 400. In particular, in block 502, the computing device may begin operating a first container associated with a first OS user space instance as a currently active container on a kernel of the computing device. In block 504, the computing device may switch the currently active container to a second container associated with a second OS user space instance based on a detected condition on the computing device.

[0064] In block 506, the computing device may activate or deactivate a portion of the computing device's memory in response to switching the current active container to a second container associated with the second OS user space instance. By intelligently and dynamically switching the current active container in block 504 and dynamically activating or deactivating all or a portion of the memory in block 506, method 500 allows the computing device to handle a variety of different tasks while balancing tradeoffs between performance characteristics, memory usage characteristics, and / or power consumption characteristics of the computing device.

[0065] refer to Figures 1 to 6 In block 602 of method 600 , the computing device may perform the same or similar operations discussed above with reference to block 402 of method 400 or block 502 of method 500 .

[0066] In block 604, the computing device may monitor operations and events on the computing device to determine if an actionable condition exists on the computing device. As an example, in block 604, the computing device may monitor actions or operations of software applications, changes in performance characteristics, memory usage characteristics, and / or energy consumption characteristics of software applications, actions or operations of hardware components (e.g., the amount of time a processor has been up, the amount of memory used by the processor, the amount of energy used by the processor, etc.), system resource usage, transmissions or communications of the computing device, library application programming interface (API) calls, system calls, file system and networking subsystem operations, etc.

[0067] In determination block 606, the computing device may determine whether an actionable condition exists on the computing device. For example, the computing device may determine characteristics of a current operating system user space instance (e.g., Linux embedded, etc.), and determine whether the current condition existing on the computing device requires a heavier operating system (e.g., Android, etc.) and / or determine whether a lighter operating system (e.g., OpenWRT, etc.) will be sufficient to handle the current task. The computing device may determine that an actionable condition exists on the computing device in response to determining that the current condition supports or requires a lighter operating system or a heavier operating system.

[0068] As another example, in block 606, the computing device may determine whether a software application (e.g., point of sale software, QR code scanning software, multimedia streaming software, etc.) has been launched or changed state (e.g., transitioned from idle to active, etc.) on the device based on the results of the monitoring in block 604. The computing device may also determine performance characteristics, memory usage characteristics, and / or energy consumption characteristics of the software application. Based on these characteristics, the computing device may determine whether the software application can operate on a lightweight operating system with a small memory footprint, or whether the software application requires a heavier, more robust, or more complex operating system with more features and a larger memory footprint. The computing device may determine that an actionable condition exists on the computing device in response to determining that the current condition supports or requires a lighter or heavier operating system.

[0069] In response to determining that no actionable conditions exist on the computing device (ie, determination block 606 = “No”), the computing device may continue to monitor operations and events on the computing device in block 604 .

[0070] In response to determining that an actionable condition exists on the computing device (ie, determination block 606 = "Yes"), the computing device may switch the currently active container to a second container associated with the second OS user space instance in block 608.

[0071] In block 610, the computing device may activate or deactivate a portion of the computing device's memory in response to switching the current active container to a second container associated with the second OS user space instance. For example, if the current operating system user space instance is a Linux Embedded user space instance and the actionable condition is related to the launch of QR code scanning software, then in block 608, the computing device may switch the container associated with the Linux Embedded user space instance to the container associated with the OpenWRT user space instance. In block 610, the computing device may deactivate a portion of the computing device's memory to reduce power consumption on the computing device.

[0072] As another example, if the current operating system user space instance is a Linux embedded user space instance and the actionable condition is related to the launch of multimedia streaming software, the computing device may switch a container associated with the Linux embedded user space instance to another container associated with an Android user space instance in block 608. In block 610, the computing device may activate an additional portion of memory to better support the multimedia streaming software or the Android user space instance and / or improve the performance of the computing device.

[0073] Various embodiments may be implemented on a number of single-processor and multi-processor computer systems, including system-on-a-chip (SOC) or system-in-package (SIP).

[0074] Figure 7 An example computing system or SIP 700 architecture is illustrated that may be used in a wireless device implementing various embodiments.

[0075] refer to Figure 7 , the illustrated example SIP 700 includes two SOCs 702, 704, a clock 706, and a voltage regulator 708. In some embodiments, the first SOC 702 operates as a central processing unit (CPU) of the wireless device, which executes the instructions of the software application by performing arithmetic, logic, control, and input / output (I / O) operations specified by the instructions of the software application. In some embodiments, the second SOC 704 can operate as a specialized processing unit. For example, the second SOC 704 can operate as a specialized 5G processing unit responsible for managing high-capacity, high-speed (e.g., 5Gbps, etc.) and / or very high frequency short wavelength (e.g., 28GHz millimeter wave spectrum, etc.) communications.

[0076] The first SOC 702 may include a digital signal processor (DSP) 710, a modem processor 712, a graphics processor 714, an application processor 716, one or more coprocessors 718 (e.g., vector coprocessors) connected to one or more of these processors, memory 720, custom circuits 722, system components and resources 724, an interconnect / bus module 726, one or more temperature sensors 730, a thermal management unit 732, and a thermal power envelope (TPE) component 734. The second SOC 704 may include a 5G modem processor 752, a power management unit 754, an interconnect / bus module 764, multiple millimeter wave transceivers 756, memory 758, and various additional processors 760, such as an application processor, a packet processor, etc.

[0077] Each processor 710, 712, 714, 716, 718, 752, 760 may include one or more cores, and each processor / core may perform operations independently of other processors / cores. For example, the first SOC 702 may include a processor that executes a first type of operating system (e.g., FreeBSD, LINUX, OS X, etc.) and a processor that executes a second type of operating system (e.g., MICROSOFT WINDOWS10). In addition, any one or all of the processors 710, 712, 714, 716, 718, 752, 760 may be included as part of a processor cluster architecture (e.g., a synchronous processor cluster architecture, an asynchronous or heterogeneous processor cluster architecture, etc.).

[0078] The first SOC 702 and the second SOC 704 may include various system components, resources and custom circuits for managing sensor data, analog-to-digital conversion, wireless data transmission, and for performing other specialized operations, such as decoding data packets and processing encoded audio and video signals for rendering in a web browser. For example, the system components and resources 724 of the first SOC 702 may include power amplifiers, voltage regulators, oscillators, phase-locked loops, peripheral bridges, data controllers, memory controllers, system controllers, access ports, timers, and other similar components for supporting processors and software clients running on wireless devices. System components and resources 724 and / or custom circuits 722 may also include circuits for interfacing with peripheral devices (such as cameras, electronic displays, wireless communication devices, external memory chips, etc.).

[0079] The first SOC 702 and the second SOC 704 may communicate via an interconnect / bus module 750. The various processors 710, 712, 714, 716, 718 may be interconnected to one or more memory elements 720, system components and resources 724, and custom circuits 722, and a thermal management unit 732 via an interconnect / bus module 726. Similarly, the processor 752 may be interconnected to a power management unit 754, a millimeter wave transceiver 756, a memory 758, and various additional processors 760 via an interconnect / bus module 764. The interconnect / bus modules 726, 750, 764 may include an array of reconfigurable logic gates and / or implement a bus architecture (e.g., CoreConnect, AMBA, etc.). Communications may be provided by advanced interconnects, such as a high-performance network on chip (NoC).

[0080] The first SOC 702 and / or the second SOC 704 may also include an input / output module (not illustrated) for communicating with resources external to the SOC, such as a clock 706 and a voltage regulator 708. The resources external to the SOC (e.g., clock 706, voltage regulator 708) may be shared by two or more of the internal SOC processors / cores.

[0081] In addition to the example SIP 700 discussed above, various embodiments may be implemented in a wide variety of computing systems that may include a single processor, multiple processors, multi-core processors, or any combination thereof.

[0082] Various embodiments may be implemented on a variety of computing devices, examples of which are Figure 8 800 is illustrated in the form of a smart phone 800. The smart phone 800 may include a first SOC 702 (e.g., a SOC-CPU) coupled to a second SOC 704 (e.g., a 5G-capable SOC). The first SOC 702 and the second SOC 704 may be coupled to internal memory 806, 816, a display 812, and to a speaker 814. Additionally, the smart phone 800 may include an antenna 804 that may be connected to a wireless data link for transmitting and receiving electromagnetic radiation and / or a cellular telephone transceiver 808 coupled to one or more processors in the first SOC 702 and / or the second SOC 704. The smart phone 800 also typically includes a menu selection button or rocker switch 820 for receiving user input.

[0083] The typical smart phone 800 also includes a sound coding / decoding (CODEC) circuit 810, which digitizes the sound received from the microphone into a data packet suitable for wireless transmission, and decodes the received sound data packet to generate an analog signal provided to the speaker to produce sound. In addition, one or more of the processors in the first SOC 702 and the second SOC 704, the wireless transceiver 808 and the CODEC 810 may include a digital signal processor (DSP) circuit (not shown separately).

[0084] Fig. 9A is a component block diagram of an IOT device in the form of a wearable Internet of Things (IoT) device 900 suitable for use with the various embodiments. Figures 1 to 9A , the wearable IOT device 900 may include a body 906 that houses a display device 902 configured to display information, a camera 935 configured to capture still images or videos, and a microphone 910 positioned and configured to record nearby sounds. The display device 902 may also be a touch-sensitive display configured to receive user input. In some embodiments, the wearable IOT device 900 may include other sensors (e.g., thermometers, heart rate monitors, body temperature sensors, pulse oximeters, etc.) for collecting information related to the environment and / or user conditions.

[0085] The IOT device 900 may include a processing system 912, which includes a processing SOC 702 and a communication SOC 704, which may include one or more processors (e.g., 710, 712, 714, 716, 718, 752, and 760), one or more of which may be configured with processor-executable instructions to perform operations of various embodiments. The processing SOC 702 and the communication SOC 704 may be coupled to an internal sensor 920, an internal memory 922, and a communication circuit 924 coupled to one or more antennas 926 for establishing a wireless communication link. The internal sensor 920 may include an inertial measurement unit (IMU), which includes an electronic gyroscope, an accelerometer, and a magnetic compass configured to measure the movement and orientation of the wearable IOT device 900. The processing system 912 may also include a power source such as a rechargeable battery 930, which is coupled to the SOC 702, 704, the communication circuit 924, and the internal sensor 920.

[0086] Fig. 9B is a component block diagram of another example IOT device in the form of a point of sale display device or electronic shelf label 950 suitable for use with the various embodiments. Figures 1 to 9B, the electronic shelf label 950 may include a display 952 coupled to a processor 702 (e.g., a SoC) coupled to an internal memory 958. The processor 702 may be configured with processor-executable instructions stored in the internal memory 958 that cause the processor to perform the operations of various embodiments. The processor 702 may be coupled to a wireless transceiver 954, such as a Bluetooth Low Energy (BLE) transceiver or a combination of a BLE and Wi-Fi transceiver, which is coupled to an antenna 956 for transmitting and receiving radio frequency (RF) signals. The electronic shelf label 950 may be powered by a battery 960, thereby eliminating the need for the display 952 to be connected to a wired power source. Alternatively, the electronic shelf label 950 may be powered by an external power source (not shown).

[0087] The processors 702 and 704 of the smart phone 800 and the IOT devices 900 and 950 may include any programmable microprocessor, microcomputer or one or more multi-processor chips that can be configured by software instructions (applications) to perform a variety of functions (including the functions of the various embodiments described below). In some mobile devices, multiple processors may be provided, such as one processor dedicated to wireless communication functions within the SOC 704 and one processor dedicated to running other applications within the SOC 702. Typically, software applications may be stored in memories 806, 816, 922, 958 before instructions are accessed and loaded into the processors 702 and 704 for execution.

[0088] Specific implementation examples are described in the following paragraphs. Although some of the following specific implementation examples are described in terms of example methods, other example implementations may include: example methods discussed in the following paragraphs implemented by a computing device such as an IOT device, the computing device including components for performing the functions of these example methods; example methods discussed in the following paragraphs implemented in a processor, the processor being configured to perform the operations of these example methods; and example methods discussed in the following paragraphs implemented on a non-transitory processor-readable storage medium having processor-executable instructions stored thereon, the processor-executable instructions being configured to cause the processor to perform the operations of these example methods.

[0089] Embodiment 1. A method for operating multiple operating system (OS) user space instances of a shared computing device's kernel, the method comprising: operating, by a processor in the computing device, a first container associated with a first OS user space instance as a currently active container on the kernel of the computing device, and switching the currently active container to a second container associated with a second OS user space instance based on a detected condition on the computing device.

[0090] Embodiment 2. The method according to embodiment 1 further comprises: activating or deactivating a portion of the memory of the computing device in response to switching the currently active container to the second container associated with the second OS user space instance.

[0091] Embodiment 3. A method according to any one of Embodiments 1 and 2, wherein switching the currently active container to the second container associated with the second OS user space instance based on the detected condition on the computing device includes: switching the currently active container to the second container associated with the second OS user space instance in response to receiving a trigger from an external source.

[0092] Embodiment 4. A method according to any one of embodiments 1 to 3, wherein switching the currently active container to the second container associated with the second OS user space instance based on the detected condition on the computing device includes: switching the currently active container to the second container associated with the second OS user space instance in response to receiving user input on the computing device.

[0093] Embodiment 5. A method according to any one of Embodiments 1 to 4, wherein switching the currently active container to the second container associated with the second OS user space instance based on the detected condition on the computing device includes: switching the currently active container to the second container associated with the second OS user space instance based on an operating condition of a software application operating on the computing device.

[0094] Embodiment 6. A method according to any one of embodiments 1 to 5, wherein switching the currently active container to the second container associated with the second OS user space instance based on the operating status of the software application operating on the computing device comprises: switching the currently active container to the second container associated with the second OS user space instance based on at least one of the following: performance characteristics of the software application, memory usage characteristics of the software application, or energy consumption characteristics of the software application.

[0095] Embodiment 7. A method according to any one of embodiments 1 to 6, wherein switching the currently active container to the second container associated with the second OS user space instance based on the detected condition on the computing device includes: switching the currently active container to the second container associated with the second OS user space instance based on at least one of the following: the amount of time the processor has remained idle, the amount of memory used by the processor, or the amount of energy used by the processor.

[0096] Embodiment 8. A method according to any one of embodiments 1 to 7, wherein switching the currently active container to the second container associated with the second OS user space instance based on the detected condition on the computing device includes: switching the currently active container to one of the following: a container associated with an OpenWrt user space instance, a container associated with a Linux Embedded user space instance, a container associated with an Ubuntu user space instance, or a container associated with an Android user space instance.

[0097] Embodiment 9. The method of any one of embodiments 1 to 8, wherein the computing device is an Internet of Things (IOT) device.

[0098] Embodiment 10. A computing device, the computing device comprising: a memory, the memory comprising memory segments that can be individually activated or deactivated; and a processor, the processor coupled to the memory and configured to support multiple operating system (OS) user space instances sharing a kernel. The processor can be configured to operate a first container associated with a first OS user space instance as a current active container on the kernel, and switch the current active container to a second container associated with a second OS user space instance based on a detected condition.

[0099] Embodiment 11. A computing device according to embodiment 10, wherein the processor is further configured to activate or deactivate one or more of the storage segments in response to switching the currently active container to the second container associated with the second OS user space instance.

[0100] Embodiment 12. A computing device according to any one of embodiments 10 and 11, wherein the processor is configured to switch the current active container to the second container associated with the second OS user space instance based on the detected condition in the following manner: switching the current active container to the second container associated with the second OS user space instance in response to receiving a trigger from an external source.

[0101] Embodiment 13. A computing device according to any one of Embodiments 10 to 12, wherein the processor is configured to switch the currently active container to the second container associated with the second OS user space instance based on the detected condition in the following manner: switching the currently active container to the second container associated with the second OS user space instance in response to receiving user input on the computing device.

[0102] Embodiment 14. A computing device according to any one of Embodiments 10 to 13, wherein the processor is configured to switch the currently active container to the second container associated with the second OS user space instance based on the detected condition in the following manner: switching the currently active container to the second container associated with the second OS user space instance based on an operating condition of a software application operating on the computing device.

[0103] Embodiment 15. A computing device according to any one of Embodiments 10 to 14, wherein the processor is configured to switch the currently active container to the second container associated with the second OS user space instance based on the operating status of the software application in the following manner: switching the currently active container to the second container associated with the second OS user space instance based on at least one of the following: performance characteristics of the software application, memory usage characteristics of the software application, or energy consumption characteristics of the software application.

[0104] Embodiment 16. A computing device according to any one of Embodiments 10 to 15, wherein the processor is configured to switch the currently active container to the second container associated with the second OS user space instance based on the detected condition in the following manner: switching the currently active container to the second container associated with the second OS user space instance based on at least one of the following: the amount of time the processor has remained idle, the amount of memory used by the processor, or the amount of energy used by the processor.

[0105] Embodiment 17. A computing device according to any one of embodiments 10 to 16, wherein the processor is configured to switch the currently active container to the second container associated with the second OS user space instance based on the detected condition in the following manner: switching the currently active container to one of the following: a container associated with an OpenWrt user space instance, a container associated with a Linux Embedded user space instance, a container associated with an Ubuntu user space instance, or a container associated with an Android user space instance.

[0106] Embodiment 18. The computing device of any one of clauses 10 to 17, wherein the computing device is an Internet of Things (IOT) device.

[0107] As used in this application, the terms "component", "module", "system", etc. are intended to include computer-related entities, such as but not limited to hardware, firmware, a combination of hardware and software, software, or software being executed, which are configured to perform specific operations or functions. For example, a component can be, but is not limited to, a process, a processor, an object, an executable file, an execution thread, a program, and / or a computer running on a processor. By way of example, both an application running on a wireless device and a wireless device can be referred to as a component. One or more components may reside within a process and / or an execution thread, and a component may be located on a processor or core and / or distributed between two or more processors or cores. In addition, these components may be executed from various non-transient computer-readable media having various instructions and / or data structures stored thereon. Components can communicate via local and / or remote processes, function or procedure calls, electronic signals, data packets, memory reads / writes, and other known network, computer, processor, and / or process-related communication methods.

[0108] Several different cellular and mobile communication services and standards are available or are contemplated in the future, all of which can be implemented and benefit from various implementations. Such services and standards include, for example, the Third Generation Partnership Project (3GPP), Long Term Evolution (LTE) system, third generation wireless mobile communication technology (3G), fourth generation wireless mobile communication technology (4G), fifth generation wireless mobile communication technology (5G), Global System for Mobile Communications (GSM), Universal Mobile Telecommunications System (UMTS), 3GSM, General Packet Radio Service (GPRS), Code Division Multiple Access (CDMA) system (e.g., cdmaOne, CDMA1020TM), Enhanced Data Rates for GSM Evolution (EDGE), Advanced Mobile Phone System (AMPS), Digital AMPS (IS-136 / TDMA), Evolution Data Optimized (EV-DO), Digital Enhanced Cordless Telecommunications (DECT), Worldwide Interoperability for Microwave Access (WiMAX), Wireless Local Area Network (WLAN), Wi-Fi Protected Access I and II (WPA, WPA2), and Integrated Digital Enhanced Network (iDEN). Each of these technologies involves, for example, the transmission and reception of voice, data, signaling and / or content messages. It should be understood that any reference to terminology and / or technical details related to individual telecommunication standards or technologies is for illustrative purposes only and is not intended to limit the scope of the claims to a particular communication system or technology unless specifically recited in the claim language.

[0109] The various embodiments illustrated and described are provided merely as examples of various features of the claims. However, the features shown and described with respect to any given embodiment are not necessarily limited to the associated embodiment, and may be used or combined with other embodiments shown and described. In addition, the claims are not intended to be limited to any one example embodiment. For example, one or more operations of methods 400-600 may replace or be combined with one or more operations of methods 400-600.

[0110] The processor discussed in this application can be any programmable microprocessor, microcomputer or one or more multi-processor chips that can be configured to perform multiple functions (including the functions of the various embodiments described above) by software instructions (applications). In some devices, multiple processors may be provided, such as one processor dedicated to wireless communication functions and one processor dedicated to running other applications. Typically, software applications can be stored in internal memory before they are accessed and loaded into the processor. The processor may include an internal memory sufficient to store application software instructions. In many devices, the internal memory may be a volatile or non-volatile memory (such as flash memory) or a mixture of the two. For the purpose of this description, a general reference to memory refers to a memory accessible by a processor, including an internal memory or a removable memory inserted in a mobile device and a memory in the processor itself. Additionally, as used herein, any reference to memory may be a reference to a memory storage device, and these terms are used interchangeably.

[0111] The foregoing method descriptions and process flow charts are provided only as illustrative examples and are not intended to require or imply that the operations of the various embodiments must be performed in the order presented. As will be appreciated by those skilled in the art, the order of operations in the foregoing embodiments may be performed in any order. Words such as "thereafter", "then", "next", etc. are not intended to limit the order of steps; these words are only used to guide the reader to read the description of the method. In addition, any reference to a claim element in singular form (e.g., a reference using the article "one", "an", or "said") should not be interpreted as limiting the element to a singular.

[0112] Each illustrative logic block, module, circuit and algorithm step described in conjunction with the embodiments disclosed herein can be implemented as electronic hardware, computer software or a combination of the two. In order to clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits and steps have been generally described in terms of their functionality. Whether such functionality is implemented as hardware or software depends on the specific application and the design constraints proposed for the entire system. Although the technician can implement the described functionality in different ways for each specific application, such specific implementation decisions should not be interpreted as making it depart from the scope of the claims.

[0113] The hardware for implementing the various exemplary logics, logic blocks, modules, components, and circuits described in conjunction with the embodiments disclosed herein may be implemented or executed with a general purpose processor, digital signal processor (DSP), application specific integrated circuit (ASIC), field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. Although a general purpose processor may be a microprocessor, in an alternative, the processor may be any conventional processor, controller, microcontroller, or state machine. The processor may also be implemented as a combination of computing devices, such as a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors combined with a DSP core, or any other such configuration. Alternatively, some steps or methods may be performed by a circuit system dedicated to a given function.

[0114] In one or more exemplary embodiments, the functions described may be implemented with hardware, software, firmware, or any combination thereof. If implemented in software, these functions may be stored as one or more instructions or codes on a non-transient computer-readable medium or a non-transient processor-readable medium. The operation of the method or algorithm disclosed herein may be embodied in a processor-executable software module and / or a processor-executable instruction, which may reside on a non-transient computer-readable or non-transient processor-readable storage medium. A non-transient server-readable, computer-readable, or processor-readable storage medium may be any storage medium accessible by a computer or processor. By way of example and not limitation, such non-transient server-readable, computer-readable, or processor-readable media may include RAM, ROM, EEPROM, flash memory, CD-ROM, or other optical disk storage device, disk storage device, or other magnetic storage device, or any other medium that may be used to store a desired program code in the form of an instruction or data structure and accessible by a computer. As used herein, disks and optical disks include: compact disks (CDs), laser optical disks, optical optical disks, DVDs, floppy disks, and Blu-ray disks, wherein disks typically reproduce data magnetically, and optical disks reproduce data optically using lasers. Combinations of the above are also included within the scope of non-transient server-readable, computer-readable, and processor-readable media. Additionally, the operations of a method or algorithm may reside as a code and / or instruction or any combination or set of codes and / or instructions on a non-transient server-readable, processor-readable, and / or computer-readable medium that may be incorporated into a computer program product.

[0115] The above description of the disclosed embodiments is provided to enable any person skilled in the art to make or use the claims. Various modifications to these embodiments will be apparent to those skilled in the art, and the general principles defined herein may be applied to other embodiments without departing from the scope of the claims. Thus, the claims are not intended to be limited to the embodiments shown herein, but should be granted the widest scope consistent with the appended claims and the principles and novel features disclosed herein.

Claims

1. A computing device, comprising: a memory comprising memory segments that can be individually activated or deactivated; and a processor coupled to the memory and configured to support multiple operating system (OS) user space instances sharing a kernel, wherein the processor is configured to: operating, on the kernel, a first container associated with a first OS user space instance as a currently active container; as well as The currently active container is switched to a second container associated with a second OS user space instance based on the detected condition.

2. The computing device of claim 1 , wherein the processor is further configured to activate or deactivate one or more of the memory segments in response to switching the currently active container to the second container associated with the second OS user space instance.

3. The computing device of claim 1 , wherein the processor is configured to switch the currently active container to the second container associated with the second OS user space instance based on the detected condition by: switching the currently active container to the second container associated with the second OS user space instance in response to receiving a trigger from an external source.

4. A computing device according to claim 1, wherein the processor is configured to switch the current active container to the second container associated with the second OS user space instance based on the detected condition in the following manner: switching the current active container to the second container associated with the second OS user space instance in response to receiving user input on the computing device.

5. A computing device according to claim 1, wherein the processor is configured to switch the current active container to the second container associated with the second OS user space instance based on the detected condition in the following manner: switching the current active container to the second container associated with the second OS user space instance based on an operating condition of a software application operating on the computing device.

6. The computing device of claim 5, wherein the processor is configured to switch the currently active container to the second container associated with the second OS user space instance based on the operating condition of the software application by: switching the currently active container to the second container associated with the second OS user space instance based on at least one of: performance characteristics of said software application; the memory usage characteristics of the software application; or Energy consumption characteristics of the software application.

7. The computing device of claim 1 , wherein the processor is configured to switch the currently active container to the second container associated with the second OS user space instance based on the detected condition by: switching the currently active container to the second container associated with the second OS user space instance based on at least one of: an amount of time that the processor has remained idle; the amount of memory used by the processor; or The amount of energy used by the processor.

8. The computing device of claim 1 , wherein the processor is configured to switch the currently active container to the second container associated with the second OS user space instance based on the detected condition by switching the currently active container to one of: Containers associated with OpenWrt userspace instances; A container associated with a Linux Embedded userspace instance; A container associated with an Ubuntu userspace instance; or A container associated with an Android userspace instance.

9. The computing device of claim 1, wherein the computing device is an Internet of Things (IOT) device.

10. A method of operating multiple operating system (OS) user space instances sharing a kernel of a computing device, the method comprising: operating, by a processor in the computing device, on the kernel of the computing device, a first container associated with a first OS user space instance as a currently active container; as well as The currently active container is switched to a second container associated with a second OS user space instance based on a detected condition on the computing device.

11. The method according to claim 10, further comprising: A portion of a memory of the computing device is activated or deactivated in response to switching the currently active container to the second container associated with the second OS user space instance.

12. The method of claim 10, wherein switching the currently active container to the second container associated with the second OS user space instance based on the detected condition on the computing device comprises: The currently active container is switched to the second container associated with the second OS user space instance in response to receiving a trigger from an external source.

13. The method of claim 10, wherein switching the currently active container to the second container associated with the second OS user space instance based on the detected condition on the computing device comprises: The currently active container is switched to the second container associated with the second OS user space instance in response to receiving a user input on the computing device.

14. The method of claim 10, wherein switching the currently active container to the second container associated with the second OS user space instance based on the detected condition on the computing device comprises: The currently active container is switched to the second container associated with the second OS user space instance based on an operating condition of a software application operating on the computing device.

15. The method of claim 14, wherein switching the currently active container to the second container associated with the second OS user space instance based on the operating condition of the software application operating on the computing device comprises: Switching the currently active container to the second container associated with the second OS user space instance based on at least one of: performance characteristics of said software application; the memory usage characteristics of the software application; or Energy consumption characteristics of the software application.

16. The method of claim 10, wherein switching the currently active container to the second container associated with the second OS user space instance based on the detected condition on the computing device comprises: Switching the currently active container to the second container associated with the second OS user space instance based on at least one of: an amount of time that the processor has remained idle; the amount of memory used by the processor; or The amount of energy used by the processor.

17. The method of claim 10, wherein switching the currently active container to the second container associated with the second OS user space instance based on the detected condition on the computing device comprises: Switch the currently active container to one of the following: Containers associated with OpenWrt userspace instances; A container associated with a Linux Embedded userspace instance; A container associated with an Ubuntu userspace instance; or A container associated with an Android userspace instance.

18. The method of claim 10, wherein the computing device is an Internet of Things (IoT) device.

19. A computing device, the computing device comprising: Memory; means for operating, on a kernel of the computing device, a first container associated with a first OS user space instance as a currently active container; and Means for switching the currently active container to a second container associated with a second OS user space instance based on the detected condition.

20. The computing device of claim 19, further comprising: Means for activating or deactivating a portion of the memory in response to switching the currently active container to the second container associated with the second OS user space instance.

21. The computing device of claim 19, wherein the means for switching the currently active container to the second container associated with the second OS user space instance based on the detected condition comprises: Means for switching the currently active container to the second container associated with the second OS user space instance in response to receiving a trigger from an external source.

22. The computing device of claim 19, wherein the means for switching the currently active container to the second container associated with the second OS user space instance based on the detected condition comprises: Means for switching the currently active container to the second container associated with the second OS user space instance in response to receiving user input.

23. The computing device of claim 19, wherein the means for switching the currently active container to the second container associated with the second OS user space instance based on the detected condition comprises: Means for switching the currently active container to the second container associated with the second OS user space instance based on an operating condition of a software application.

24. The computing device of claim 23, wherein the means for switching the currently active container to the second container associated with the second OS user space instance based on the operating condition of the software application comprises: means for switching the currently active container to the second container associated with the second OS user space instance based on at least one of: performance characteristics of said software application; the memory usage characteristics of the software application; or Energy consumption characteristics of the software application.

25. The computing device of claim 19, wherein the means for switching the currently active container to the second container associated with the second OS user space instance based on the detected condition comprises: means for switching the currently active container to the second container associated with the second OS user space instance based on at least one of: The amount of time the processor has remained idle; the amount of memory used by the processor; or The amount of energy used by the processor.

26. The computing device of claim 19, wherein the means for switching the currently active container to the second container associated with the second OS user space instance based on the detected condition comprises: Means for switching the currently active container to one of: Containers associated with OpenWrt userspace instances; A container associated with a Linux Embedded userspace instance; A container associated with an Ubuntu userspace instance; or A container associated with an Android userspace instance.

27. The computing device of claim 19, wherein the computing device is an Internet of Things (IOT) device.

28. A non-transitory computer-readable storage medium having stored thereon processor-executable software instructions configured to cause a processor of a computing device to perform operations for operating multiple operating system (OS) user space instances sharing a kernel of the computing device, the operations comprising: operating, on the kernel of the computing device, a first container associated with a first OS user space instance as a currently active container; as well as The currently active container is switched to a second container associated with a second OS user space instance based on the detected condition.

29. The non-transitory computer-readable storage medium of claim 28, wherein the stored processor-executable software instructions are configured to cause the processor to perform operations further comprising: A portion of a memory of the computing device is activated or deactivated in response to switching the currently active container to the second container associated with the second OS user space instance.

30. The non-transitory computer-readable storage medium of claim 28, wherein the stored processor-executable software instructions are configured to cause the processor to perform operations such that switching the currently active container to the second container associated with the second OS user space instance based on the detected condition comprises: The currently active container is switched to the second container associated with the second OS user space instance in response to receiving a trigger from an external source.