US20090013157A1 - Management of Software Implemented Services in Processor-Based Devices - Google Patents
Management of Software Implemented Services in Processor-Based Devices Download PDFInfo
- Publication number
- US20090013157A1 US20090013157A1 US12/163,737 US16373708A US2009013157A1 US 20090013157 A1 US20090013157 A1 US 20090013157A1 US 16373708 A US16373708 A US 16373708A US 2009013157 A1 US2009013157 A1 US 2009013157A1
- Authority
- US
- United States
- Prior art keywords
- memory
- services
- service
- application
- manifest
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
Definitions
- the invention relates generally to managing software implemented services, and more particularly, to service management in non-general purpose computer devices that have limited memory resources for running programs implementing services.
- Devices with embedded processors typically did not include processing and memory resources matching those of general purpose computers.
- the embedded processors implement some or all of the device's functionality by executing a limited set of programs stored on the device. Examples of such embedded devices include mobile cellular telephones, personal digital assistants, and set top boxes. Such devices often have just enough working memory to handle their limited functions, include only limited local storage resources, such as non-volatile RAM or ROM, and rarely possess hard disk drives. They have, as compared to general-purpose computers of similar age, components or systems with fewer capabilities.
- Services provided by or through the embedded device can be augmented and extended through additional programs.
- a cable television set top box can be programmed to provide additional, interactive services, such as not only an interactive program guide, but also news tickers, RSS feeds, games, email and other such services.
- Software for these services may not be resident in working memory.
- the software is dynamically loaded from a local storage device, such as a hard drive, or more typically from a server on a network to which the embedded service is connected, or from a network file system, such as a broadcast file system (BFS) data carousel.
- BFS broadcast file system
- the invention in a preferred form, is directed to solving one problems arising managing memory or other resources by multiple programs on embedded devices.
- memory resources for running services on an embedded device are, in effect, budgeted according to a management profile loaded onto the embedded device.
- the profile establishes classes for the services, and allows determination of the maximum number of services that can be loaded into working memory for each class.
- Each service class therefore functions as a logical group of services that limits the maximum number of services belonging to the class that can be loaded at the same time.
- at least one service from each class can be loaded into working memory at any given time, with the option, depending on available memory and the memory resources required for a service within a class, of more than one service being permitted to be loaded for any given class.
- Classes thus ensure that at least one service from each class is not terminated, and permit more than one service to be loaded without running out of memory.
- classifying services and allocating resources based on class can offer several advantages and benefits.
- a profile permits, if the embedded device is part of a managed system or network, a system operator to establish and update the profile and load it onto the device, either through the network or during deployment.
- a network operator, system manager, device developer, or other person can ensure proper operation of the embedded device.
- the profile can be downloaded to or updated on the device upon startup of the device, upon the occurrence of some other event, or at some preset schedule or interval.
- Use of classes can reduce activation time of important services by retaining some or all of the resources needed for the services in memory, thus avoiding the time it takes to load program resources from, for example, the network.
- having multiple classes also permits a system operator, for example, to ensure the embedded device behaves in a more predictable way from the point of view of the user, especially in a situation in which there are multiple third parties supplying programs for the services. For example, if services are prioritized rather than classified, the service that is unloaded when memory runs out will depend on the loaded services at that time. This means that activating service “A”, for example, on one occasion will unload service “B.” On another occasion, activating service “A” again may result in unloading service “C.” In such a system, users will not be able to predict which service will replace which in memory and they will have unpredictable activation times because sometimes the requested service will have to be loaded first. Such a system will tend to aggravate users. Classifying services can be used to ensure that certain services are not unloaded from memory, even if they are of a lower priority.
- Classes may also be used to allow daemon processes to run in the background such that applications invisible to the user and out of his control could be used to do things like network, service and monitoring of the embedded device.
- FIG. 1 is a block diagram of software processes on a embedded device
- FIG. 2 illustrates a flow diagram of basic steps of a process for activating a service and managing memory usage by services
- FIG. 3 shows five exemplary high-level states for an applet running in accordance with an embodiment of the present invention and messages associated with state transitions.
- a service is a unit of user functionality, implemented by one or more programs and/or data files being executed by the user device.
- a service management system could be implemented as part of an operating system or as a separate program that preferably remains resident in memory and running, and controls, among other things, loading and unloading from memory of programs and resources for providing a service requested by a user of the embedded device.
- system 100 represents a device with an embedded microprocessor or substantially similar circuitry and working memory, such as random access memory (RAM), into which program instructions are loaded for execution and data for use by the program stored.
- the microprocessor, memory and other hardware are represented by block 105 .
- the device could be, for example, a cable or satellite television set top box, a television with such capabilities built into it, a mobile or cellular telephone, or other mobile communication device.
- the boxes 130 , 150 , 160 and 170 represent program instructions loaded into memory, capable of being executed by the microprocessor. Not all of the illustrated programs are necessarily active or executing.
- a services management system is implemented in the illustrated example as part of a master application 150 rather than as part of operating system 170 or resident application 160 .
- the master application is performing the tasks of managing use of resources, particularly, but not necessarily limited to, memory, by programs implementing services.
- Services 110 represent units of user functionality. Services are implemented by applications. A single application could, if desired, implement more than one service.
- the resident application 160 represents a program or collection of programs that provides the basic, device-specific functionality for the embedded device. For a cable set top box it would provide, among other things, basic cable television set top box functions.
- the operating system 170 represents a collection of basic functions and services for, among other things, interacting with hardware that can be called by applications running on the embedded device.
- services are preferably implemented using “little” applications called applets 130 .
- the applets preferably make calls primarily, if not entirely, to master application 150 , rather than to the operating system and/or resident application.
- the master application handles the tasks of interfacing with the resident application and the operating systems, making calls to the operating system 170 and to the resident application 160 through APIs (not indicated in the figure).
- the master application can also be used to manage memory use by services implemented with the applets, and the download of applets from the network.
- the master application launching and terminating applets is one way to ensure effective resource management and utilization for the services.
- it provides advantages for embedded devices not having a services management system as part of its operating system or resident application. If the advantages of a master program with applets are not desired or required for implementing services, each service could be implemented with an application that calls directly the operating system and resident application, with network management system being implemented separately or, for example, as part of the operating system or resident application.
- application will generically refer to applications of all types and sizes, including “applets.”
- Services are grouped into service classes 120 . Two classes are shown in this example, but there could be more than two.
- a service class is a logical grouping of services that constrains the maximum number of services belonging to the class that can be loaded into memory of the device at the same time. If another service of the same class needs to be loaded and the maximum number of services is already loaded, the application(s) used to provide the service and any resources used by it (at least to the extent that are not shared) are unloaded from memory based on a predetermined scheme. Preferably, all defined classes fit in memory at the same time. Unloading the current service of a class before loading a new one helps to ensure enough free memory for the system to operate to improve chances of having a long running stable system.
- FIG. 2 illustrates basic steps of processes of loading services and managing memory use by services.
- the process determines at step 204 the class for the service and determines at step 206 whether a maximum number of services for the class are already loaded in working memory. If a maximum number of services for the class is already loaded, a loaded service in the class is selected for unloading. The application and preferably also any non-shared resources, for the selected service are unloaded at step 208 . More than one service could be selected for unloading. Typically, the oldest service—the one that was least recently used—is chosen for unloading. However, a priority scheme based on other criteria could be used for selecting a service for unloading.
- the maximum number of services is preferably set to a predetermined number. It could also, or alternately, be dynamically determined at the time based on available memory known sizes of the applet and related sources of the service, available memory, and other criteria. For example, a system manager sets a class maximum to three services. During runtime, if it is determined that an insufficient amount of memory would be freed by unloading just one service, then two services could be unloaded. The two services being unloaded are chosen based on a priority scheme, such as time since last use or a combination of criteria.
- the process will, optionally, request or handle optimization of memory at step 210 in order to maximize contiguous free memory spaces in order to reduce memory fragmentation.
- memory requirements for the service are (if they have not already been determined) determined and memory allocation is requested of the operating system for the application and additional resources required for the service.
- the application for the service is then loaded and run, as indicated by steps 214 and 216 .
- the memory requirement information is, preferably, included in the applet. This allows the master application to know in advance the memory requirements of each applet before they are started.
- the process of FIG. 2 is performed by or under the control of the master application 150 , though it could be, as previously indicated, implemented by other programs running on the embedded device.
- the information used by the process of FIG. 2 for determining which class a service belongs to and the maximum number of services permitted for a class is stored in a listing 182 in a manifest 180 .
- the manifest is implemented, for example, as one or more files stored on the embedded device.
- the one or more files containing the manifest are, in this example, preferably downloaded from one or more servers, represented by server 185 in FIG. 1 , over a network 195 to which the embedded device is connected (or connectable) for communication. This permits updating of the manifest by an operator, administrator or manager. Additional information may be stored in the manifest.
- the manifest is stored as part of one or more XML files; however, no particular type of file need be used. In the exemplary embodiment of FIG.
- the one or more files storing manifest 180 comprises, at least in part, a configuration file for master application 150 .
- the manifest thus represents and embodies at least in part a management profile for the services management system for a particular type of embedded device. Different management profiles are typically defined for different types of embedded devices, as well as embedded devices of the same type but different capabilities. Thus, for example, the management profile for an embedded device with 8 MB of memory will need to be more restrictive in terms of memory resource allocations than the management profile for the same type of device having 16 MB of memory.
- service class is defined as a name, a list of services comprised in the service class, and a maximum number of services belonging to the service class that can be loaded at one time.
- the service class definitions are indicated by block 182 in FIG. 1 .
- a service definition preferably indicates its name, its default application (or applet) and its priority.
- Service definitions are indicated by block 184 in FIG. 1 .
- the manifest further comprises applet definitions 186 and management profiles (not indicated). Applet definitions tell the master application the files to preload before launching an applet. Management profiles tell the master application how the services should be managed on a specific type of embedded device.
- the manifest may also include parameters such as a logging server IP address and an HTTP proxy address.
- the configuration file storing the manifest 180 can be changed at anytime.
- the master application preferably looks for changes to the manifest stored on a network, such as on a broadcast file system, every time it is activated.
- the master application preferably runs on the most current manifest.
- a services management system allows network operators and other types of managers of embedded devices to prioritize some services over others so that activation of important services takes less time, minimizes memory fragmentation, and allows daemon applets to run in the background out of the user's control and sight.
- applications are invisible to the user and out of the user's control and can be used for tasks such as, networking, servicing, and, in the example of cell phones, monitoring of the telephone, for example.
- the service management system allows prioritizing of some services over others so that activation of important services takes less time.
- the services management system also enables predictable system behavior from the point of view of the user.
- an embedded device's memory can be budgeted in such a way that service unloading will be easily predictable so that it can be documented to users. Even if documentation is not presented to the users, users may pick up the budgeting and classes by themselves because of, in part, the predictability and repeatability of the management process.
- the service guide uses 500 KB of RAM
- the browser 3000 KB and the games use 1000 KB each.
- the device only has 8000 KB of RAM and 5000 KB of free RAM after the resident application and the master application are loaded.
- the following service classes could be defined: a guide class for the service guide, a browser class for the Internet browser; and a game class for all 10 games.
- the limit of loaded services for each class is set to one. In the present example, this only affects the game class because it is the only class with more than one service.
- the service guide and the browser will always be in working memory and will be available in an instant. Also, there will always be one game instantly available.
- the user activates another game the one that was already loaded will be the service that is unloaded. Unloading the previous game to load a new game can be readily understood and anticipated by the user.
- the priority classes could afford to load 9 games at the same time.
- Another management profile for the 16 MB STBs could be readily defined to allow 9 games loaded at a time. The only change needed would be to raise the limit of loaded services of the game class to 9. In turn, 9 out of 10 of the games could be loaded at the same time.
- the manifest also preferably includes an indicating priority for each service.
- Service priority is beneficial because it may not always be possible to perfectly budget available memory using service classes. Memory fragmentation makes it hard to completely budget memory because even if the memory is there, it may be too fragmented to really be usable. Also, services of a class will not always be the same size so that the class will not always use the same amount of memory and budgeting for the worst case of each class may be too restrictive.
- a network operator or other manager of the embedded device decides the amount of memory to leave for other services.
- the total amount of memory that the master application is allowed to use can be specified in the configuration file for the master application. If the master application is unable to allocate memory for its own use, it preferably compares the total memory that it is using with the limit that it is allowed to use. If it is using less than the limit, it could, for example, ask the resident application to make room. The resident application will in turn ask the other services to free some memory.
- the master application can free memory internally by unloading the service with the smallest priority. If one of the other unmanaged services runs out of memory, it will also ask the resident application to make room. In turn, the resident application will ask the master application to free memory and the master application will unload the low priority service.
- applets in the preferred embodiment can be written in a high level language such as C++, resembling a standard event-driven computer program or a multimedia application, such as an application written in an animated graphics platform such as Adobe® Flash®, Microsoft®, Silverlight® or similar platform.
- a high level language such as C++
- a multimedia application such as an application written in an animated graphics platform such as Adobe® Flash®, Microsoft®, Silverlight® or similar platform.
- events such as activation requests and suspension requests are sent to the applet by the master application via messages.
- User input such as remote control keys, are preferably sent to the applet by the master application via messages, as well.
- An applet written in a multi-media authoring environment, such as Adobe® Flash®, movie stored in a SWF file is simpler than a C++ applet because a player on the embedded device controls all the different applet states automatically without messages sent via the master application.
- the script interpreter in the player such as an Action Script interpreter in a player that plays SWF files, has built-in script objects such that the SWF encoded applet can make calls to control screen viewing size, or to activate other applets and services.
- the compiled code of a C++ applet is preferably packaged in a component form.
- components are the smallest unit of native code that the master application manages. Even if a service is made up of several components, each component can be loaded and unloaded independently by the master application.
- An applet component is simply the compiled code of a C++ applet packaged in a component form.
- a shared component is a C++ shared library packaged in the same way. According to another exemplary embodiment, functionality shared by more than one applet can be packaged in a shared component instead of being included in all the applets that need to use it. Shared components reduce the bandwidth used on a network or on, for example, a broadcast file system, from which the components are downloaded, and the physical memory used on the processor-based device.
- a player 152 for reading, interpreting and rendering animated graphics or multimedia files, such as SWF encoded files is implemented as a shared component.
- the master application uses the player 152 to execute multimedia applets, for example those encoded in a SWF file. Since the player is a shared component, only one player is needed even if there are multiple multimedia applets.
- Any kind of data that an applet needs for execution is a resource. Sounds, images, and string tables are examples of resources, but this list is not exhaustive. Related resources can, preferably, be put into a single file, called a resource package.
- An applet may use two types of resource packages, a localized resource package and a non-localized resource package. Localized packages may contain all language-dependent resources. A non-localized package may contain all the language-independent resources.
- a localized resource package file will be available on the network to which an embedded device belongs for each supported language.
- the master application's preloader 190 ( FIG. 1 ) will automatically select the correct localized package file when the applet is loaded from the network.
- Resources and resource packages are preferably shared by applets to minimize memory and bandwidth requirements.
- all the files needed for an applet 150 to run are preferably indicated in the applet section 186 of the manifest 180 .
- the preloader 190 loads all the necessary files simultaneously from the network, which can be from a designated server on the network or from, for example, a network file system or broadcast file system.
- the files are stored on a broadcast file system, a manifest specifying that all files that need to be loaded allows all of them to be loaded in a single carousel cycle, rather than sequentially over several cycles.
- the applet is launched, its resources will already be loaded and it will be ready to run immediately.
- Preloader 190 which could be made part of the master application 150 , executes a process of loading of applets 130 from a network location.
- a preloader is described in United States published patent application no. 2007/0033239 A1, titled “Preloading resources from data carousel of broadcast file system,” which is incorporated herein by reference.
- the applets could be downloaded from a broadcast file system, for example.
- a modular approach is preferably used to load applets.
- An applet may need several files to run, to include, the applet component or applet code, a localized resource package, and a non-localized resource package.
- All the files needed for an applet to run are indicated in the corresponding applet definition 186 of the manifest 180 .
- the preloader 190 loads all the necessary files simultaneously from, for example, the broadcast file system, allowing all needed files to be loaded in a single carousel cycle. Further, when an applet is launched, its resources will be already loaded and it will be ready to run immediately. The use of the preloader and the modular method results in low bandwidth demands without sacrificing fast loading times.
- the master application can link a service application manager (SAM), which is part of the resident application, to an applet being executed with the master application.
- SAM service application manager
- the master application is specified as the application for the service.
- the resident application will activate the master application when the resident program desires to activate service.
- the name of the service is put in a parameter string for the SAM entry.
- the name of the service is then used by the master application to look up specific information on the service in the manifest, which is the illustrated example stored as part of the manifest.
- the master application will load the default applet for that service, if it is not already loaded, and will then activate the default applet.
- Service implementation need not be limited to only one applet.
- An applet can activate other applets, without directions from the resident application.
- the master application will load the called applet, suspend the active applet, and activate the newly loaded applet. Inside a service, applets are preferably stacked. When the top one quits, the previous one is reactivated. If the service is suspended by the resident application, the master application will suspend the top applet. When the resident application reactivates the service, the master application will reactivate the top applet of the service.
- FIG. 3 illustrates a state machine which, in a preferred embodiment, each applet implements. At least five high-level states are supported: initial state 310 ; suspended state 320 ; active state 330 ; terminating state 340 ; and terminated state 350 . These states are intended to be representative only. Fewer or more states could be supported.
- the initial state 310 is at the start of the applet, when the applet is instantiated and the applet performs its initialization.
- the master application initializes the run-time environment.
- the main thread of the applet receives a message 315 .
- the applet moves to the suspended state 320 .
- two events can start an applet.
- the resident application tells the master application to activate service when the service is not already loaded in the embedded device.
- the master application preferably loads and starts the default applet for the desired service.
- a first applet causes a second applet to be started by calling a predefined method to activate the second applet.
- a suspended applet is not the active applet. There is no interaction with the user in the suspended state.
- the main thread will receive a message 322 to indicate that the applet should go into the active state.
- a second message can be received to exit the suspended state 320 .
- message 326 is received, the applet will go to the terminating state 340 and quit 350 . This message could be received by the applet if the master application needs more memory and frees memory by quitting some service.
- Message 336 can also change an active state 330 to the terminating state 340 . From the terminating state 340 , message 342 changes the state to terminated 350 .
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
Description
- This patent application claims the benefit of Provisional Patent Application Ser. No. 60/946,649, entitled Management of Software Implemented Services In Processor-Based Devices, filed Jun. 27, 2007, the disclosure of which is incorporated herein by reference.
- The invention relates generally to managing software implemented services, and more particularly, to service management in non-general purpose computer devices that have limited memory resources for running programs implementing services.
- Devices with embedded processors typically did not include processing and memory resources matching those of general purpose computers. The embedded processors implement some or all of the device's functionality by executing a limited set of programs stored on the device. Examples of such embedded devices include mobile cellular telephones, personal digital assistants, and set top boxes. Such devices often have just enough working memory to handle their limited functions, include only limited local storage resources, such as non-volatile RAM or ROM, and rarely possess hard disk drives. They have, as compared to general-purpose computers of similar age, components or systems with fewer capabilities.
- Services provided by or through the embedded device can be augmented and extended through additional programs. As an example only, a cable television set top box can be programmed to provide additional, interactive services, such as not only an interactive program guide, but also news tickers, RSS feeds, games, email and other such services. Software for these services may not be resident in working memory. When a viewer requests the service, the software is dynamically loaded from a local storage device, such as a hard drive, or more typically from a server on a network to which the embedded service is connected, or from a network file system, such as a broadcast file system (BFS) data carousel.
- When a new service is loaded, a decision must be made whether to terminate the other services and whether software for the other services will remain resident in processor working memory. In a typical general-purpose computer, virtual memory can be used for swapping programs and data resident in memory to local storage, such as a hard drive or non-volatile memory, thus effectively increasing the size of working memory. However, even if it had local storage devices such a hard disks, a typical embedded device would not have virtual memory or similar capabilities. Furthermore, the embedded device will also typically have a comparatively simpler operating system than a general purpose or personal computer, and it will not, in most cases, give the user explicit control over applications. Thus, the user cannot decide when applications are loaded or when applications quit.
- Without the advantage of virtual memory or a storage device such as a hard drive, dealing with memory allocation problems therefore presents a challenge for embedded devices. Handling memory allocation failure is complex for an applications developer or a system operator responsible for deploying software for implementing services on the device. However, rather than meet the challenge, an approach often used is to terminate programs for other services and reallocate memory to the new program.
- The invention, in a preferred form, is directed to solving one problems arising managing memory or other resources by multiple programs on embedded devices.
- In a preferred embodiment of the invention, memory resources for running services on an embedded device are, in effect, budgeted according to a management profile loaded onto the embedded device. The profile establishes classes for the services, and allows determination of the maximum number of services that can be loaded into working memory for each class. Each service class therefore functions as a logical group of services that limits the maximum number of services belonging to the class that can be loaded at the same time. Preferably, at least one service from each class can be loaded into working memory at any given time, with the option, depending on available memory and the memory resources required for a service within a class, of more than one service being permitted to be loaded for any given class. Classes thus ensure that at least one service from each class is not terminated, and permit more than one service to be loaded without running out of memory. As compared to unloading services or simply prioritizing services, classifying services and allocating resources based on class can offer several advantages and benefits.
- One advantage of a profile is that it permits, if the embedded device is part of a managed system or network, a system operator to establish and update the profile and load it onto the device, either through the network or during deployment. By establishing classes, a network operator, system manager, device developer, or other person can ensure proper operation of the embedded device. The profile can be downloaded to or updated on the device upon startup of the device, upon the occurrence of some other event, or at some preset schedule or interval.
- Use of classes can reduce activation time of important services by retaining some or all of the resources needed for the services in memory, thus avoiding the time it takes to load program resources from, for example, the network.
- Furthermore, having multiple classes also permits a system operator, for example, to ensure the embedded device behaves in a more predictable way from the point of view of the user, especially in a situation in which there are multiple third parties supplying programs for the services. For example, if services are prioritized rather than classified, the service that is unloaded when memory runs out will depend on the loaded services at that time. This means that activating service “A”, for example, on one occasion will unload service “B.” On another occasion, activating service “A” again may result in unloading service “C.” In such a system, users will not be able to predict which service will replace which in memory and they will have unpredictable activation times because sometimes the requested service will have to be loaded first. Such a system will tend to aggravate users. Classifying services can be used to ensure that certain services are not unloaded from memory, even if they are of a lower priority.
- Finally, allocating memory to classes appropriate to the size of the programs within that class will tend to reduce memory fragmentation. Classes may also be used to allow daemon processes to run in the background such that applications invisible to the user and out of his control could be used to do things like network, service and monitoring of the embedded device.
- For more complete understanding of the features and advantages of the invention, reference is now made to the detailed description of examples implementing preferred embodiments of the invention, along with the accompanying figures, wherein:
-
FIG. 1 is a block diagram of software processes on a embedded device; -
FIG. 2 illustrates a flow diagram of basic steps of a process for activating a service and managing memory usage by services; and -
FIG. 3 shows five exemplary high-level states for an applet running in accordance with an embodiment of the present invention and messages associated with state transitions. - The following detailed description is made in reference to a services management system implementing different aspects of a preferred embodiment of the invention. The services management system is intended only as an example to illustrate the subject matter as defined by the appended claims. The scope of the invention is not intended to be limited to this example, but to include such all embodiments and examples coming within the scope of the claims when the terms used in the claims are given their ordinary and customary meaning, and substantial equivalents.
- A service is a unit of user functionality, implemented by one or more programs and/or data files being executed by the user device. A service management system could be implemented as part of an operating system or as a separate program that preferably remains resident in memory and running, and controls, among other things, loading and unloading from memory of programs and resources for providing a service requested by a user of the embedded device.
- In the example illustrated in
FIG. 1 ,system 100 represents a device with an embedded microprocessor or substantially similar circuitry and working memory, such as random access memory (RAM), into which program instructions are loaded for execution and data for use by the program stored. The microprocessor, memory and other hardware are represented byblock 105. The device could be, for example, a cable or satellite television set top box, a television with such capabilities built into it, a mobile or cellular telephone, or other mobile communication device. Theboxes - A services management system is implemented in the illustrated example as part of a
master application 150 rather than as part ofoperating system 170 orresident application 160. In other words, the master application is performing the tasks of managing use of resources, particularly, but not necessarily limited to, memory, by programs implementing services.Services 110 represent units of user functionality. Services are implemented by applications. A single application could, if desired, implement more than one service. Theresident application 160 represents a program or collection of programs that provides the basic, device-specific functionality for the embedded device. For a cable set top box it would provide, among other things, basic cable television set top box functions. Theoperating system 170 represents a collection of basic functions and services for, among other things, interacting with hardware that can be called by applications running on the embedded device. - In this particular example, services are preferably implemented using “little” applications called
applets 130. The applets preferably make calls primarily, if not entirely, tomaster application 150, rather than to the operating system and/or resident application. The master application handles the tasks of interfacing with the resident application and the operating systems, making calls to theoperating system 170 and to theresident application 160 through APIs (not indicated in the figure). As will be discussed, the master application can also be used to manage memory use by services implemented with the applets, and the download of applets from the network. - Although use of a master application is not essential, the master application launching and terminating applets is one way to ensure effective resource management and utilization for the services. Thus, it provides advantages for embedded devices not having a services management system as part of its operating system or resident application. If the advantages of a master program with applets are not desired or required for implementing services, each service could be implemented with an application that calls directly the operating system and resident application, with network management system being implemented separately or, for example, as part of the operating system or resident application. For purposes of this description, and unless otherwise stated in the particular instance, the term “application” will generically refer to applications of all types and sizes, including “applets.”
- Services are grouped into
service classes 120. Two classes are shown in this example, but there could be more than two. A service class is a logical grouping of services that constrains the maximum number of services belonging to the class that can be loaded into memory of the device at the same time. If another service of the same class needs to be loaded and the maximum number of services is already loaded, the application(s) used to provide the service and any resources used by it (at least to the extent that are not shared) are unloaded from memory based on a predetermined scheme. Preferably, all defined classes fit in memory at the same time. Unloading the current service of a class before loading a new one helps to ensure enough free memory for the system to operate to improve chances of having a long running stable system. No matter how well software for the services is written, an embedded device with low memory capacity can eventually become unstable and may crash. Because all classes preferably fit in memory at the same time, and the current service of a class is unloaded before loading a new one, there should always be enough free memory for the system to operate and an increased likelihood of a long-running stable system is obtained. -
FIG. 2 illustrates basic steps of processes of loading services and managing memory use by services. When a user of the device selects or requests a new service, as indicated bystep 202, the process determines atstep 204 the class for the service and determines atstep 206 whether a maximum number of services for the class are already loaded in working memory. If a maximum number of services for the class is already loaded, a loaded service in the class is selected for unloading. The application and preferably also any non-shared resources, for the selected service are unloaded atstep 208. More than one service could be selected for unloading. Typically, the oldest service—the one that was least recently used—is chosen for unloading. However, a priority scheme based on other criteria could be used for selecting a service for unloading. - The maximum number of services is preferably set to a predetermined number. It could also, or alternately, be dynamically determined at the time based on available memory known sizes of the applet and related sources of the service, available memory, and other criteria. For example, a system manager sets a class maximum to three services. During runtime, if it is determined that an insufficient amount of memory would be freed by unloading just one service, then two services could be unloaded. The two services being unloaded are chosen based on a priority scheme, such as time since last use or a combination of criteria.
- Furthermore, it may not always be possible to perfectly budget available memory using service classes. Memory fragmentation makes it hard to completely budget memory. Even if the memory is available, it may be too fragmented to be usable. Also, services of a class will not always be the same size. The class will not therefore always use the same amount of memory; budgeting for the worst case of each class may be too restrictive. Therefore, there may be a situation in which there will not be enough memory to load the requested service after unloading one or more services in a class. When this happens, service priorities are preferably used by the management system to choose which service should be unloaded to make room.
- After unloading of a service, the process will, optionally, request or handle optimization of memory at
step 210 in order to maximize contiguous free memory spaces in order to reduce memory fragmentation. Atstep 212, memory requirements for the service are (if they have not already been determined) determined and memory allocation is requested of the operating system for the application and additional resources required for the service. The application for the service is then loaded and run, as indicated bysteps - The process of
FIG. 2 is performed by or under the control of themaster application 150, though it could be, as previously indicated, implemented by other programs running on the embedded device. - Referring to
FIG. 1 , the information used by the process ofFIG. 2 for determining which class a service belongs to and the maximum number of services permitted for a class is stored in alisting 182 in amanifest 180. The manifest is implemented, for example, as one or more files stored on the embedded device. The one or more files containing the manifest are, in this example, preferably downloaded from one or more servers, represented byserver 185 inFIG. 1 , over anetwork 195 to which the embedded device is connected (or connectable) for communication. This permits updating of the manifest by an operator, administrator or manager. Additional information may be stored in the manifest. In a preferred implementation, the manifest is stored as part of one or more XML files; however, no particular type of file need be used. In the exemplary embodiment ofFIG. 1 , the one or morefiles storing manifest 180 comprises, at least in part, a configuration file formaster application 150. The manifest thus represents and embodies at least in part a management profile for the services management system for a particular type of embedded device. Different management profiles are typically defined for different types of embedded devices, as well as embedded devices of the same type but different capabilities. Thus, for example, the management profile for an embedded device with 8 MB of memory will need to be more restrictive in terms of memory resource allocations than the management profile for the same type of device having 16 MB of memory. - In an exemplary embodiment of the manifest, service class is defined as a name, a list of services comprised in the service class, and a maximum number of services belonging to the service class that can be loaded at one time. The service class definitions are indicated by
block 182 inFIG. 1 . A service definition preferably indicates its name, its default application (or applet) and its priority. Service definitions are indicated byblock 184 inFIG. 1 . In a preferred embodiment, the manifest further comprisesapplet definitions 186 and management profiles (not indicated). Applet definitions tell the master application the files to preload before launching an applet. Management profiles tell the master application how the services should be managed on a specific type of embedded device. The manifest may also include parameters such as a logging server IP address and an HTTP proxy address. The configuration file storing themanifest 180 can be changed at anytime. The master application preferably looks for changes to the manifest stored on a network, such as on a broadcast file system, every time it is activated. The master application preferably runs on the most current manifest. - A services management system allows network operators and other types of managers of embedded devices to prioritize some services over others so that activation of important services takes less time, minimizes memory fragmentation, and allows daemon applets to run in the background out of the user's control and sight. In turn, applications are invisible to the user and out of the user's control and can be used for tasks such as, networking, servicing, and, in the example of cell phones, monitoring of the telephone, for example. The service management system allows prioritizing of some services over others so that activation of important services takes less time.
- The services management system also enables predictable system behavior from the point of view of the user. By using classes, an embedded device's memory can be budgeted in such a way that service unloading will be easily predictable so that it can be documented to users. Even if documentation is not presented to the users, users may pick up the budgeting and classes by themselves because of, in part, the predictability and repeatability of the management process. As an example, consider a cable television set top box having a service guide, Internet browser and ten games. The service guide uses 500 KB of RAM, the browser 3000 KB and the games use 1000 KB each. Assume that the device only has 8000 KB of RAM and 5000 KB of free RAM after the resident application and the master application are loaded. The following service classes could be defined: a guide class for the service guide, a browser class for the Internet browser; and a game class for all 10 games. The limit of loaded services for each class is set to one. In the present example, this only affects the game class because it is the only class with more than one service. The service guide and the browser will always be in working memory and will be available in an instant. Also, there will always be one game instantly available. When the user activates another game, the one that was already loaded will be the service that is unloaded. Unloading the previous game to load a new game can be readily understood and anticipated by the user. If some devices to be served have 16 MB of RAM, the priority classes could afford to load 9 games at the same time. Another management profile for the 16 MB STBs could be readily defined to allow 9 games loaded at a time. The only change needed would be to raise the limit of loaded services of the game class to 9. In turn, 9 out of 10 of the games could be loaded at the same time.
- The manifest also preferably includes an indicating priority for each service. Service priority is beneficial because it may not always be possible to perfectly budget available memory using service classes. Memory fragmentation makes it hard to completely budget memory because even if the memory is there, it may be too fragmented to really be usable. Also, services of a class will not always be the same size so that the class will not always use the same amount of memory and budgeting for the worst case of each class may be too restrictive.
- When the
master application 150 is deployed side by side with other services not managed by the master application, instead of budgeting all the device's memory with the master application acting as the service management system, a network operator or other manager of the embedded device decides the amount of memory to leave for other services. The total amount of memory that the master application is allowed to use can be specified in the configuration file for the master application. If the master application is unable to allocate memory for its own use, it preferably compares the total memory that it is using with the limit that it is allowed to use. If it is using less than the limit, it could, for example, ask the resident application to make room. The resident application will in turn ask the other services to free some memory. On the other hand, if the master application is already using its limit, it can free memory internally by unloading the service with the smallest priority. If one of the other unmanaged services runs out of memory, it will also ask the resident application to make room. In turn, the resident application will ask the master application to free memory and the master application will unload the low priority service. - Turning now to details of preferred implementations of applets, applets in the preferred embodiment can be written in a high level language such as C++, resembling a standard event-driven computer program or a multimedia application, such as an application written in an animated graphics platform such as Adobe® Flash®, Microsoft®, Silverlight® or similar platform. In an applet written in a high level language, events such as activation requests and suspension requests are sent to the applet by the master application via messages. User input, such as remote control keys, are preferably sent to the applet by the master application via messages, as well. An applet written in a multi-media authoring environment, such as Adobe® Flash®, movie stored in a SWF file is simpler than a C++ applet because a player on the embedded device controls all the different applet states automatically without messages sent via the master application. The script interpreter in the player, such as an Action Script interpreter in a player that plays SWF files, has built-in script objects such that the SWF encoded applet can make calls to control screen viewing size, or to activate other applets and services.
- The compiled code of a C++ applet is preferably packaged in a component form. In a preferred embodiment, components are the smallest unit of native code that the master application manages. Even if a service is made up of several components, each component can be loaded and unloaded independently by the master application. An applet component is simply the compiled code of a C++ applet packaged in a component form. A shared component is a C++ shared library packaged in the same way. According to another exemplary embodiment, functionality shared by more than one applet can be packaged in a shared component instead of being included in all the applets that need to use it. Shared components reduce the bandwidth used on a network or on, for example, a broadcast file system, from which the components are downloaded, and the physical memory used on the processor-based device.
- Therefore, in this exemplary embodiment, a
player 152 for reading, interpreting and rendering animated graphics or multimedia files, such as SWF encoded files, is implemented as a shared component. The master application uses theplayer 152 to execute multimedia applets, for example those encoded in a SWF file. Since the player is a shared component, only one player is needed even if there are multiple multimedia applets. - Any kind of data that an applet needs for execution is a resource. Sounds, images, and string tables are examples of resources, but this list is not exhaustive. Related resources can, preferably, be put into a single file, called a resource package. An applet may use two types of resource packages, a localized resource package and a non-localized resource package. Localized packages may contain all language-dependent resources. A non-localized package may contain all the language-independent resources.
- For example, in an exemplary embodiment, a localized resource package file will be available on the network to which an embedded device belongs for each supported language. The master application's preloader 190 (
FIG. 1 ) will automatically select the correct localized package file when the applet is loaded from the network. Resources and resource packages are preferably shared by applets to minimize memory and bandwidth requirements. - Referring now only to
FIG. 1 , all the files needed for anapplet 150 to run are preferably indicated in theapplet section 186 of themanifest 180. When an applet needs to be loaded, thepreloader 190 loads all the necessary files simultaneously from the network, which can be from a designated server on the network or from, for example, a network file system or broadcast file system. When the files are stored on a broadcast file system, a manifest specifying that all files that need to be loaded allows all of them to be loaded in a single carousel cycle, rather than sequentially over several cycles. When the applet is launched, its resources will already be loaded and it will be ready to run immediately. -
Preloader 190, which could be made part of themaster application 150, executes a process of loading ofapplets 130 from a network location. One example of a preloader is described in United States published patent application no. 2007/0033239 A1, titled “Preloading resources from data carousel of broadcast file system,” which is incorporated herein by reference. In a cable television system, the applets could be downloaded from a broadcast file system, for example. In the illustrated example, a modular approach is preferably used to load applets. An applet may need several files to run, to include, the applet component or applet code, a localized resource package, and a non-localized resource package. All the files needed for an applet to run are indicated in the correspondingapplet definition 186 of themanifest 180. When an applet needs to be loaded, thepreloader 190 loads all the necessary files simultaneously from, for example, the broadcast file system, allowing all needed files to be loaded in a single carousel cycle. Further, when an applet is launched, its resources will be already loaded and it will be ready to run immediately. The use of the preloader and the modular method results in low bandwidth demands without sacrificing fast loading times. - Another advantage of a master application separate from a resident application or operating system is that it can be adapted to existing embedded devices without modifying the resident application or operation system. For example, in a television set top box, the master application can link a service application manager (SAM), which is part of the resident application, to an applet being executed with the master application. In the SAM entry for the service, the master application is specified as the application for the service. The resident application will activate the master application when the resident program desires to activate service. The name of the service is put in a parameter string for the SAM entry. The name of the service is then used by the master application to look up specific information on the service in the manifest, which is the illustrated example stored as part of the manifest. When the master application is told by the resident application to activate the service for the first time, the master application will load the default applet for that service, if it is not already loaded, and will then activate the default applet.
- Service implementation need not be limited to only one applet. An applet can activate other applets, without directions from the resident application. The master application will load the called applet, suspend the active applet, and activate the newly loaded applet. Inside a service, applets are preferably stacked. When the top one quits, the previous one is reactivated. If the service is suspended by the resident application, the master application will suspend the top applet. When the resident application reactivates the service, the master application will reactivate the top applet of the service.
-
FIG. 3 illustrates a state machine which, in a preferred embodiment, each applet implements. At least five high-level states are supported:initial state 310; suspendedstate 320;active state 330; terminatingstate 340; and terminatedstate 350. These states are intended to be representative only. Fewer or more states could be supported. - The
initial state 310 is at the start of the applet, when the applet is instantiated and the applet performs its initialization. During this time the master application initializes the run-time environment. When the initialization by the master application is completed, the main thread of the applet receives amessage 315. After receiving themessage 315, the applet moves to the suspendedstate 320. In a preferred embodiment, two events can start an applet. In one event, the resident application tells the master application to activate service when the service is not already loaded in the embedded device. When this event starts an applet, the master application preferably loads and starts the default applet for the desired service. In another event, a first applet causes a second applet to be started by calling a predefined method to activate the second applet. In the suspended state, a suspended applet is not the active applet. There is no interaction with the user in the suspended state. When a user of the embedded device reactivates the applet, the main thread will receive amessage 322 to indicate that the applet should go into the active state. A second message can be received to exit the suspendedstate 320. Whenmessage 326 is received, the applet will go to the terminatingstate 340 and quit 350. This message could be received by the applet if the master application needs more memory and frees memory by quitting some service.Message 336 can also change anactive state 330 to the terminatingstate 340. From the terminatingstate 340,message 342 changes the state to terminated 350. - The foregoing description is of exemplary and preferred embodiments implementing different aspects and teachings of the invention. The invention, as defined by the appended claims, is not limited to the described embodiments. Alterations and modifications to the disclosed embodiments may be made without departing from the invention. The meaning of the terms used in this specification are, unless expressly stated otherwise, intended to have ordinary and customary meaning and are not intended to be limited to the details of the illustrated structures or the disclosed embodiments. None of the description should be read as implying that any particular element, step, or function is an essential element which must be included in the claim scope: the scope of patented subject matter is defined only by the allowed claims. None of these claims are intended to invoke paragraph six of 35 USC § 112 unless the exact words “means for” or “steps for” are followed by a participle.
Claims (36)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/163,737 US8522249B2 (en) | 2007-06-27 | 2008-06-27 | Management of software implemented services in processor-based devices |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US94664907P | 2007-06-27 | 2007-06-27 | |
US12/163,737 US8522249B2 (en) | 2007-06-27 | 2008-06-27 | Management of software implemented services in processor-based devices |
Publications (2)
Publication Number | Publication Date |
---|---|
US20090013157A1 true US20090013157A1 (en) | 2009-01-08 |
US8522249B2 US8522249B2 (en) | 2013-08-27 |
Family
ID=40222346
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/163,737 Expired - Fee Related US8522249B2 (en) | 2007-06-27 | 2008-06-27 | Management of software implemented services in processor-based devices |
Country Status (1)
Country | Link |
---|---|
US (1) | US8522249B2 (en) |
Cited By (70)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090211543A1 (en) * | 2008-02-25 | 2009-08-27 | Stephen Gardner Rasmussen | Air cooler |
US20090300173A1 (en) * | 2008-02-29 | 2009-12-03 | Alexander Bakman | Method, System and Apparatus for Managing, Modeling, Predicting, Allocating and Utilizing Resources and Bottlenecks in a Computer Network |
US20090307597A1 (en) * | 2008-03-07 | 2009-12-10 | Alexander Bakman | Unified management platform in a computer network |
US20100192212A1 (en) * | 2009-01-28 | 2010-07-29 | Gregory G. Raleigh | Automated device provisioning and activation |
US20100197266A1 (en) * | 2009-01-28 | 2010-08-05 | Headwater Partners I Llc | Device assisted cdr creation, aggregation, mediation and billing |
US20100197267A1 (en) * | 2009-01-28 | 2010-08-05 | Headwater Partners I Llc | Device group partitions and settlement platform |
US20100199325A1 (en) * | 2009-01-28 | 2010-08-05 | Headwater Partners I Llc | Security techniques for device assisted services |
US20100198939A1 (en) * | 2009-01-28 | 2010-08-05 | Headwater Partners I Llc | Device assisted services install |
US20100197268A1 (en) * | 2009-01-28 | 2010-08-05 | Headwater Partners I Llc | Enhanced roaming services and converged carrier networks with device assisted services and a proxy |
US20100195503A1 (en) * | 2009-01-28 | 2010-08-05 | Headwater Partners I Llc | Quality of service for device assisted services |
WO2012139072A1 (en) * | 2011-04-06 | 2012-10-11 | Headwater Partners I Llc | Distributing content and service launch objects to mobile devices |
US8351898B2 (en) | 2009-01-28 | 2013-01-08 | Headwater Partners I Llc | Verifiable device assisted service usage billing with integrated accounting, mediation accounting, and multi-account |
US20130013910A1 (en) * | 2010-03-22 | 2013-01-10 | Bull Sas | Method and device for optimizing loading and booting of an operating system in a computer system via a communication network |
US8406748B2 (en) | 2009-01-28 | 2013-03-26 | Headwater Partners I Llc | Adaptive ambient services |
US8589541B2 (en) | 2009-01-28 | 2013-11-19 | Headwater Partners I Llc | Device-assisted services for protecting network capacity |
US8606911B2 (en) | 2009-03-02 | 2013-12-10 | Headwater Partners I Llc | Flow tagging for service policy implementation |
US8626115B2 (en) | 2009-01-28 | 2014-01-07 | Headwater Partners I Llc | Wireless network service interfaces |
US8635335B2 (en) | 2009-01-28 | 2014-01-21 | Headwater Partners I Llc | System and method for wireless network offloading |
US8725123B2 (en) | 2008-06-05 | 2014-05-13 | Headwater Partners I Llc | Communications device with secure data path processing agents |
US8745191B2 (en) | 2009-01-28 | 2014-06-03 | Headwater Partners I Llc | System and method for providing user notifications |
US8788615B1 (en) * | 2009-10-02 | 2014-07-22 | Adobe Systems Incorporated | Systems and methods for creating and using electronic content that requires a shared library |
US8793758B2 (en) | 2009-01-28 | 2014-07-29 | Headwater Partners I Llc | Security, fraud detection, and fraud mitigation in device-assisted services systems |
US8832777B2 (en) | 2009-03-02 | 2014-09-09 | Headwater Partners I Llc | Adapting network policies based on device service processor configuration |
US8893009B2 (en) | 2009-01-28 | 2014-11-18 | Headwater Partners I Llc | End user device that secures an association of application to service policy with an application certificate check |
US8898293B2 (en) | 2009-01-28 | 2014-11-25 | Headwater Partners I Llc | Service offer set publishing to device agent with on-device service selection |
US8924469B2 (en) | 2008-06-05 | 2014-12-30 | Headwater Partners I Llc | Enterprise access control and accounting allocation for access networks |
US8924543B2 (en) | 2009-01-28 | 2014-12-30 | Headwater Partners I Llc | Service design center for device assisted services |
US9094311B2 (en) | 2009-01-28 | 2015-07-28 | Headwater Partners I, Llc | Techniques for attribution of mobile device data traffic to initiating end-user application |
US9154826B2 (en) | 2011-04-06 | 2015-10-06 | Headwater Partners Ii Llc | Distributing content and service launch objects to mobile devices |
US9253663B2 (en) | 2009-01-28 | 2016-02-02 | Headwater Partners I Llc | Controlling mobile device communications on a roaming network based on device state |
US9351193B2 (en) | 2009-01-28 | 2016-05-24 | Headwater Partners I Llc | Intermediate networking devices |
US9392462B2 (en) | 2009-01-28 | 2016-07-12 | Headwater Partners I Llc | Mobile end-user device with agent limiting wireless data communication for specified background applications based on a stored policy |
US20160304709A1 (en) * | 2012-11-29 | 2016-10-20 | Borealis Ag | Tiger stripe modifier |
US9495222B1 (en) | 2011-08-26 | 2016-11-15 | Dell Software Inc. | Systems and methods for performance indexing |
US20160349962A1 (en) * | 2014-02-14 | 2016-12-01 | Shell Internet (Beijing) Security Technology Co., Ltd. | Method and apparatus for starting an application in a screen-locked state |
US9557889B2 (en) | 2009-01-28 | 2017-01-31 | Headwater Partners I Llc | Service plan design, user interfaces, application programming interfaces, and device management |
US9565707B2 (en) | 2009-01-28 | 2017-02-07 | Headwater Partners I Llc | Wireless end-user device with wireless data attribution to multiple personas |
US9572019B2 (en) | 2009-01-28 | 2017-02-14 | Headwater Partners LLC | Service selection set published to device agent with on-device service selection |
US9578182B2 (en) | 2009-01-28 | 2017-02-21 | Headwater Partners I Llc | Mobile device and service management |
US9647918B2 (en) | 2009-01-28 | 2017-05-09 | Headwater Research Llc | Mobile device and method attributing media services network usage to requesting application |
US9706061B2 (en) | 2009-01-28 | 2017-07-11 | Headwater Partners I Llc | Service design center for device assisted services |
US9755842B2 (en) | 2009-01-28 | 2017-09-05 | Headwater Research Llc | Managing service user discovery and service launch object placement on a device |
US9858559B2 (en) | 2009-01-28 | 2018-01-02 | Headwater Research Llc | Network service plan design |
US9954975B2 (en) | 2009-01-28 | 2018-04-24 | Headwater Research Llc | Enhanced curfew and protection associated with a device group |
US9955332B2 (en) | 2009-01-28 | 2018-04-24 | Headwater Research Llc | Method for child wireless device activation to subscriber account of a master wireless device |
US9980146B2 (en) | 2009-01-28 | 2018-05-22 | Headwater Research Llc | Communications device with secure data path processing agents |
US20180229529A1 (en) * | 2014-12-24 | 2018-08-16 | Hewlett-Packard Development Company, L.P. | Coated print medium |
US10057775B2 (en) | 2009-01-28 | 2018-08-21 | Headwater Research Llc | Virtualized policy and charging system |
US10064055B2 (en) | 2009-01-28 | 2018-08-28 | Headwater Research Llc | Security, fraud detection, and fraud mitigation in device-assisted services systems |
US10171995B2 (en) | 2013-03-14 | 2019-01-01 | Headwater Research Llc | Automated credential porting for mobile devices |
US10200541B2 (en) | 2009-01-28 | 2019-02-05 | Headwater Research Llc | Wireless end-user device with divided user space/kernel space traffic policy system |
US10237757B2 (en) | 2009-01-28 | 2019-03-19 | Headwater Research Llc | System and method for wireless network offloading |
US10248996B2 (en) | 2009-01-28 | 2019-04-02 | Headwater Research Llc | Method for operating a wireless end-user device mobile payment agent |
US10264138B2 (en) | 2009-01-28 | 2019-04-16 | Headwater Research Llc | Mobile device and service management |
US10326800B2 (en) | 2009-01-28 | 2019-06-18 | Headwater Research Llc | Wireless network service interfaces |
US20190188000A1 (en) * | 2017-12-20 | 2019-06-20 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Method for Preloading Application, Computer Readable Storage Medium, and Terminal Device |
US10492102B2 (en) | 2009-01-28 | 2019-11-26 | Headwater Research Llc | Intermediate networking devices |
US10567213B1 (en) * | 2017-07-06 | 2020-02-18 | Binaris Inc | Systems and methods for selecting specific code segments in conjunction with executing requested tasks |
US10715342B2 (en) | 2009-01-28 | 2020-07-14 | Headwater Research Llc | Managing service user discovery and service launch object placement on a device |
US10779177B2 (en) | 2009-01-28 | 2020-09-15 | Headwater Research Llc | Device group partitions and settlement platform |
US10783581B2 (en) | 2009-01-28 | 2020-09-22 | Headwater Research Llc | Wireless end-user device providing ambient or sponsored services |
US10798252B2 (en) | 2009-01-28 | 2020-10-06 | Headwater Research Llc | System and method for providing user notifications |
US10841839B2 (en) | 2009-01-28 | 2020-11-17 | Headwater Research Llc | Security, fraud detection, and fraud mitigation in device-assisted services systems |
US11218854B2 (en) | 2009-01-28 | 2022-01-04 | Headwater Research Llc | Service plan design, user interfaces, application programming interfaces, and device management |
US11412366B2 (en) | 2009-01-28 | 2022-08-09 | Headwater Research Llc | Enhanced roaming services and converged carrier networks with device assisted services and a proxy |
EP4064086A1 (en) * | 2021-03-23 | 2022-09-28 | Samsung Electronics Co., Ltd. | Secure applications in computational storage devices |
US11973804B2 (en) | 2009-01-28 | 2024-04-30 | Headwater Research Llc | Network service plan design |
WO2024091461A1 (en) * | 2022-10-24 | 2024-05-02 | Snap Inc. | Service manager on a wearable device |
US11985155B2 (en) | 2009-01-28 | 2024-05-14 | Headwater Research Llc | Communications device with secure data path processing agents |
US12137004B2 (en) | 2009-01-28 | 2024-11-05 | Headwater Research Llc | Device group partitions and settlement platform |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9571559B2 (en) | 2009-01-28 | 2017-02-14 | Headwater Partners I Llc | Enhanced curfew and protection associated with a device group |
US8725585B1 (en) | 2010-05-18 | 2014-05-13 | Google Inc. | Automatic vetting of web applications to be listed in a marketplace for web applications |
US9736121B2 (en) * | 2012-07-16 | 2017-08-15 | Owl Cyber Defense Solutions, Llc | File manifest filter for unidirectional transfer of files |
CN105340246A (en) * | 2014-05-29 | 2016-02-17 | 华为技术有限公司 | Method, apparatus and device for managing system resource |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5009276A (en) * | 1990-01-16 | 1991-04-23 | Pitney Bowes Inc. | Electronic postal scale with multilingual operator prompts and report headings |
US20020073245A1 (en) * | 2000-12-12 | 2002-06-13 | Jason Hallford | Dynamically loading program code over a push-based network |
US20040088415A1 (en) * | 2002-11-06 | 2004-05-06 | Oracle International Corporation | Techniques for scalably accessing data in an arbitrarily large document by a device with limited resources |
US20060248508A1 (en) * | 2005-04-29 | 2006-11-02 | Symbol Technologies, Inc. | Method and system for applet extensibility application program interface (API) |
US20060282766A1 (en) * | 2005-06-14 | 2006-12-14 | Microsoft Corporation | Markup language stylization |
US20070124322A1 (en) * | 2005-11-28 | 2007-05-31 | Marek Meyer | Lossless format-dependent analysis and modification of multi-document e-learning resources |
US20070232394A1 (en) * | 2002-04-10 | 2007-10-04 | Wms Gaming Inc. | Gaming software authentication |
-
2008
- 2008-06-27 US US12/163,737 patent/US8522249B2/en not_active Expired - Fee Related
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5009276A (en) * | 1990-01-16 | 1991-04-23 | Pitney Bowes Inc. | Electronic postal scale with multilingual operator prompts and report headings |
US20020073245A1 (en) * | 2000-12-12 | 2002-06-13 | Jason Hallford | Dynamically loading program code over a push-based network |
US20070232394A1 (en) * | 2002-04-10 | 2007-10-04 | Wms Gaming Inc. | Gaming software authentication |
US20040088415A1 (en) * | 2002-11-06 | 2004-05-06 | Oracle International Corporation | Techniques for scalably accessing data in an arbitrarily large document by a device with limited resources |
US20060248508A1 (en) * | 2005-04-29 | 2006-11-02 | Symbol Technologies, Inc. | Method and system for applet extensibility application program interface (API) |
US20060282766A1 (en) * | 2005-06-14 | 2006-12-14 | Microsoft Corporation | Markup language stylization |
US20070124322A1 (en) * | 2005-11-28 | 2007-05-31 | Marek Meyer | Lossless format-dependent analysis and modification of multi-document e-learning resources |
Cited By (264)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090211543A1 (en) * | 2008-02-25 | 2009-08-27 | Stephen Gardner Rasmussen | Air cooler |
US20090300173A1 (en) * | 2008-02-29 | 2009-12-03 | Alexander Bakman | Method, System and Apparatus for Managing, Modeling, Predicting, Allocating and Utilizing Resources and Bottlenecks in a Computer Network |
US8903983B2 (en) | 2008-02-29 | 2014-12-02 | Dell Software Inc. | Method, system and apparatus for managing, modeling, predicting, allocating and utilizing resources and bottlenecks in a computer network |
US20090307597A1 (en) * | 2008-03-07 | 2009-12-10 | Alexander Bakman | Unified management platform in a computer network |
US8935701B2 (en) * | 2008-03-07 | 2015-01-13 | Dell Software Inc. | Unified management platform in a computer network |
US8725123B2 (en) | 2008-06-05 | 2014-05-13 | Headwater Partners I Llc | Communications device with secure data path processing agents |
US8924469B2 (en) | 2008-06-05 | 2014-12-30 | Headwater Partners I Llc | Enterprise access control and accounting allocation for access networks |
US9386121B2 (en) | 2009-01-28 | 2016-07-05 | Headwater Partners I Llc | Method for providing an adaptive wireless ambient service to a mobile device |
US20100188995A1 (en) * | 2009-01-28 | 2010-07-29 | Gregory G. Raleigh | Verifiable and accurate service usage monitoring for intermediate networking devices |
US20100188992A1 (en) * | 2009-01-28 | 2010-07-29 | Gregory G. Raleigh | Service profile management with user preference, adaptive policy, network neutrality and user privacy for intermediate networking devices |
US9491564B1 (en) | 2009-01-28 | 2016-11-08 | Headwater Partners I Llc | Mobile device and method with secure network messaging for authorized components |
US20100197266A1 (en) * | 2009-01-28 | 2010-08-05 | Headwater Partners I Llc | Device assisted cdr creation, aggregation, mediation and billing |
US20100197267A1 (en) * | 2009-01-28 | 2010-08-05 | Headwater Partners I Llc | Device group partitions and settlement platform |
US20100199325A1 (en) * | 2009-01-28 | 2010-08-05 | Headwater Partners I Llc | Security techniques for device assisted services |
US20100198939A1 (en) * | 2009-01-28 | 2010-08-05 | Headwater Partners I Llc | Device assisted services install |
US20100197268A1 (en) * | 2009-01-28 | 2010-08-05 | Headwater Partners I Llc | Enhanced roaming services and converged carrier networks with device assisted services and a proxy |
US20100195503A1 (en) * | 2009-01-28 | 2010-08-05 | Headwater Partners I Llc | Quality of service for device assisted services |
US8250207B2 (en) | 2009-01-28 | 2012-08-21 | Headwater Partners I, Llc | Network based ambient services |
US8270310B2 (en) | 2009-01-28 | 2012-09-18 | Headwater Partners I, Llc | Verifiable device assisted service policy implementation |
US8270952B2 (en) | 2009-01-28 | 2012-09-18 | Headwater Partners I Llc | Open development system for access service providers |
US8275830B2 (en) | 2009-01-28 | 2012-09-25 | Headwater Partners I Llc | Device assisted CDR creation, aggregation, mediation and billing |
US12200786B2 (en) | 2009-01-28 | 2025-01-14 | Headwater Research Llc | Enterprise access control and accounting allocation for access networks |
US8321526B2 (en) | 2009-01-28 | 2012-11-27 | Headwater Partners I, Llc | Verifiable device assisted service usage billing with integrated accounting, mediation accounting, and multi-account |
US8326958B1 (en) | 2009-01-28 | 2012-12-04 | Headwater Partners I, Llc | Service activation tracking system |
US8331901B2 (en) | 2009-01-28 | 2012-12-11 | Headwater Partners I, Llc | Device assisted ambient services |
US8340634B2 (en) | 2009-01-28 | 2012-12-25 | Headwater Partners I, Llc | Enhanced roaming services and converged carrier networks with device assisted services and a proxy |
US12184700B2 (en) | 2009-01-28 | 2024-12-31 | Headwater Research Llc | Automated device provisioning and activation |
US8351898B2 (en) | 2009-01-28 | 2013-01-08 | Headwater Partners I Llc | Verifiable device assisted service usage billing with integrated accounting, mediation accounting, and multi-account |
US12166596B2 (en) | 2009-01-28 | 2024-12-10 | Disney Enterprises, Inc. | Device-assisted services for protecting network capacity |
US8355337B2 (en) | 2009-01-28 | 2013-01-15 | Headwater Partners I Llc | Network based service profile management with user preference, adaptive policy, network neutrality, and user privacy |
US8385916B2 (en) | 2009-01-28 | 2013-02-26 | Headwater Partners I Llc | Automated device provisioning and activation |
US8391834B2 (en) | 2009-01-28 | 2013-03-05 | Headwater Partners I Llc | Security techniques for device assisted services |
US8396458B2 (en) | 2009-01-28 | 2013-03-12 | Headwater Partners I Llc | Automated device provisioning and activation |
US8402111B2 (en) | 2009-01-28 | 2013-03-19 | Headwater Partners I, Llc | Device assisted services install |
US8406733B2 (en) | 2009-01-28 | 2013-03-26 | Headwater Partners I Llc | Automated device provisioning and activation |
US8406748B2 (en) | 2009-01-28 | 2013-03-26 | Headwater Partners I Llc | Adaptive ambient services |
US8437271B2 (en) | 2009-01-28 | 2013-05-07 | Headwater Partners I Llc | Verifiable and accurate service usage monitoring for intermediate networking devices |
US8441989B2 (en) | 2009-01-28 | 2013-05-14 | Headwater Partners I Llc | Open transaction central billing system |
US8467312B2 (en) | 2009-01-28 | 2013-06-18 | Headwater Partners I Llc | Verifiable and accurate service usage monitoring for intermediate networking devices |
US8478667B2 (en) | 2009-01-28 | 2013-07-02 | Headwater Partners I Llc | Automated device provisioning and activation |
US8516552B2 (en) | 2009-01-28 | 2013-08-20 | Headwater Partners I Llc | Verifiable service policy implementation for intermediate networking devices |
US8527630B2 (en) | 2009-01-28 | 2013-09-03 | Headwater Partners I Llc | Adaptive ambient services |
US8531986B2 (en) | 2009-01-28 | 2013-09-10 | Headwater Partners I Llc | Network tools for analysis, design, testing, and production of services |
US8548428B2 (en) | 2009-01-28 | 2013-10-01 | Headwater Partners I Llc | Device group partitions and settlement platform |
US8547872B2 (en) | 2009-01-28 | 2013-10-01 | Headwater Partners I Llc | Verifiable and accurate service usage monitoring for intermediate networking devices |
US8570908B2 (en) | 2009-01-28 | 2013-10-29 | Headwater Partners I Llc | Automated device provisioning and activation |
US8583781B2 (en) | 2009-01-28 | 2013-11-12 | Headwater Partners I Llc | Simplified service network architecture |
US8588110B2 (en) | 2009-01-28 | 2013-11-19 | Headwater Partners I Llc | Verifiable device assisted service usage billing with integrated accounting, mediation accounting, and multi-account |
US8589541B2 (en) | 2009-01-28 | 2013-11-19 | Headwater Partners I Llc | Device-assisted services for protecting network capacity |
US12143909B2 (en) | 2009-01-28 | 2024-11-12 | Headwater Research Llc | Service plan design, user interfaces, application programming interfaces, and device management |
US8626115B2 (en) | 2009-01-28 | 2014-01-07 | Headwater Partners I Llc | Wireless network service interfaces |
US8630192B2 (en) | 2009-01-28 | 2014-01-14 | Headwater Partners I Llc | Verifiable and accurate service usage monitoring for intermediate networking devices |
US8630617B2 (en) | 2009-01-28 | 2014-01-14 | Headwater Partners I Llc | Device group partitions and settlement platform |
US8631102B2 (en) | 2009-01-28 | 2014-01-14 | Headwater Partners I Llc | Automated device provisioning and activation |
US8630630B2 (en) | 2009-01-28 | 2014-01-14 | Headwater Partners I Llc | Enhanced roaming services and converged carrier networks with device assisted services and a proxy |
US8630611B2 (en) | 2009-01-28 | 2014-01-14 | Headwater Partners I Llc | Automated device provisioning and activation |
US8634805B2 (en) | 2009-01-28 | 2014-01-21 | Headwater Partners I Llc | Device assisted CDR creation aggregation, mediation and billing |
US8635335B2 (en) | 2009-01-28 | 2014-01-21 | Headwater Partners I Llc | System and method for wireless network offloading |
US8634821B2 (en) | 2009-01-28 | 2014-01-21 | Headwater Partners I Llc | Device assisted services install |
US8635678B2 (en) | 2009-01-28 | 2014-01-21 | Headwater Partners I Llc | Automated device provisioning and activation |
US8639811B2 (en) | 2009-01-28 | 2014-01-28 | Headwater Partners I Llc | Automated device provisioning and activation |
US8640198B2 (en) | 2009-01-28 | 2014-01-28 | Headwater Partners I Llc | Automated device provisioning and activation |
US8639935B2 (en) | 2009-01-28 | 2014-01-28 | Headwater Partners I Llc | Automated device provisioning and activation |
US8666364B2 (en) | 2009-01-28 | 2014-03-04 | Headwater Partners I Llc | Verifiable device assisted service usage billing with integrated accounting, mediation accounting, and multi-account |
US8667571B2 (en) | 2009-01-28 | 2014-03-04 | Headwater Partners I Llc | Automated device provisioning and activation |
US8675507B2 (en) | 2009-01-28 | 2014-03-18 | Headwater Partners I Llc | Service profile management with user preference, adaptive policy, network neutrality and user privacy for intermediate networking devices |
US8688099B2 (en) | 2009-01-28 | 2014-04-01 | Headwater Partners I Llc | Open development system for access service providers |
US8695073B2 (en) | 2009-01-28 | 2014-04-08 | Headwater Partners I Llc | Automated device provisioning and activation |
US8713630B2 (en) | 2009-01-28 | 2014-04-29 | Headwater Partners I Llc | Verifiable service policy implementation for intermediate networking devices |
US8724554B2 (en) | 2009-01-28 | 2014-05-13 | Headwater Partners I Llc | Open transaction central billing system |
US20100191612A1 (en) * | 2009-01-28 | 2010-07-29 | Gregory G. Raleigh | Verifiable device assisted service usage monitoring with reporting, synchronization, and notification |
US8737957B2 (en) | 2009-01-28 | 2014-05-27 | Headwater Partners I Llc | Automated device provisioning and activation |
US8745191B2 (en) | 2009-01-28 | 2014-06-03 | Headwater Partners I Llc | System and method for providing user notifications |
US8745220B2 (en) | 2009-01-28 | 2014-06-03 | Headwater Partners I Llc | System and method for providing user notifications |
US8788661B2 (en) | 2009-01-28 | 2014-07-22 | Headwater Partners I Llc | Device assisted CDR creation, aggregation, mediation and billing |
US12137004B2 (en) | 2009-01-28 | 2024-11-05 | Headwater Research Llc | Device group partitions and settlement platform |
US8793758B2 (en) | 2009-01-28 | 2014-07-29 | Headwater Partners I Llc | Security, fraud detection, and fraud mitigation in device-assisted services systems |
US8797908B2 (en) | 2009-01-28 | 2014-08-05 | Headwater Partners I Llc | Automated device provisioning and activation |
US8799451B2 (en) | 2009-01-28 | 2014-08-05 | Headwater Partners I Llc | Verifiable service policy implementation for intermediate networking devices |
US12101434B2 (en) | 2009-01-28 | 2024-09-24 | Headwater Research Llc | Device assisted CDR creation, aggregation, mediation and billing |
US8839387B2 (en) | 2009-01-28 | 2014-09-16 | Headwater Partners I Llc | Roaming services network and overlay networks |
US8839388B2 (en) | 2009-01-28 | 2014-09-16 | Headwater Partners I Llc | Automated device provisioning and activation |
US8868455B2 (en) | 2009-01-28 | 2014-10-21 | Headwater Partners I Llc | Adaptive ambient services |
US8886162B2 (en) | 2009-01-28 | 2014-11-11 | Headwater Partners I Llc | Restricting end-user device communications over a wireless access network associated with a cost |
US8893009B2 (en) | 2009-01-28 | 2014-11-18 | Headwater Partners I Llc | End user device that secures an association of application to service policy with an application certificate check |
US8898293B2 (en) | 2009-01-28 | 2014-11-25 | Headwater Partners I Llc | Service offer set publishing to device agent with on-device service selection |
US8898079B2 (en) | 2009-01-28 | 2014-11-25 | Headwater Partners I Llc | Network based ambient services |
US8897743B2 (en) | 2009-01-28 | 2014-11-25 | Headwater Partners I Llc | Verifiable device assisted service usage billing with integrated accounting, mediation accounting, and multi-account |
US8897744B2 (en) | 2009-01-28 | 2014-11-25 | Headwater Partners I Llc | Device assisted ambient services |
US20100188991A1 (en) * | 2009-01-28 | 2010-07-29 | Gregory G. Raleigh | Network based service policy implementation with network neutrality and user privacy |
US8903452B2 (en) | 2009-01-28 | 2014-12-02 | Headwater Partners I Llc | Device assisted ambient services |
US20100192170A1 (en) * | 2009-01-28 | 2010-07-29 | Gregory G. Raleigh | Device assisted service profile management with user preference, adaptive policy, network neutrality, and user privacy |
US8924543B2 (en) | 2009-01-28 | 2014-12-30 | Headwater Partners I Llc | Service design center for device assisted services |
US8924549B2 (en) | 2009-01-28 | 2014-12-30 | Headwater Partners I Llc | Network based ambient services |
US20100191846A1 (en) * | 2009-01-28 | 2010-07-29 | Gregory G. Raleigh | Verifiable service policy inplementation for intermediate networking devices |
US8948025B2 (en) | 2009-01-28 | 2015-02-03 | Headwater Partners I Llc | Remotely configurable device agent for packet routing |
US9014026B2 (en) | 2009-01-28 | 2015-04-21 | Headwater Partners I Llc | Network based service profile management with user preference, adaptive policy, network neutrality, and user privacy |
US9026079B2 (en) | 2009-01-28 | 2015-05-05 | Headwater Partners I Llc | Wireless network service interfaces |
US9037127B2 (en) | 2009-01-28 | 2015-05-19 | Headwater Partners I Llc | Device agent for remote user configuration of wireless network access |
US9094311B2 (en) | 2009-01-28 | 2015-07-28 | Headwater Partners I, Llc | Techniques for attribution of mobile device data traffic to initiating end-user application |
US9137739B2 (en) | 2009-01-28 | 2015-09-15 | Headwater Partners I Llc | Network based service policy implementation with network neutrality and user privacy |
US9137701B2 (en) | 2009-01-28 | 2015-09-15 | Headwater Partners I Llc | Wireless end-user device with differentiated network access for background and foreground device applications |
US9143976B2 (en) | 2009-01-28 | 2015-09-22 | Headwater Partners I Llc | Wireless end-user device with differentiated network access and access status for background and foreground device applications |
US9154428B2 (en) | 2009-01-28 | 2015-10-06 | Headwater Partners I Llc | Wireless end-user device with differentiated network access selectively applied to different applications |
US11985155B2 (en) | 2009-01-28 | 2024-05-14 | Headwater Research Llc | Communications device with secure data path processing agents |
US9173104B2 (en) | 2009-01-28 | 2015-10-27 | Headwater Partners I Llc | Mobile device with device agents to detect a disallowed access to a requested mobile data service and guide a multi-carrier selection and activation sequence |
US9179308B2 (en) | 2009-01-28 | 2015-11-03 | Headwater Partners I Llc | Network tools for analysis, design, testing, and production of services |
US9179316B2 (en) | 2009-01-28 | 2015-11-03 | Headwater Partners I Llc | Mobile device with user controls and policy agent to control application access to device location data |
US9179359B2 (en) | 2009-01-28 | 2015-11-03 | Headwater Partners I Llc | Wireless end-user device with differentiated network access status for different device applications |
US9179315B2 (en) | 2009-01-28 | 2015-11-03 | Headwater Partners I Llc | Mobile device with data service monitoring, categorization, and display for different applications and networks |
US9198075B2 (en) | 2009-01-28 | 2015-11-24 | Headwater Partners I Llc | Wireless end-user device with differential traffic control policy list applicable to one of several wireless modems |
US9198076B2 (en) | 2009-01-28 | 2015-11-24 | Headwater Partners I Llc | Wireless end-user device with power-control-state-based wireless network access policy for background applications |
US9198117B2 (en) | 2009-01-28 | 2015-11-24 | Headwater Partners I Llc | Network system with common secure wireless message service serving multiple applications on multiple wireless devices |
US9198074B2 (en) | 2009-01-28 | 2015-11-24 | Headwater Partners I Llc | Wireless end-user device with differential traffic control policy list and applying foreground classification to roaming wireless data service |
US9198042B2 (en) | 2009-01-28 | 2015-11-24 | Headwater Partners I Llc | Security techniques for device assisted services |
US9204282B2 (en) | 2009-01-28 | 2015-12-01 | Headwater Partners I Llc | Enhanced roaming services and converged carrier networks with device assisted services and a proxy |
US9204374B2 (en) | 2009-01-28 | 2015-12-01 | Headwater Partners I Llc | Multicarrier over-the-air cellular network activation server |
US9215613B2 (en) | 2009-01-28 | 2015-12-15 | Headwater Partners I Llc | Wireless end-user device with differential traffic control policy list having limited user control |
US9215159B2 (en) | 2009-01-28 | 2015-12-15 | Headwater Partners I Llc | Data usage monitoring for media data services used by applications |
US9220027B1 (en) | 2009-01-28 | 2015-12-22 | Headwater Partners I Llc | Wireless end-user device with policy-based controls for WWAN network usage and modem state changes requested by specific applications |
US9225797B2 (en) | 2009-01-28 | 2015-12-29 | Headwater Partners I Llc | System for providing an adaptive wireless ambient service to a mobile device |
US9232403B2 (en) | 2009-01-28 | 2016-01-05 | Headwater Partners I Llc | Mobile device with common secure wireless message service serving multiple applications |
US9247450B2 (en) | 2009-01-28 | 2016-01-26 | Headwater Partners I Llc | Quality of service for device assisted services |
US9253663B2 (en) | 2009-01-28 | 2016-02-02 | Headwater Partners I Llc | Controlling mobile device communications on a roaming network based on device state |
US9258735B2 (en) | 2009-01-28 | 2016-02-09 | Headwater Partners I Llc | Device-assisted services for protecting network capacity |
US9271184B2 (en) | 2009-01-28 | 2016-02-23 | Headwater Partners I Llc | Wireless end-user device with per-application data limit and traffic control policy list limiting background application traffic |
US9270559B2 (en) | 2009-01-28 | 2016-02-23 | Headwater Partners I Llc | Service policy implementation for an end-user device having a control application or a proxy agent for routing an application traffic flow |
US9277433B2 (en) | 2009-01-28 | 2016-03-01 | Headwater Partners I Llc | Wireless end-user device with policy-based aggregation of network activity requested by applications |
US9277445B2 (en) | 2009-01-28 | 2016-03-01 | Headwater Partners I Llc | Wireless end-user device with differential traffic control policy list and applying foreground classification to wireless data service |
US9319913B2 (en) | 2009-01-28 | 2016-04-19 | Headwater Partners I Llc | Wireless end-user device with secure network-provided differential traffic control policy list |
US9351193B2 (en) | 2009-01-28 | 2016-05-24 | Headwater Partners I Llc | Intermediate networking devices |
US9386165B2 (en) | 2009-01-28 | 2016-07-05 | Headwater Partners I Llc | System and method for providing user notifications |
US20100192212A1 (en) * | 2009-01-28 | 2010-07-29 | Gregory G. Raleigh | Automated device provisioning and activation |
US9392462B2 (en) | 2009-01-28 | 2016-07-12 | Headwater Partners I Llc | Mobile end-user device with agent limiting wireless data communication for specified background applications based on a stored policy |
US11973804B2 (en) | 2009-01-28 | 2024-04-30 | Headwater Research Llc | Network service plan design |
US20100192120A1 (en) * | 2009-01-28 | 2010-07-29 | Gregory G. Raleigh | Open development system for access service providers |
US9491199B2 (en) | 2009-01-28 | 2016-11-08 | Headwater Partners I Llc | Security, fraud detection, and fraud mitigation in device-assisted services systems |
US8346225B2 (en) | 2009-01-28 | 2013-01-01 | Headwater Partners I, Llc | Quality of service for device assisted services |
US11966464B2 (en) | 2009-01-28 | 2024-04-23 | Headwater Research Llc | Security techniques for device assisted services |
US9521578B2 (en) | 2009-01-28 | 2016-12-13 | Headwater Partners I Llc | Wireless end-user device with application program interface to allow applications to access application-specific aspects of a wireless network access policy |
US9532261B2 (en) | 2009-01-28 | 2016-12-27 | Headwater Partners I Llc | System and method for wireless network offloading |
US9532161B2 (en) | 2009-01-28 | 2016-12-27 | Headwater Partners I Llc | Wireless device with application data flow tagging and network stack-implemented network access policy |
US9544397B2 (en) | 2009-01-28 | 2017-01-10 | Headwater Partners I Llc | Proxy server for providing an adaptive wireless ambient service to a mobile device |
US9557889B2 (en) | 2009-01-28 | 2017-01-31 | Headwater Partners I Llc | Service plan design, user interfaces, application programming interfaces, and device management |
US9565543B2 (en) | 2009-01-28 | 2017-02-07 | Headwater Partners I Llc | Device group partitions and settlement platform |
US9565707B2 (en) | 2009-01-28 | 2017-02-07 | Headwater Partners I Llc | Wireless end-user device with wireless data attribution to multiple personas |
US9572019B2 (en) | 2009-01-28 | 2017-02-14 | Headwater Partners LLC | Service selection set published to device agent with on-device service selection |
US9578182B2 (en) | 2009-01-28 | 2017-02-21 | Headwater Partners I Llc | Mobile device and service management |
US9591474B2 (en) | 2009-01-28 | 2017-03-07 | Headwater Partners I Llc | Adapting network policies based on device service processor configuration |
US9609544B2 (en) | 2009-01-28 | 2017-03-28 | Headwater Research Llc | Device-assisted services for protecting network capacity |
US9609459B2 (en) | 2009-01-28 | 2017-03-28 | Headwater Research Llc | Network tools for analysis, design, testing, and production of services |
US9615192B2 (en) | 2009-01-28 | 2017-04-04 | Headwater Research Llc | Message link server with plural message delivery triggers |
US11968234B2 (en) | 2009-01-28 | 2024-04-23 | Headwater Research Llc | Wireless network service interfaces |
US9641957B2 (en) | 2009-01-28 | 2017-05-02 | Headwater Research Llc | Automated device provisioning and activation |
US9647918B2 (en) | 2009-01-28 | 2017-05-09 | Headwater Research Llc | Mobile device and method attributing media services network usage to requesting application |
US9674731B2 (en) | 2009-01-28 | 2017-06-06 | Headwater Research Llc | Wireless device applying different background data traffic policies to different device applications |
US9705771B2 (en) | 2009-01-28 | 2017-07-11 | Headwater Partners I Llc | Attribution of mobile device data traffic to end-user application based on socket flows |
US9706061B2 (en) | 2009-01-28 | 2017-07-11 | Headwater Partners I Llc | Service design center for device assisted services |
US9749899B2 (en) | 2009-01-28 | 2017-08-29 | Headwater Research Llc | Wireless end-user device with network traffic API to indicate unavailability of roaming wireless connection to background applications |
US9749898B2 (en) | 2009-01-28 | 2017-08-29 | Headwater Research Llc | Wireless end-user device with differential traffic control policy list applicable to one of several wireless modems |
US9755842B2 (en) | 2009-01-28 | 2017-09-05 | Headwater Research Llc | Managing service user discovery and service launch object placement on a device |
US9769207B2 (en) | 2009-01-28 | 2017-09-19 | Headwater Research Llc | Wireless network service interfaces |
US9819808B2 (en) | 2009-01-28 | 2017-11-14 | Headwater Research Llc | Hierarchical service policies for creating service usage data records for a wireless end-user device |
US9858559B2 (en) | 2009-01-28 | 2018-01-02 | Headwater Research Llc | Network service plan design |
US9866642B2 (en) | 2009-01-28 | 2018-01-09 | Headwater Research Llc | Wireless end-user device with wireless modem power state control policy for background applications |
US9942796B2 (en) | 2009-01-28 | 2018-04-10 | Headwater Research Llc | Quality of service for device assisted services |
US9954975B2 (en) | 2009-01-28 | 2018-04-24 | Headwater Research Llc | Enhanced curfew and protection associated with a device group |
US9955332B2 (en) | 2009-01-28 | 2018-04-24 | Headwater Research Llc | Method for child wireless device activation to subscriber account of a master wireless device |
US9973930B2 (en) | 2009-01-28 | 2018-05-15 | Headwater Research Llc | End user device that secures an association of application to service policy with an application certificate check |
US9980146B2 (en) | 2009-01-28 | 2018-05-22 | Headwater Research Llc | Communications device with secure data path processing agents |
US10028144B2 (en) | 2009-01-28 | 2018-07-17 | Headwater Research Llc | Security techniques for device assisted services |
US11923995B2 (en) | 2009-01-28 | 2024-03-05 | Headwater Research Llc | Device-assisted services for protecting network capacity |
US10057141B2 (en) | 2009-01-28 | 2018-08-21 | Headwater Research Llc | Proxy system and method for adaptive ambient services |
US10057775B2 (en) | 2009-01-28 | 2018-08-21 | Headwater Research Llc | Virtualized policy and charging system |
US10064055B2 (en) | 2009-01-28 | 2018-08-28 | Headwater Research Llc | Security, fraud detection, and fraud mitigation in device-assisted services systems |
US10064033B2 (en) | 2009-01-28 | 2018-08-28 | Headwater Research Llc | Device group partitions and settlement platform |
US10070305B2 (en) | 2009-01-28 | 2018-09-04 | Headwater Research Llc | Device assisted services install |
US10080250B2 (en) | 2009-01-28 | 2018-09-18 | Headwater Research Llc | Enterprise access control and accounting allocation for access networks |
US10165447B2 (en) | 2009-01-28 | 2018-12-25 | Headwater Research Llc | Network service plan design |
US10171988B2 (en) | 2009-01-28 | 2019-01-01 | Headwater Research Llc | Adapting network policies based on device service processor configuration |
US11757943B2 (en) | 2009-01-28 | 2023-09-12 | Headwater Research Llc | Automated device provisioning and activation |
US10171681B2 (en) | 2009-01-28 | 2019-01-01 | Headwater Research Llc | Service design center for device assisted services |
US10171990B2 (en) | 2009-01-28 | 2019-01-01 | Headwater Research Llc | Service selection set publishing to device agent with on-device service selection |
US10200541B2 (en) | 2009-01-28 | 2019-02-05 | Headwater Research Llc | Wireless end-user device with divided user space/kernel space traffic policy system |
US10237773B2 (en) | 2009-01-28 | 2019-03-19 | Headwater Research Llc | Device-assisted services for protecting network capacity |
US10237757B2 (en) | 2009-01-28 | 2019-03-19 | Headwater Research Llc | System and method for wireless network offloading |
US10237146B2 (en) | 2009-01-28 | 2019-03-19 | Headwater Research Llc | Adaptive ambient services |
US10248996B2 (en) | 2009-01-28 | 2019-04-02 | Headwater Research Llc | Method for operating a wireless end-user device mobile payment agent |
US10264138B2 (en) | 2009-01-28 | 2019-04-16 | Headwater Research Llc | Mobile device and service management |
US10320990B2 (en) | 2009-01-28 | 2019-06-11 | Headwater Research Llc | Device assisted CDR creation, aggregation, mediation and billing |
US10321320B2 (en) | 2009-01-28 | 2019-06-11 | Headwater Research Llc | Wireless network buffered message system |
US10326800B2 (en) | 2009-01-28 | 2019-06-18 | Headwater Research Llc | Wireless network service interfaces |
US10326675B2 (en) | 2009-01-28 | 2019-06-18 | Headwater Research Llc | Flow tagging for service policy implementation |
US11750477B2 (en) | 2009-01-28 | 2023-09-05 | Headwater Research Llc | Adaptive ambient services |
US10462627B2 (en) | 2009-01-28 | 2019-10-29 | Headwater Research Llc | Service plan design, user interfaces, application programming interfaces, and device management |
US10492102B2 (en) | 2009-01-28 | 2019-11-26 | Headwater Research Llc | Intermediate networking devices |
US10536983B2 (en) | 2009-01-28 | 2020-01-14 | Headwater Research Llc | Enterprise access control and accounting allocation for access networks |
US11665186B2 (en) | 2009-01-28 | 2023-05-30 | Headwater Research Llc | Communications device with secure data path processing agents |
US11665592B2 (en) | 2009-01-28 | 2023-05-30 | Headwater Research Llc | Security, fraud detection, and fraud mitigation in device-assisted services systems |
US10582375B2 (en) | 2009-01-28 | 2020-03-03 | Headwater Research Llc | Device assisted services install |
US10681179B2 (en) | 2009-01-28 | 2020-06-09 | Headwater Research Llc | Enhanced curfew and protection associated with a device group |
US10694385B2 (en) | 2009-01-28 | 2020-06-23 | Headwater Research Llc | Security techniques for device assisted services |
US10716006B2 (en) | 2009-01-28 | 2020-07-14 | Headwater Research Llc | End user device that secures an association of application to service policy with an application certificate check |
US10715342B2 (en) | 2009-01-28 | 2020-07-14 | Headwater Research Llc | Managing service user discovery and service launch object placement on a device |
US10749700B2 (en) | 2009-01-28 | 2020-08-18 | Headwater Research Llc | Device-assisted services for protecting network capacity |
US10771980B2 (en) | 2009-01-28 | 2020-09-08 | Headwater Research Llc | Communications device with secure data path processing agents |
US10779177B2 (en) | 2009-01-28 | 2020-09-15 | Headwater Research Llc | Device group partitions and settlement platform |
US10783581B2 (en) | 2009-01-28 | 2020-09-22 | Headwater Research Llc | Wireless end-user device providing ambient or sponsored services |
US10791471B2 (en) | 2009-01-28 | 2020-09-29 | Headwater Research Llc | System and method for wireless network offloading |
US10798558B2 (en) | 2009-01-28 | 2020-10-06 | Headwater Research Llc | Adapting network policies based on device service processor configuration |
US10798254B2 (en) | 2009-01-28 | 2020-10-06 | Headwater Research Llc | Service design center for device assisted services |
US10798252B2 (en) | 2009-01-28 | 2020-10-06 | Headwater Research Llc | System and method for providing user notifications |
US10803518B2 (en) | 2009-01-28 | 2020-10-13 | Headwater Research Llc | Virtualized policy and charging system |
US11589216B2 (en) | 2009-01-28 | 2023-02-21 | Headwater Research Llc | Service selection set publishing to device agent with on-device service selection |
US10834577B2 (en) | 2009-01-28 | 2020-11-10 | Headwater Research Llc | Service offer set publishing to device agent with on-device service selection |
US10841839B2 (en) | 2009-01-28 | 2020-11-17 | Headwater Research Llc | Security, fraud detection, and fraud mitigation in device-assisted services systems |
US10848330B2 (en) | 2009-01-28 | 2020-11-24 | Headwater Research Llc | Device-assisted services for protecting network capacity |
US10855559B2 (en) | 2009-01-28 | 2020-12-01 | Headwater Research Llc | Adaptive ambient services |
US10869199B2 (en) | 2009-01-28 | 2020-12-15 | Headwater Research Llc | Network service plan design |
US11582593B2 (en) | 2009-01-28 | 2023-02-14 | Head Water Research Llc | Adapting network policies based on device service processor configuration |
US10985977B2 (en) | 2009-01-28 | 2021-04-20 | Headwater Research Llc | Quality of service for device assisted services |
US11039020B2 (en) | 2009-01-28 | 2021-06-15 | Headwater Research Llc | Mobile device and service management |
US11096055B2 (en) | 2009-01-28 | 2021-08-17 | Headwater Research Llc | Automated device provisioning and activation |
US11134102B2 (en) | 2009-01-28 | 2021-09-28 | Headwater Research Llc | Verifiable device assisted service usage monitoring with reporting, synchronization, and notification |
US11190645B2 (en) | 2009-01-28 | 2021-11-30 | Headwater Research Llc | Device assisted CDR creation, aggregation, mediation and billing |
US11190427B2 (en) | 2009-01-28 | 2021-11-30 | Headwater Research Llc | Flow tagging for service policy implementation |
US11190545B2 (en) | 2009-01-28 | 2021-11-30 | Headwater Research Llc | Wireless network service interfaces |
US11218854B2 (en) | 2009-01-28 | 2022-01-04 | Headwater Research Llc | Service plan design, user interfaces, application programming interfaces, and device management |
US11219074B2 (en) | 2009-01-28 | 2022-01-04 | Headwater Research Llc | Enterprise access control and accounting allocation for access networks |
US11228617B2 (en) | 2009-01-28 | 2022-01-18 | Headwater Research Llc | Automated device provisioning and activation |
US11337059B2 (en) | 2009-01-28 | 2022-05-17 | Headwater Research Llc | Device assisted services install |
US11363496B2 (en) | 2009-01-28 | 2022-06-14 | Headwater Research Llc | Intermediate networking devices |
US11405429B2 (en) | 2009-01-28 | 2022-08-02 | Headwater Research Llc | Security techniques for device assisted services |
US11405224B2 (en) | 2009-01-28 | 2022-08-02 | Headwater Research Llc | Device-assisted services for protecting network capacity |
US11412366B2 (en) | 2009-01-28 | 2022-08-09 | Headwater Research Llc | Enhanced roaming services and converged carrier networks with device assisted services and a proxy |
US11425580B2 (en) | 2009-01-28 | 2022-08-23 | Headwater Research Llc | System and method for wireless network offloading |
US11570309B2 (en) | 2009-01-28 | 2023-01-31 | Headwater Research Llc | Service design center for device assisted services |
US11477246B2 (en) | 2009-01-28 | 2022-10-18 | Headwater Research Llc | Network service plan design |
US11494837B2 (en) | 2009-01-28 | 2022-11-08 | Headwater Research Llc | Virtualized policy and charging system |
US11516301B2 (en) | 2009-01-28 | 2022-11-29 | Headwater Research Llc | Enhanced curfew and protection associated with a device group |
US11533642B2 (en) | 2009-01-28 | 2022-12-20 | Headwater Research Llc | Device group partitions and settlement platform |
US11538106B2 (en) | 2009-01-28 | 2022-12-27 | Headwater Research Llc | Wireless end-user device providing ambient or sponsored services |
US11563592B2 (en) | 2009-01-28 | 2023-01-24 | Headwater Research Llc | Managing service user discovery and service launch object placement on a device |
US8606911B2 (en) | 2009-03-02 | 2013-12-10 | Headwater Partners I Llc | Flow tagging for service policy implementation |
US8832777B2 (en) | 2009-03-02 | 2014-09-09 | Headwater Partners I Llc | Adapting network policies based on device service processor configuration |
US8788615B1 (en) * | 2009-10-02 | 2014-07-22 | Adobe Systems Incorporated | Systems and methods for creating and using electronic content that requires a shared library |
US20130013910A1 (en) * | 2010-03-22 | 2013-01-10 | Bull Sas | Method and device for optimizing loading and booting of an operating system in a computer system via a communication network |
US9632798B2 (en) * | 2010-03-22 | 2017-04-25 | Bull Sas | Method and device for optimizing loading and booting of an operating system in a computer system via a communication network |
US9154826B2 (en) | 2011-04-06 | 2015-10-06 | Headwater Partners Ii Llc | Distributing content and service launch objects to mobile devices |
WO2012139072A1 (en) * | 2011-04-06 | 2012-10-11 | Headwater Partners I Llc | Distributing content and service launch objects to mobile devices |
US9495222B1 (en) | 2011-08-26 | 2016-11-15 | Dell Software Inc. | Systems and methods for performance indexing |
US20160304709A1 (en) * | 2012-11-29 | 2016-10-20 | Borealis Ag | Tiger stripe modifier |
US11743717B2 (en) | 2013-03-14 | 2023-08-29 | Headwater Research Llc | Automated credential porting for mobile devices |
US10171995B2 (en) | 2013-03-14 | 2019-01-01 | Headwater Research Llc | Automated credential porting for mobile devices |
US10834583B2 (en) | 2013-03-14 | 2020-11-10 | Headwater Research Llc | Automated credential porting for mobile devices |
US20160349962A1 (en) * | 2014-02-14 | 2016-12-01 | Shell Internet (Beijing) Security Technology Co., Ltd. | Method and apparatus for starting an application in a screen-locked state |
US10551996B2 (en) * | 2014-02-14 | 2020-02-04 | Cheetah Mobile Inc. | Method and apparatus for starting an application in a screen-locked state |
US20180229529A1 (en) * | 2014-12-24 | 2018-08-16 | Hewlett-Packard Development Company, L.P. | Coated print medium |
US10567213B1 (en) * | 2017-07-06 | 2020-02-18 | Binaris Inc | Systems and methods for selecting specific code segments in conjunction with executing requested tasks |
US20190188000A1 (en) * | 2017-12-20 | 2019-06-20 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Method for Preloading Application, Computer Readable Storage Medium, and Terminal Device |
US10908920B2 (en) * | 2017-12-20 | 2021-02-02 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Method for preloading application, computer readable storage medium, and terminal device |
EP4064086A1 (en) * | 2021-03-23 | 2022-09-28 | Samsung Electronics Co., Ltd. | Secure applications in computational storage devices |
US12254191B2 (en) | 2021-03-23 | 2025-03-18 | Samsung Electronics Co., Ltd. | Secure applications in computational storage devices |
WO2024091461A1 (en) * | 2022-10-24 | 2024-05-02 | Snap Inc. | Service manager on a wearable device |
Also Published As
Publication number | Publication date |
---|---|
US8522249B2 (en) | 2013-08-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8522249B2 (en) | Management of software implemented services in processor-based devices | |
CN109302483B (en) | Application management method and system | |
JP6996005B2 (en) | Resource configuration method, equipment, terminals, and storage media | |
CN115136564B (en) | Preloading of applications and in-application content on user devices | |
EP3403177B1 (en) | Managing delivery of code and dependent data using application containers | |
US7203941B2 (en) | Associating a native resource with an application | |
RU2530345C2 (en) | Scheduler instances in process | |
US9535771B2 (en) | Memory management methods and systems | |
US9323547B2 (en) | Virtual machine and/or multi-level scheduling support on systems with asymmetric processor cores | |
EP1433062B1 (en) | Apparatus and method for managing resources for resource constrained devices | |
US8639772B2 (en) | Centralized application resource manager | |
US20170083381A1 (en) | System and method for processing task resources | |
CN112988400B (en) | Video memory optimization method and device, electronic equipment and readable storage medium | |
WO2004012080A2 (en) | Method for dynamically allocating and managing resources in a computerized system having multiple consumers | |
JP7100154B2 (en) | Processor core scheduling method, equipment, terminals and storage media | |
CN111223036B (en) | GPU (graphics processing unit) virtualization sharing method and device, electronic equipment and storage medium | |
CN107450989B (en) | Embedded platform and method for dynamically regulating and controlling application resources | |
CN114144777A (en) | Pre-rendering of application user interface in user equipment | |
CN110955499A (en) | Processor core configuration method, device, terminal and storage medium | |
CN108446146B (en) | Game data acquisition method and device | |
EP2840496A1 (en) | Method, system and an executable piece of code for controlling the use of hardware resources of a computer system | |
CN102096598A (en) | A virtual machine system and its implementation method | |
CN116601602A (en) | Preloading applications transparently to users | |
CN115801785A (en) | Multi-user management method and device for cloud mobile phone, server and storage medium | |
US7716669B2 (en) | Concurrent system applications in a multimedia console |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: BLUESTREAK TECHNOLOGY, INC., CANADA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:BEAULE, STEPHANE;REEL/FRAME:021527/0567 Effective date: 20080905 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
FEPP | Fee payment procedure |
Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY |
|
LAPS | Lapse for failure to pay maintenance fees |
Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: SMALL ENTITY |
|
STCH | Information on status: patent discontinuation |
Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362 |
|
FP | Lapsed due to failure to pay maintenance fee |
Effective date: 20210827 |