An operating system based on the dual-system paradigm

The dual-system paradigm with a metacognitive agent in the operating system addresses resource constraints by dynamically switching software modes, ensuring efficient resource allocation and maintaining device functionality.

JP2025532129APending Publication Date: 2025-09-29INTERNATIONAL BUSINESS MACHINE CORPORATION
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2025517352
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2022-09-29
Filing Date
2023-09-06
Publication Date
2025-09-29

AI Technical Summary

Technical Problem

Mobile and edge devices face challenges in maintaining core functionality due to resource constraints such as battery power, network connectivity, and processor load, leading to impaired operating system and application performance.

Method used

An operating system implementing a dual-system paradigm with a metacognitive agent that monitors resource consumption and selectively switches software programs between resource-intensive and resource-constrained modes, utilizing a dependency graph to manage resource allocation dynamically.

Benefits of technology

Enhances dynamic resource allocation, improves adaptability, and maintains essential functionalities by prioritizing resource usage based on interdependencies and user preferences, ensuring seamless operation even in constrained environments.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025532129000001_ABST
    Figure 2025532129000001_ABST
Patent Text Reader

Abstract

Exemplary operations may include one or more of the following: invoking, via an operating system, execution of a plurality of software programs having a first operating mode that causes the plurality of software programs to operate in a first resource consumption mode; monitoring physical resources of a computing device consumed by the plurality of software programs; determining, based on the monitored physical resources, to enable the plurality of software programs to reduce or expand their consumption of the physical resources of the computing device; and, in response to the determination, switching from a first operating mode of one of the plurality of software programs to a second operating mode of the software program that causes the software program to operate in a second resource consumption mode that consumes either fewer or more physical resources than the first resource consumption mode.
Need to check novelty before this filing date? Find Prior Art

Description

[Background technology]

[0001] Mobile and edge devices, such as smartphones, tablets, smart wearable devices, appliances, and the like, tend to struggle with core functionality in resource-constrained environments. For example, as resources such as a mobile device's battery power, network connectivity, processor load, storage capacity, and the like become constrained, the functionality of the mobile device's operating system and associated applications (apps) can be impaired, resulting in loss of functionality from essential applications and unpredictable results. Summary of the Invention

[0002] An exemplary embodiment provides an apparatus comprising: a memory storing an operating system; and a processor configured to perform one or more of: invoking, via the operating system, execution of a plurality of software programs having a first operating mode that causes the plurality of software programs to operate in a first resource consumption mode; monitoring physical resources of a computing device consumed by the execution of the plurality of software programs; determining, based on the monitored physical resources, to reduce consumption of the physical resources of the computing device by the plurality of software programs; and, in response to the determination, switching from a first operating mode of one of the plurality of software programs to a second operating mode of the software program that causes the software program to operate in a second resource consumption mode that consumes fewer physical resources than the first resource consumption mode.

[0003] Another exemplary embodiment provides an apparatus comprising: a memory storing an operating system; and a processor configured to perform one or more of: invoking, via the operating system, execution of a plurality of software programs having a first operating mode that causes the plurality of software programs to operate in a first, less resource-consuming mode; monitoring physical resources of a computing device consumed by the execution of the plurality of software programs; determining, based on low utilization of the monitored physical resources, to increase consumption of the physical resources of the computing device by the plurality of software programs; and, in response to the determination, switching from a first operating mode of one of the plurality of software programs to a second operating mode of the software program that causes the software program to operate in a more resource-available mode that allows for greater resource consumption than the first resource consumption mode.

[0004] Another exemplary embodiment provides a method including one or more of the following steps: invoking, via an operating system, execution of a plurality of software programs having a first operating mode that causes the plurality of software programs to operate in a first resource consumption mode; monitoring physical resources of a computing device consumed by the execution of the plurality of software programs; determining, based on the monitored physical resources, to reduce consumption of the physical resources of the computing device by the plurality of software programs; and, in response to the determination, switching from a first operating mode of one of the plurality of software programs to a second operating mode of the software program that causes the software program to operate in a second resource consumption mode that consumes fewer physical resources than the first resource consumption mode.

[0005] A further exemplary embodiment provides a computer-readable medium comprising instructions that, when loaded by a processor, cause the processor to perform one or more of the following steps: invoking, via an operating system, execution of a plurality of software programs having a first operating mode that causes the plurality of software programs to operate in a first resource consumption mode; monitoring physical resources of a computing device consumed by the execution of the plurality of software programs; determining, based on the monitored physical resources, to reduce consumption of the physical resources of the computing device by the plurality of software programs; and, in response to the determination, switching from a first operating mode of one of the plurality of software programs to a second operating mode of the software program that causes the software program to operate in a second resource consumption mode that consumes fewer physical resources than the first resource consumption mode. [Brief explanation of the drawings]

[0006] The patent or application file contains at least one drawing executed in color. Copies of this patent or patent publication with color drawing(s) will be provided by the Office upon request and payment of the necessary fee.

[0007] [Figure 1] FIG. 1 illustrates a cloud computing environment interacting with various devices in accordance with an illustrative embodiment.

[0008] [Figure 2A] FIG. 1 illustrates an abstraction model layer of a cloud computing environment, according to an example embodiment.

[0009] [Figure 2B] FIG. 1 illustrates an operating system that implements a dual system paradigm, according to an exemplary embodiment.

[0010] [Figure 3A] FIG. 1 illustrates an example of a permissioned network in accordance with an exemplary embodiment. [Figure 3B] FIG. 1 illustrates an example of a permissioned network in accordance with an exemplary embodiment. [Figure 3C] FIG. 1 illustrates an example of a permissioned network in accordance with an exemplary embodiment.

[0011] [Figure 3D] FIG. 1 illustrates a machine learning process via a cloud computing platform, according to an example embodiment.

[0012] [Figure 3E] FIG. 1 illustrates a quantum computing environment associated with a cloud computing platform, according to an exemplary embodiment.

[0013] [Figure 4A] FIG. 1 illustrates a process for executing multiple software programs according to an exemplary embodiment.

[0014] [Figure 4B] FIG. 4B illustrates a process for modifying the execution of the software programs in FIG. 4A according to an exemplary embodiment.

[0015] [Figure 5] FIG. 1 illustrates a method for reducing resource consumption in a resource-constrained environment, according to an example embodiment.

[0016] [Figure 6] FIG. 1 illustrates an example of a computing system that supports one or more of the exemplary embodiments. DETAILED DESCRIPTION OF THE INVENTION

[0017] Although this disclosure includes detailed descriptions related to cloud computing, it should be understood that implementation of the teachings recited herein is not limited to a cloud computing environment. Rather, embodiments of the present invention can be implemented in conjunction with any other type of computing environment now known or later developed.

[0018] Cloud computing is a service delivery model for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services) that can be rapidly provisioned and released with minimal management effort or interaction with the service provider. The cloud model can include at least five characteristics, at least three service models, and at least four deployment models.

[0019] Examples of cloud computing characteristics that may be associated with exemplary embodiments include the following:

[0020] On-Demand Self-Service: Cloud consumers can unilaterally provision computing capacity, such as server time and network storage, automatically as needed without requiring human interaction with the service provider.

[0021] Wide network access: Capabilities are available over the network and accessed through standard mechanisms that facilitate use by heterogeneous thin- or thick-client platforms (e.g., cell phones, laptops, and PDAs).

[0022] Resource Pooling: Provider computing resources are pooled to serve multiple consumers using a multi-tenant model, with different physical and virtual resources dynamically allocated and reallocated according to demand. Consumers generally have no control or knowledge over the exact location of the provided resources, although there is location independence in that they may be able to specify location at a higher level of abstraction (e.g., country, state, or data center).

[0023] Rapid Elasticity: Capacity is provisioned quickly and elastically, sometimes automatically, and can be quickly scaled out or quickly released and quickly scaled in. To the consumer, the capacity available for provisioning often appears unlimited, and can be purchased in any quantity at any point in time.

[0024] Metering Services: Cloud systems automatically control and optimize resource usage by leveraging metering capabilities appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts) at a certain level of abstraction. Resource usage can be monitored, controlled, and reported, providing transparency to both providers and consumers of the services utilized.

[0025] Examples of service models that may be associated with exemplary embodiments include the following:

[0026] Software as a Service (SaaS): The consumer is offered the ability to use a provider's applications running on a cloud infrastructure. The applications are accessible from a variety of client devices through a thin-client interface such as a web browser (e.g., web-based email). The consumer does not manage or control the underlying cloud infrastructure, including networks, servers, operating systems, storage, or even individual application capabilities, with the possible exception of limited user-specific application configuration settings.

[0027] Platform as a Service (PaaS): The ability offered to consumers is to deploy applications they create or acquire, written using programming languages ​​and tools supported by the provider, onto a cloud infrastructure. The consumer does not manage or control the underlying cloud infrastructure, including networks, servers, operating systems, or storage, but does control the deployed applications and, in some cases, the application hosting environment configuration.

[0028] Infrastructure as a Service (IaaS): The ability provided to consumers is to provision processing, storage, network, and other basic computing resources onto which they can deploy and run any software, which may include operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure, but rather controls the operating systems, storage, deployed applications, and possibly limited control over selected networking components (e.g., host firewalls).

[0029] Examples of deployment models that may be associated with exemplary embodiments include the following:

[0030] Private Cloud: Cloud infrastructure is operated exclusively for an organization. It may be managed by the organization or a third party and may exist on-premise or off-premise.

[0031] Community Cloud: Cloud infrastructure is shared by multiple organizations to support a specific community with common interests (e.g., mission, security requirements, policies, and compliance considerations). It may be managed by the organizations or a third party and may exist on-premises or off-premises.

[0032] Public Cloud: Cloud infrastructure is available to the general public or large industry organizations and is owned by organizations that sell cloud services.

[0033] Hybrid Cloud: This cloud infrastructure is a composite of two or more clouds (private, community, or public) that remain unique entities but are bound together by standardized or proprietary technologies that allow for data and application portability (e.g., cloud bursting for load balancing between clouds).

[0034] Cloud computing environments are service-oriented with an emphasis on statelessness, low coupling, modularity, and semantic interoperability. At the core of cloud computing is an infrastructure that includes a network of interconnected nodes.

[0035] A cloud platform may host various applications and services used by network-connected devices, such as mobile devices, edge devices, and the like. When a mobile or edge device, such as a smartphone, operates in a resource-constrained environment, the device may struggle to perform functions accurately. For example, constraints imposed by processor load, battery level, network bandwidth, and / or the like may limit or otherwise restrict the device's ability to operate properly.

[0036] This application is directed to an operating system (e.g., for mobile devices) based on the System 1 versus System 2 paradigm introduced by Kahneman and Tversky in "Daniel Kahneman, Thinking Fast and Slow, Farrar, Straus and Giroux, New York, 2011," herein referred to as the dual-system paradigm. In the related art, an operating system may include software programs, such as applications or task handlers, for various services it provides to the device on which it is running. According to various embodiments, in contrast to the related art, an operating system may include two (or more) independent versions of each software program and / or task handler, including a System 1 (S1) version that requires fewer resources, followed by a System 2 (S2) version that runs in a less resource-constrained environment and allows the software program to function more robustly. That is, the S2 version consumes more resources than the S1 version of the software.

[0037] The operating system may also include a metacognitive agent configured to monitor resources (e.g., CPU, RAM, storage, network bandwidth, input-output (I / O), etc.) consumed by software programs and task handlers and selectively switch software programs between a more resource-intensive operating mode (S2 version) and a more resource-constrained operating mode (S1 version). For example, the metacognitive agent may selectively shut down the S2 version of a software application and instead invoke the S1 version of the software application, causing the software application to reduce the device's consumption of any of CPU, RAM, storage, network bandwidth, I / O, and the like. The metacognitive agent may also selectively launch software applications in either S1 mode or S2 mode depending on the expected load on the system gathered from historical usage patterns. The resource requirements of each software application or task handler (e.g., S1 and S2) may be stored in a configuration file for the metacognitive portion of the operating system to utilize when making an evaluation regarding which version to invoke.

[0038] In some embodiments, the metacognitive agent may store a dependency graph, such as an application dependency graph, that identifies priorities and prerequisites among different software programs and task handlers on the device. For example, the dependency graph may specify which application or task handler versions (S1 vs. S2) are required by another application or task handler version for that other application or task handler to operate properly. The dependency graph may also contain data that helps determine the consequences of throttling an application (and its task handler) from its S2 mode to its S1 mode, and even shutting down applications / task handlers all together. When a decision is made to reduce power consumption, the metacognitive agent may analyze the dependency graph to determine which software programs can be constrained before other software programs. In other words, the dependency graph may be used to identify which programs can be constrained and the priorities within the programs when incorporating such constraints.

[0039] For example, an apparatus hosting an example embodiment may include a memory storing an operating system and a processor executing the operating system. The operating system may be configured to invoke execution of a plurality of software programs via a plurality of first-mode task handlers that cause the plurality of software programs to operate in a first resource consumption mode, while simultaneously monitoring a plurality of physical resources of a computing device on which the operating system is running that are consumed by the execution of the plurality of software programs, and potentially determine to reduce consumption of the physical resources of the computing device by the plurality of software programs based on the monitored physical resources. In response to the determination, the operating system may switch the software programs from the first modes (or task handlers) to a second mode (or task handler) that causes the plurality of software programs to operate in a second resource consumption mode that consumes fewer physical resources than the first resource consumption mode.

[0040] Some advantages of the present application include dynamic resource allocation. For example, as resources (e.g., battery, CPU, memory, network bandwidth, etc.) become increasingly constrained, an OS needs to automatically allocate resources to the most important tasks and either curtail or constrain less important tasks' resource consumption, all the while keeping the user updated to the extent practical about what the OS is doing. Another advantage includes improved awareness of interdependencies. For example, effective dynamic allocation of resources can be performed based on potential dependencies between various processes. In this case, the operating system can identify when an essential process may need input from a seemingly less important process and prevent both from becoming constrained. Another advantage is improved adaptability. For example, if an important task is received by the operating system but there are insufficient resources to handle it, the operating system needs to know how to automatically preempt the less important task to allow the more important task to run with sufficient resources. Furthermore, the operating system may be able to estimate a user's value function regarding the quality of the result versus the time it takes to complete a task and then incorporate this value function into task scheduling and resource management.

[0041] Referring now to FIG. 1 , an exemplary cloud computing environment 50 is shown. As shown, the cloud computing environment 50 includes one or more cloud computing nodes 10 with which local computing devices used by cloud consumers, such as, for example, a personal digital assistant (PDA) or cellular phone 54A, a desktop computer 54B, a laptop computer 54C, and / or an automobile computer system 54N, may communicate. The cloud computing nodes 10 may communicate with each other. They may be physically or virtually grouped (not shown) in one or more networks, such as a private cloud, community cloud, public cloud, or hybrid cloud, or combinations thereof, as described hereinabove. This enables the cloud computing environment 50 to provide infrastructure, platform, and / or software as a service for which the cloud consumer does not need to maintain resources on their local computing device. It will be understood that the types of computing devices 54A-54N shown in FIG. 1 are intended to be illustrative only, and that cloud computing node 10 and cloud computing environment 50 may communicate with any type of computerized device via any type of network and / or network-addressable connection (e.g., using a web browser).

[0042] Referring now to Figure 2A, a set of functional abstraction layers provided by cloud computing environment 50 (Figure 1) is shown. It should be understood in advance that the components, layers, and functions shown in Figure 2A are intended to be illustrative only, and embodiments of the present invention are not limited thereto. As shown, the following layers and corresponding functions are provided: Hardware and software layer 60 includes hardware and software components. Examples of hardware components include mainframe 61; RISC (reduced instruction set computer) architecture-based server 62; server 63; blade server 64; storage device 65; and network and networking components 66. In some embodiments, software components include network application server software 67 and database software 68. Virtualization layer 70 provides an abstraction layer over which the following examples of virtual entities may be provided: virtual servers 71; virtual storage 72; virtual networks 73, including virtual private networks; virtual applications and operating systems 74; and virtual clients 75. In one example, management layer 80 may provide the functions described below.

[0043] Resource provisioning 81 provides dynamic procurement of computing and other resources utilized to execute tasks within the cloud computing environment. Metering and pricing 82 provides cost tracking as resources are utilized within the cloud computing environment and accounting or billing for the consumption of these resources. In one example, these resources may include application software licenses. Security provides identity verification for cloud consumers and tasks, as well as protection for data and other resources. User portal 83 provides access to the cloud computing environment for consumers and system administrators. Service level management 84 provides cloud computing resource allocation and management to ensure required service levels are met. Service level agreement (SLA) planning and fulfillment 85 provides advance arrangements and procurement of cloud computing resources where future requirements are anticipated according to SLAs.

[0044] The workload tier 90 provides examples of functions for which a cloud computing environment may be utilized. Examples of workloads and functions that may be provided from this tier include mapping and navigation 91; software development and lifecycle management 92; virtual classroom instruction delivery 93; data analytics processing 94; transaction processing 95; and other processing 96.

[0045] FIG. 2B illustrates an operating system 210 that implements a dual-system paradigm, according to an exemplary embodiment. Referring to FIG. 2B, operating system 210 includes multiple metacognitive agents 220. While multiple agents are shown, it should be understood that the agent functionality may be combined into a single agent, which is shown as a separate agent for illustrative purposes. In this example, metacognitive agents 220 include a preemption agent 221, an oversight agent 222, and a dispatcher agent 223. Metacognitive agents 220 may run continuously within operating system 210 and are responsible for dispatching the system's component task handlers and apps, preempting them, and switching between their S1 and S2 variants.

[0046] The metacognitive agent 220 may monitor the performance of the hardware device on which the operating system 210 is installed. In FIG. 2B , the preemption agent 221 is responsible for shutting down S2 task handlers and throttling agents that support continuous throttling if the operating system determines to reduce resources consumed by applications controlled by the S2 task handlers. In some cases, the preemption agent 221 may also be requested to shut down S1 agents. The oversight agent 222 is responsible for monitoring resource consumption and balancing the expected utility associated with each application and service against their resource consumption as resources become constrained. The oversight agent 222 may also determine when to preempt a task handler and switch to an S1 or S2 variant, or when to throttle an agent if it is continuously throttlable. For example, the oversight agent 222 may read data from logs or from tables stored on the device, including information such as storage usage / available capacity, RAM usage / available capacity, network bandwidth, battery power level, and the like. The device information may be compared to predetermined thresholds or thresholds dynamically determined by the system to determine whether to reduce resource consumption of the device and switch at least one software program on the device from S2 mode to S1 mode. Dispatcher agent 223 is responsible for dispatching component agents of the system.

[0047] 2B, operating system 210 further includes a running applications and services registry 230 that contains a list of identifiers of applications and services currently running on the hardware device on which operating system 210 is installed. Operating system 210 also includes an available applications and services registry 240 (including those not currently running). Registry 240 contains identifiers of all applications and services available to the device. Each entry in registry 240 may include the name of the respective software program (i.e., application, service, etc.), an indicator of whether the software program runs continuously, an indicator of whether the software program runs at system startup, the software program's resource requirements, whether it has an S1 version and an S2 version, and, if so, the estimated benefits of S2 operation over S1 operation.

[0048] Operating system 210 also includes a data store 260 with learned utilities of applications and services. Here, the operating system may store estimates of utility when running in S2 mode versus when running in S1 mode (or, in the case of continuously throttleable agents, when running the agent at maximum throttle versus minimum throttle). Data store 260 may also store learned utilities of running different agents and services relative to each other. The operating system also includes a dependency graph 250 that identifies which other software programs (e.g., applications and services) each software program requires at runtime. Thus, dependency graph 250 identifies the dependencies of other software programs on the target software program. These dependencies, along with the data stored in registry 240 and data store 260, may be used by metacognitive agent 220 to reduce resource consumption and determine when to transition from S2 mode (e.g., slower and more accurate) to S1 mode (e.g., faster but less accurate), identify any software programs (e.g., core functionality) that should not be constrained, and identify priorities among software programs that may be constrained.

[0049] The operating system 210 also includes a set of S1 agents 225 and a set of S2 agents 226 for one or more software programs and task handlers. Any software program or task handler that can switch between S2 mode (unconstrained resource consumption) and S1 mode (constrained resource consumption) will have two distinct instances: an S1 version and an S2 version. The S2 agent 226 can be used / requested by the operating system 210 (e.g., metacognitive agent 220) to invoke the S2 version of a software program when the device is operating under conditions that are not severe enough to require resource reduction. When resources become constrained, the operating system 210 can invoke the corresponding S1 version of the software program via the corresponding S1 agent 225 and shut down the S2 version of the software program via the corresponding S2 agent 226. At some point in the future, when resource consumption becomes sufficiently less constrained, the operating system 210 can again invoke the S2 agent 226.

[0050] As another example, operating system 210 may initially run one or more software programs in resource-constrained mode (i.e., S1 versions of each software program). In some embodiments, this may even be the default mode. For example, this mode may be selected if the operating system anticipates a heavy process or some other resource-consuming operation. After boot-up, if operating system 210 detects low utilization of the device's physical resources, operating system 210 may switch from the S1 versions of the software programs to the S2 versions of the software programs in lieu of the detected utilization of the physical resources.

[0051] Operating system 210 also includes throttlable resources 224, which identify which software programs may continually constrain their resources, and heartbeat apps / services 227, which identify software programs that receive heartbeat messages and are never throttled. Heartbeat apps / services are typically required / critical system components.

[0052] Operating system 210 has various advantages over traditional operating systems. For example, dynamic resource allocation can be implemented via metacognitive agent 220. As a system (e.g., a hardware device on which operating system 210 is installed) becomes increasingly resource-constrained, oversight agent 222 requests preemption agent 221 to preempt more and more software programs. For example, preemption agent 221 may preempt (or otherwise constrain) an application by shutting down the S2 version of the application and launching the corresponding S1 version instead. Meanwhile, when the system frees up resources, oversight agent 222 requests preemption agent 221 to shut down S1 version 225 and launch S2 version 226 instead.

[0053] Additionally, interdependency awareness may be implemented via a dependency graph 250 that identifies interdependencies between software programs on the system. Adaptation may be implemented via a data store 260 containing learned utilities of applications and services, which may be fed to the metacognitive agent 220 during the dynamic resource allocation process to ensure the system adapts both in response to resource constraints and in response to learned (and possibly changing) user preferences over time. Furthermore, the operating system 210 performs continuous learning via a continuous learning system 260 of learned utilities of applications and services installed on the device. The continuous learning system 260 monitors user actions and suggests preemption as resources become low. The continuous learning system 260 observes which apps and services users voluntarily shut down as resources become constrained, monitors which apps and services are most frequently requested, and also learns from these choices. One or more machine learning models may be trained to help identify the most preferred software programs and / or priorities among multiple software programs to shut down.

[0054] For example, the continuous learning system 260 may include one or more models that monitor and learn the utility associated with running an application and / or task handler compared to not running it. The models may learn the utility of running an application or task handler in S2 mode versus S1 mode, and the load that can be expected to run on the system, potentially learning this as a time-dependent function. The user can override the OS's decisions; thus, the operating system may receive feedback while learning these utilities. For example, if the user increases the priority of an app from S1 to S2, the system learns to slightly upgrade its utility. A given model is stored with an associated metacognitive agent that is responsible for building it as part of the OS. The precise machine learning model used is exposed to the user. Any form of regression model is possible.

[0055] 3A-3E provide various examples of additional features that may be used in connection with the cloud computing environments described herein, which examples shall be considered further extensions or additional examples of the embodiments described herein.

[0056] FIG. 3A illustrates an example of a permissioned blockchain network 300 featuring a distributed, decentralized, peer-to-peer architecture. The blockchain network may interact with a cloud computing environment 50, enabling additional functionality such as peer-to-peer authentication of data written to the distributed ledger. In this example, a blockchain user 302 may initiate a transaction against the permissioned blockchain 304. In this example, a transaction may be a deployment, invocation, or query and may be issued directly, such as through an API, or through a client-side application leveraging an SDK. The network may provide access to regulators 306, such as auditors. A blockchain network operator 308 manages member permissions, such as registering regulators 306 as “auditors” and blockchain users 302 as “clients.” Auditors may be limited to only querying the ledger, while clients may be authorized to deploy, invoke, and query certain types of chaincode.

[0057] A blockchain developer 310 can write chaincode and client-side applications. The blockchain developer 310 can deploy the chaincode directly to the network through an interface. To include credentials from a traditional data source 312 in the chaincode, the developer 310 can access the data using an out-of-band connection. In this example, a blockchain user 302 connects to a permissioned blockchain 304 through a peer node 314. Before proceeding with any transaction, the peer node 314 retrieves the user's registration and transaction certificate from a certificate authority 316 that manages user roles and permissions. In some cases, a blockchain user must possess these digital certificates to transact on the permissioned blockchain 304. Meanwhile, a user attempting to utilize the chaincode may need to verify their credentials on the traditional data source 312. To confirm the user's authorization, the chaincode may use an out-of-band connection to this data through a traditional processing platform 318.

[0058] 3B shows another example of a permissioned blockchain network 320 featuring a distributed, decentralized, peer-to-peer architecture. In this example, blockchain users 322 may submit transactions to a permissioned blockchain 324. In this example, transactions may be deployments, invocations, or queries and may be issued directly, such as through an API, or through a client-side application leveraging an SDK. The network may provide access to regulators 326, such as auditors. A blockchain network operator 328 manages member permissions, such as registering regulators 326 as "auditors" and blockchain users 322 as "clients." Auditors may be limited to only querying the ledger, while clients may be authorized to deploy, invoke, and query certain types of chaincode.

[0059] A blockchain developer 330 writes chaincode and client-side applications. The blockchain developer 330 may deploy the chaincode directly to the network through an interface. To include credentials from a traditional data source 332 in the chaincode, the developer 330 may access the data using an out-of-band connection. In this example, a blockchain user 322 connects to the network through a peer node 334. Before proceeding with any transaction, the peer node 334 retrieves the user's registration and transaction certificate from a certificate authority 336. In some cases, a blockchain user must possess these digital certificates to transact on the permissioned blockchain 324. However, a user attempting to use the chaincode may need to verify their credentials on the traditional data source 332. To verify the user's authorization, the chaincode may use an out-of-band connection to this data through a traditional processing platform 338.

[0060] In some embodiments, the blockchain herein may be a permissioned blockchain. In contrast to a permissioned blockchain, which requires permission to participate, anyone can participate in a permissioned blockchain. For example, to participate in a permissioned blockchain, a user may begin interacting with the network by creating a personal address and submitting transactions, thus adding entries to the ledger. Additionally, all parties have the option to run a node on the system and adopt a mining protocol that helps verify transactions.

[0061] 3C illustrates a transaction process 350 processed by an open-ended blockchain 352 including multiple nodes 354. A sender 356 desires to send a payment or some other form of value (e.g., a certificate, medical records, a contract, goods, services, or any other asset that can be encapsulated in a digital record) to a recipient 358 via the open-ended blockchain 352. In one embodiment, the sender device 356 and the receiving device 358 may each have a digital wallet (associated with the blockchain 352) that provides user interface controls and a display of transaction parameters. In response, the transaction is broadcast throughout the blockchain 352 to the nodes 354. Depending on the network parameters of the blockchain 352, the nodes validate 360 ​​the transaction based on rules (which may be predefined or dynamically assigned) established by the creator of the open-ended blockchain 352. For example, this may include verifying the identities of the parties involved, etc. The transaction may be verified immediately or it may be queued with other transactions and node 354 determines whether the transaction is valid based on a set of network rules.

[0062] In structure 362, valid transactions are formed into blocks and sealed with a lock (hash). This process may be performed by mining nodes among nodes 354. Mining nodes may utilize additional software specifically for mining and creating blocks for the open-ended blockchain 352. Each block may be identified by a hash (e.g., a 256-bit number) created using an algorithm agreed upon by the network. Each block may include a header, a pointer or reference to the hash of the header of the previous block in the chain, and a group of valid transactions. The reference to the hash of the previous block is associated with creating a secure and independent chain of blocks.

[0063] Before a block can be added to the blockchain, it must be validated. Validation in a permissionless blockchain 352 can involve proof of work (PoW), which is the solution to a puzzle derived from the block's header. Another process for validating blocks, not shown in the example of Figure 3C, is proof of stake. Unlike proof of work, where an algorithm rewards miners for solving a mathematical problem, in proof of stake, the creator of a new block is selected in a deterministic manner according to their wealth, also defined as "stake." Similar proofs are then performed by selected / elected nodes.

[0064] In mining 364, nodes attempt to solve a block by making incremental changes to one variable until the solution meets a network-wide target. This creates proof of work, thus guaranteeing a correct solution. In other words, potential solutions must prove that computing resources were expended to solve the problem. In some types of permissionless blockchains, miners may be rewarded with value (e.g., coins) for correctly mining a block.

[0065] Here, the PoW process, along with the chaining of blocks, makes it extremely difficult to modify the blockchain because an attacker must modify all subsequent blocks in order for a modification to one block to be accepted. Furthermore, as new blocks are mined, the difficulty of modifying the block increases, leading to an increase in the number of subsequent blocks. In distribution, successfully validated blocks are distributed throughout the open-source blockchain 352, and all nodes 354 add the block to the majority chain, which is an auditable ledger of the open-source blockchain 352. Furthermore, the value of a transaction submitted by a sender 356 is deposited or otherwise transferred to a digital wallet of a receiving device 358.

[0066] 3D and 3E show additional example use cases for cloud computing that may be incorporated and used herein. FIG. 3D shows an example 370 of a cloud computing environment 50 that stores machine learning (artificial intelligence) data. Machine learning relies on vast amounts of past data (or training data) to build predictive models for accurate predictions on new data. Machine learning software (e.g., neural networks, etc.) can often sift through millions of records to discover non-intuitive patterns.

[0067] 3D , host platform 376 builds and deploys machine learning models for predictive monitoring of assets 378. Here, host platform 366 may be a cloud platform, an industrial server, a web server, a personal computer, a user device, and the like. Asset 378 may be any type of asset (e.g., machinery or equipment), such as an aircraft, a locomotive, a turbine, medical machinery and equipment, oil and gas equipment, a boat, a watercraft, a vehicle, and the like. As another example, asset 378 may be an intangible asset, such as a stock, currency, a digital coin, insurance, or the like.

[0068] The cloud computing environment 50 can be used to significantly enhance both the machine learning model training process 372 and the prediction process 374 based on the trained machine learning model. For example, rather than requiring a data scientist / engineer or another user to collect the data at 372, historical data can be stored on the cloud computing environment 50 by the asset 378 itself (or through an intermediary, not shown). This can significantly reduce the collection time required by the host platform 376 when performing predictive model training. For example, data can be transferred directly and reliably from its origin to the cloud computing environment 50. By using the cloud computing environment 50 to ensure the security and ownership of the collected data, a smart contract can send data from the asset directly to the individual who uses the data to build the machine learning model. This enables data to be shared among assets 378.

[0069] Furthermore, training the machine learning model on the collected data may require rounds of refinement and testing by the host platform 376. Each round may be based on additional data or data not previously considered useful in expanding the machine learning model's knowledge. At 372, the different training and testing stages (and their associated data) may be stored by the host platform 376 on the cloud computing environment 50. Each refinement of the machine learning model (e.g., change of variables, weights, etc.) may be stored on the cloud computing environment 50, providing verifiable evidence of how the model was trained and what data was used to train the model. For example, the machine learning model may be stored on a blockchain, providing verifiable evidence. Furthermore, when the host platform 376 realizes the trained model, the resulting model may be stored on the cloud computing environment 50.

[0070] After the model is trained, it can be deployed to a production environment where the model can make predictions / decisions based on the execution of the final trained machine learning model. For example, at 374, the machine learning model can be used for condition-based maintenance (CBM) for assets such as aircraft, wind turbines, medical machines, and the like. In this example, data fed back from the asset 378 can be input into the machine learning model and used to make event predictions such as failure events, error codes, and the like. Decisions made by the execution of the machine learning model on the host platform 376 can be stored on the cloud computing environment 50 to provide auditable / verifiable evidence. As a non-limiting example, the machine learning model can predict future failures / failures for parts of the asset 378 and generate alerts or notifications to replace the parts. The data behind this decision can be stored by the host platform 376 and / or on the cloud computing environment 50. In one embodiment, the features and / or actions described and / or depicted herein can occur on or in relation to the cloud computing environment 50.

[0071] 3E shows an example 380 of a quantum-secure cloud computing environment 382 that implements quantum key distribution (QKD) to protect against quantum computing attacks. In this example, cloud computing users may verify each other's identities using QKD, which uses quantum particles, such as photons, to transmit information that an eavesdropper cannot copy without corrupting it. In this way, senders and receivers may confirm each other's identities through the cloud computing environment.

[0072] In the example of Figure 3E, there are four users: 384, 386, 388, and 390. Each pair of users may share a secret key 392 (i.e., QKD) between themselves. Since there are four nodes in this example, there are six pairs of nodes, and therefore, QKD AB , QKD AC , QKD AD , QKD BC , QKD BD , and QKD CD Six different secret keys 392 are used, including a pair of quantum keys (QKD) 392a and 392b. Each pair can create QKD by transmitting information using quantum particles, such as photons, that an eavesdropper cannot copy without corrupting them. In this way, pairs of users can verify each other's identities.

[0073] The operation of the cloud computing environment 382 is based on two steps: (i) transaction creation and (ii) the construction of a block that aggregates new transactions. New transactions can be created similarly to traditional networks, such as blockchain networks. Each transaction can contain information about the sender, recipient, creation time, the amount (or value) being transferred, a list of reference transactions that justify the sender having funds for the operation, and the like. This transaction record is then sent to all other nodes and placed in a pool of unconfirmed transactions. Here, two parties (i.e., a pair of users from among 384-390) authenticate the transaction by providing their shared secret key 392 (QKD). This quantum signature can be attached to every transaction, making it extremely difficult to tamper with. Each node checks its entry against its local copy of the cloud computing environment 382 and verifies that each transaction has sufficient funds.

[0074] Figure 4A illustrates a process for executing multiple software programs according to an example embodiment, and Figure 4B illustrates a process for modifying the execution of the multiple software programs in Figure 4A as resources become constrained according to an example embodiment. In Figure 4A, multiple software programs are installed on a device and include application 410, service 420, application 430, application 440, and service 450. Each of these software programs may be registered with the device's operating system via a configuration file.

[0075] The configuration files may contain information about task handlers and software programs, such as what the resource requirements of each version are, whether they are invoked by the user or the operating system, under what circumstances they are invoked, and similar information. The configuration files may also contain parameters for switching between the S2 version of the application (S2 mode) and the S1 version of the application (S1 mode). Each software program may have a respective configuration file that is provided to the operating system and used by the operating system's metacognitive agent 220. In addition, the operating system may learn the relationships between different applications and services and build or otherwise modify a dependency graph that can be used by the metacognitive agent 220 when deciding whether to switch from S2 mode to S1 mode or vice versa, and may also identify which software programs should be constrained and which should not be modified.

[0076] 4A and 4B, a hardware device (not shown) includes an operating system with metacognitive agent 220. In addition, the hardware device has installed application 410, service 420, application 430, application 440, and service 450. Each of these software programs has two versions: an S1 version and an S2 version. For example, in FIG. 4A, application 410 includes an S1 version and an S2 version.

[0077] In the example of FIG. 4A , metacognitive agent 220 may invoke default or unconstrained settings by invoking S2 versions of all applications. For example, when a device is powered on or initially loads applications, metacognitive agent 220 may invoke S2 ​​versions of application 420, as well as S2 versions of application 410, service 430, application 440, and service 450. To do this, metacognitive agent 220 may trigger / invoke corresponding S2 agents associated with each S2 version of the application and service. For example, to invoke S2 ​​version application 420, the metacognitive agent may invoke operating system S2 agent 422, which may communicate with S2 version application 420 and power it on or off. Similarly, the operating system may communicate with the corresponding S1 version of application 420 via operating system S1 agent 424.

[0078] 4B, metacognitive agent 220 may monitor the performance of various device attributes based on the consumption of the device attributes by software programs. Here, the monitored device attributes may include one or more of battery level, network bandwidth utilization, input / output activity, available RAM capacity, CPU / processor load, etc. Metacognitive agent 220 may compare the performance level of one or more of these attributes to various thresholds for the one or more attributes that may be predefined or learned by continuous learning system 260 shown in FIG. 2B. The thresholds may be operating system parameters, which may be stored in one or more of the device's hard disk and operating system memory.

[0079] In response to detecting one or more of the attributes whose performance values ​​exceed a threshold, metacognitive agent 220 may determine to downgrade one or more applications from S2 mode to S1 mode, which is more resource-constraining than S2 mode. For example, metacognitive agent 220 may detect when the battery level falls below a critical threshold level (e.g., 25% remaining). As another example, metacognitive agent 220 may detect when the load on the device's CPU exceeds a predetermined threshold load (e.g., 80% utilization). Based on the configuration file and / or information learned by continuous learning system 260, metacognitive agent 220 may identify which applications are considered less important or have a lower priority for the user and downgrade the identified applications to S1 mode. As another example, metacognitive agent 220 may identify which applications suffer the least degradation by switching from S2 mode to S1 mode and downgrade these identified applications to S1 mode.

[0080] 4B , metacognitive agent 220 determines to downgrade application 420, application 440, and service 450 from S2 mode to S1 mode. Here, metacognitive agent 220 may instruct S1 agent 424 to launch the S1 version of application 420 and instruct S2 agent 422 to shut down the S2 version of application 420, thereby invoking the S1 version of application 420 operating in a resource-constrained manner that consumes fewer resources than application 420 would in S2 mode. For example, application 420 may be throttled to consume less battery, less bandwidth, less storage, less RAM, less processor load, and the like.

[0081] Similarly, metacognitive agent 220 may instruct S1 agent 444 to launch S1 version of application 440 and S2 agent 442 to shut down S2 version of application 440, thereby causing application 440 to operate in resource-constrained mode. Furthermore, metacognitive agent 220 may instruct S1 agent 454 to launch S1 version of application 450 and S2 agent 452 to shut down S2 version of application 450, thereby causing application 450 to operate in resource-constrained mode. This process may be reversed when metacognitive agent 220 detects that resources are no longer constrained. The reverse process may also return software programs to S2 mode, either slowly, one at a time, or all at once.

[0082] 5 illustrates a method 500 for reducing resource consumption in a resource-constrained environment, according to an example embodiment. For example, method 500 may be performed by a computer system, such as a cloud platform, a web server, a personal computer, or other user device, and the like. Referring to FIG. 5, at 510, the method may include invoking, via an operating system, execution of a plurality of software programs, respectively, in a first resource consumption mode. For example, the first resource consumption mode may actually be referred to as an S2 mode, which causes the software applications / programs to run at a higher level of operation and consume more resources.

[0083] At 520, the method may include monitoring physical resources of a computing device consumed by the execution of the plurality of software programs. At 530, the method may include determining, based on the monitored physical resources, to reduce or expand consumption of the physical resources of the computing device by the plurality of software programs. Further, in response to the determination, at 540, the method may include switching from a first mode to a second mode operating the software programs in a second resource consumption mode that consumes either fewer or more physical resources than the first resource consumption mode. For example, if the switching is based on a determination to reduce consumption of physical resources, the switching may include switching to a mode that consumes fewer physical resources than the current operating mode.

[0084] In some embodiments, the monitoring may include tracking consumption of one or more of the computing device's central processing unit (CPU), battery, network bandwidth, and storage capacity by the plurality of software programs. In some embodiments, the monitoring of the computing device's physical resources and the determining to reduce the consumption of the physical resources may be performed via one or more metacognitive agents of the operating system. In some embodiments, the switching may include selecting the software program based on resource requirements of the software program compared to resource requirements of other software programs among the plurality of software programs. In some embodiments, the switching may include selecting the software program based on one or more of a speed constant and a duty cycle of the software program identified by the operating system from a configuration file.

[0085] In some embodiments, the switching may include selecting the software program based on past actions of the user learned by the operating system from previous shutdowns of the plurality of software programs. In some embodiments, the switching may include selecting the software program based on a dependency graph identifying dependencies between the software program and other software programs in the plurality of software programs. In some embodiments, the switching may include shutting down the first mode version of the software program and instead running the second mode version of the software program.

[0086] The above embodiments may be implemented in hardware, in a computer program executed by a processor, in firmware, or in a combination of the above. The computer program may be embodied on a computer-readable medium, such as a storage medium. For example, the computer program may reside in random access memory ("RAM"), flash memory, read-only memory ("ROM"), erasable programmable read-only memory ("EPROM"), electrically erasable programmable read-only memory ("EEPROM"), registers, a hard disk, a removable disk, a compact disk read-only memory ("CD-ROM"), or any other form of storage medium known in the art.

[0087] An exemplary storage medium may be coupled to the processor such that the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium may be integral to the processor. The processor and the storage medium may reside in an application-specific integrated circuit ("ASIC"). In the alternative, the processor and the storage medium may reside as discrete components. For example, FIG. 6 shows an exemplary computer system architecture 600 that may represent or be integrated into any of the components described above, etc.

[0088] 6 illustrates an exemplary system 600 that supports one or more of the exemplary embodiments described and / or illustrated herein. System 600 comprises a computer system / server 602 that is operable with numerous other general-purpose or special-purpose computing system environments or configurations. Examples of well-known computing systems, environments, and / or configurations that may be suitable for use with computer system / server 602 include, but are not limited to, personal computer systems, server computer systems, thin clients, thick clients, handheld or laptop devices, multiprocessor systems, microprocessor-based systems, set-top boxes, programmable consumer electronics, network PCs, minicomputer systems, mainframe computer systems, and distributed cloud computing environments that include any of the above systems or devices, and the like.

[0089] The computer system / server 602 may be described in the general context of computer system-executable instructions, such as program modules, being executed by a computer system. Generally, program modules may include routines, programs, objects, components, logic, data structures, and the like that perform particular tasks or implement particular abstract data types. The computer system / server 602 may be practiced in a distributed cloud computing environment where tasks are performed by remote processing devices that are linked through a communications network. In a distributed cloud computing environment, program modules may be located in both local and remote computer system storage media, including memory storage devices.

[0090] 6, computer system / server 602 in cloud computing node 600 is shown in the form of a general-purpose computing device. Components of computer system / server 602 may include, but are not limited to, one or more processors or processing units 604, a system memory 606, and a bus coupling various system components including system memory 606 to processor 604.

[0091] The bus represents one or more of any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures, including, by way of example only, an Industry Standard Architecture (ISA) bus, a MicroChannel Architecture (MCA) bus, an Enhanced ISA (EISA) bus, a Video Electronics Standards Association (VESA) local bus, and a Peripheral Component Interconnect (PCI) bus.

[0092] Computer system / server 602 typically includes a variety of computer system-readable media. Such media may be any available media accessible by computer system / server 602, including both volatile and nonvolatile media, removable and non-removable media. System memory 606, in one embodiment, implements the flow diagrams of other figures. System memory 606 may include computer system-readable media in the form of volatile memory, such as random access memory (RAM) 610 and / or cache memory 612. Computer system / server 602 may further include other removable / non-removable, volatile / non-volatile computer system storage media. By way of example only, storage system 614 may provide for reading from and writing to non-removable, non-volatile magnetic media (not shown, typically referred to as a "hard drive"). Although not shown, a magnetic disk drive for reading from and writing to a removable non-volatile magnetic disk (e.g., a "floppy disk") and an optical disk drive for reading from and writing to a removable non-volatile optical disk, such as a CD-ROM, DVD-ROM, or other optical media, may be provided. In such an instance, each may be connected to the bus by one or more data media interfaces. As further shown and described below, memory 606 may include at least one program product having a set (e.g., at least one) of program modules configured to perform the functions of various embodiments of the present application.

[0093] A program / utility 616 having a set of (at least one) program modules 618, as well as, by way of example and not limitation, an operating system, one or more application programs, other program modules, and program data, may be stored in memory 606. Each of the operating system, one or more application programs, other program modules, and program data, or any combination thereof, may include an implementation of a networking environment. The program modules 618 generally perform the functions and / or methodologies of various embodiments of applications such as those described herein.

[0094] As will be appreciated by one skilled in the art, aspects of the present application may be embodied as a system, method, or computer program product. Accordingly, aspects of the present application may take the form of an entirely hardware embodiment, an entirely software (including firmware, resident software, microcode, etc.) embodiment, or an embodiment combining software and hardware aspects, all of which may be referred to generally herein as a "circuit," "module," or "system." Furthermore, aspects of the present application may take the form of a computer program product embodied in one or more computer-readable medium(s) having computer-readable program code embodied therein.

[0095] The computer system / server 602 may also communicate with one or more external devices 620, such as a keyboard, pointing device, display 622, etc.; one or more devices that allow a user to interact with the computer system / server 602; and / or any device (e.g., a network card, modem, etc.) that allows the computer system / server 602 to communicate with one or more other computing devices. Such communication may occur via an I / O interface 624. Furthermore, the computer system / server 602 may communicate with one or more networks, such as a local area network (LAN), a general wide area network (WAN), and / or a public network (e.g., the Internet), via a network adapter 626. As shown, the network adapter 626 communicates with other components of the computer system / server 602 via a bus. It should be understood that other hardware and / or software components, not shown, may be used in conjunction with the computer system / server 602. Examples include, but are not limited to, microcode, device drivers, redundant processing units, external disk drive arrays, RAID systems, tape drives, and data archive storage systems.

[0096] While at least one exemplary embodiment of the system, method, and non-transitory computer-readable medium is illustrated in the accompanying drawings and described in the above detailed description, it will be understood that the present application is not limited to the disclosed embodiments and is susceptible to numerous rearrangements, modifications, and permutations as set forth and defined in the following claims. For example, the functionality of the various illustrated systems may be performed by one or more of the modules or components described herein, or in a distributed architecture, and may include pairs of transmitters, receivers, or both. For example, all or part of the functionality performed by individual modules may be performed by one or more of these modules. Furthermore, the functionality described herein may be performed at various times in connection with various events internal or external to the modules or components. Furthermore, information transmitted between various modules may be transmitted between modules via at least one of a data network, the Internet, a voice network, an Internet Protocol network, a wireless device, a wired device, and / or via multiple protocols. Furthermore, messages sent or received by any of the modules may be transmitted or received directly and / or via one or more of the other modules.

[0097] Those skilled in the art will appreciate that the "system" may be embodied as a personal computer, server, console, personal digital assistant (PDA), mobile phone, tablet computing device, smartphone, or any other suitable computing device or combination of devices. Presenting the above-described functions as being performed by a "system" is not intended to limit the scope of the present application in any way, but rather to provide one example of many embodiments. Indeed, the methods, systems, and apparatuses disclosed herein may be implemented in localized and distributed fashions consistent with computing technology.

[0098] It should be noted that some of the system functionality described herein has been presented as modules to more specifically emphasize their implementation independence. For example, a module may be implemented as a hardware circuit comprising custom very large scale integrated (VLSI) circuits or gate arrays, off-the-shelf semiconductors such as logic chips, transistors, or other discrete components. A module may also be implemented in a programmable hardware device such as a field programmable gate array, programmable array logic, programmable logic device, graphics processing unit, or the like.

[0099] Modules may also be implemented at least partially in software for execution by various types of processors. For example, an identified unit of executable code may include one or more physical or logical blocks of computer instructions, which may be organized as, for example, an object, procedure, or function. Nevertheless, the executable files of an identified module need not be physically located together, but may include heterogeneous instructions stored in different locations that, when logically combined together, comprise a module and achieve the module's stated purpose. Furthermore, a module may be stored on a computer-readable medium, which may be, for example, a hard disk drive, a flash device, random access memory (RAM), tape, or any other such medium used to store data.

[0100] Indeed, a module of executable code may be a single instruction, or many instructions, and may even be distributed across several different code segments, among different programs, and across multiple memory devices. Similarly, operational data may be identified and depicted herein within modules, and may be embodied in any suitable form and organized within any suitable type of data structure. Operational data may be collected as a single data set or may be distributed in different locations, including different storage devices, and may exist, at least in part, solely as electronic signals on a system or network.

[0101] It will be readily understood that the components of the present application, as generally described and illustrated herein, could be arranged and designed in a wide variety of different configurations. Thus, the detailed description of the embodiments is not intended to limit the scope of the present application as claimed, but is merely representative of selected embodiments of the present application.

[0102] Those skilled in the art will readily appreciate that the above may be practiced in a different order of steps and / or with hardware elements in different configurations than those disclosed. Thus, while the present application has been described in terms of these preferred embodiments, certain modifications, variations, and alternative configurations will be apparent to those skilled in the art.

[0103] While preferred embodiments of the present application have been described, it should be understood that the described embodiments are exemplary only, and that the scope of the present application is defined solely by the appended claims when considered along with the full range of equivalents and modifications thereto (e.g., protocols, hardware devices, software platforms, etc.).

Claims

1. memory storing an operating system; and 1. A processor, comprising: invoking, via the operating system, execution of a plurality of software programs having a first mode of operation that causes the plurality of software programs to operate in a first resource consumption mode; monitoring physical resources of a computing device consumed by said execution of said plurality of software programs; determining, based on the monitored physical resources, to reduce or increase consumption of the physical resources of the computing device by the plurality of software programs; In response to the determination, switching from a first operating mode of one of the plurality of software programs to a second operating mode of the software program that operates the software program in a second resource consumption mode that consumes either fewer or more physical resources than the first resource consumption mode. A processor configured to An apparatus comprising:

2. 2. The apparatus of claim 1, wherein the processor is configured to track consumption of one or more of a central processing unit (CPU), a battery, network bandwidth, and storage capacity of the computing device by the plurality of software programs.

3. 10. The apparatus of claim 1, wherein the processor is configured to monitor the physical resources of the computing device through one or more metacognitive agents of the operating system and determine to reduce the consumption of the physical resources.

4. 10. The apparatus of claim 1, wherein the processor is configured to select the software program based on resource requirements of the software program compared to resource requirements of other software programs in the plurality of software programs.

5. 2. The apparatus of claim 1, wherein the processor is configured to select the software program based on one or more of a speed constant and a duty cycle of the software program identified by the operating system from a configuration file.

6. 2. The apparatus of claim 1, wherein the processor is configured to select the software program based on past actions of the user learned by the operating system from previous shutdowns of the plurality of software programs.

7. 2. The apparatus of claim 1, wherein the processor is configured to select the software program based on a dependency graph that identifies dependencies between the software program and other software programs in the plurality of software programs.

8. 2. The apparatus of claim 1, wherein the processor is configured to shut down the software program of the first mode and instead execute the software program of the second mode.

9. invoking, via the operating system, execution of the plurality of software programs having a first mode of operation that causes the plurality of software programs to operate in a first resource consumption mode; monitoring physical resources of a computing device consumed by said execution of said plurality of software programs; determining, based on the monitored physical resources, to reduce or increase consumption of the physical resources of the computing device by the plurality of software programs; and and switching, in response to the determination, from a first mode of operation of one of the plurality of software programs to a second mode of operation of the software program, the second mode of operation causing the software program to operate in a second resource consumption mode that consumes either fewer or more physical resources than the first resource consumption mode. A method for providing the above.

10. 10. The method of claim 9, wherein the monitoring comprises tracking consumption of one or more of a central processing unit (CPU), a battery, network bandwidth, and storage capacity of the computing device by the plurality of software programs.

11. 10. The method of claim 9, wherein the steps of monitoring the physical resources of the computing device and determining to reduce the consumption of the physical resources are performed via one or more metacognitive agents of the operating system.

12. 10. The method of claim 9, wherein the switching step comprises selecting the software program based on resource requirements of the software program compared to resource requirements of other software programs in the plurality of software programs.

13. 10. The method of claim 9, wherein the switching comprises selecting the software program based on one or more of a speed constant and a duty cycle of the software program identified by the operating system from a configuration file.

14. 10. The method of claim 9, wherein the switching step comprises selecting the software program based on past actions of the user learned by the operating system from previous shutdowns of the plurality of software programs.

15. 10. The method of claim 9, wherein the switching comprises selecting the software program based on a dependency graph that identifies dependencies between the software program and other software programs in the plurality of software programs.

16. 10. The method of claim 9, wherein the switching step comprises shutting down a software program in the first mode and instead executing a software program in the second mode.

17. A computer-readable storage medium that, when read by a processor, causes the processor to: invoking, via the operating system, execution of the plurality of software programs having a first mode of operation that causes the plurality of software programs to operate in a first resource consumption mode; monitoring physical resources of a computing device consumed by said execution of said plurality of software programs; determining, based on the monitored physical resources, to reduce or increase consumption of the physical resources of the computing device by the plurality of software programs; and and in response to the determination, switching from a first operating mode of one of the plurality of software programs to a second operating mode of the software program, the second operating mode causing the software program to operate in a second resource consumption mode that consumes either fewer or more physical resources than the first resource consumption mode.

1. A computer-readable storage medium comprising instructions for performing a method having:

18. 20. The computer-readable storage medium of claim 17, wherein the monitoring comprises tracking consumption of one or more of a central processing unit (CPU), a battery, network bandwidth, and storage capacity of the computing device by the plurality of software programs.

19. 20. The computer-readable storage medium of claim 17, wherein the steps of monitoring the physical resources of the computing device and determining to reduce the consumption of the physical resources are performed via one or more metacognitive agents of the operating system.

20. 20. The computer-readable storage medium of claim 17, wherein the switching comprises selecting the software program based on resource requirements of the software program compared to resource requirements of other software programs in the plurality of software programs.