WO2010101574A1 - Application sequencing - Google Patents

Application sequencing Download PDF

Info

Publication number
WO2010101574A1
WO2010101574A1 PCT/US2009/036297 US2009036297W WO2010101574A1 WO 2010101574 A1 WO2010101574 A1 WO 2010101574A1 US 2009036297 W US2009036297 W US 2009036297W WO 2010101574 A1 WO2010101574 A1 WO 2010101574A1
Authority
WO
WIPO (PCT)
Prior art keywords
application
computer
file system
virtual file
readable medium
Prior art date
Application number
PCT/US2009/036297
Other languages
French (fr)
Inventor
Michael A. Provencher
Original Assignee
Hewlett-Packard Development Company, L.P.
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hewlett-Packard Development Company, L.P. filed Critical Hewlett-Packard Development Company, L.P.
Priority to PCT/US2009/036297 priority Critical patent/WO2010101574A1/en
Priority to TW099106431A priority patent/TW201037606A/en
Publication of WO2010101574A1 publication Critical patent/WO2010101574A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/188Virtual file systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 

Definitions

  • BACKGROUND [0001] Companies sometimes employ workers who have specialized tasks. These workers may use subsets of software available to the company based on their tasks. For example, a programmer may use a word processor, a spreadsheet application, a text editor, a compiler, a secure test environment, and so forth. An artist may use an image editor, a 3D modeler, a word processor, a graphics tablet interface, a publishing application, and so forth. A financial analyst may use a word processor, an analysis tool, a web browser, a spreadsheet application, and so forth. Previously, applications that an employee used were installed on the employee's computer. However, when updates to an application were made, and/or a new version came out, individual computers on which the application was installed may have needed to be updated.
  • Application streaming involves hosting applications on a centralized server and providing applications to users over a network as they are requested by the users.
  • Some conventional implementations of application streaming use virtualization techniques to provide an application to a user. These implementations may allow a user to begin to use an application after only a portion of the application's functionality has been downloaded. For example, some sophisticated spreadsheet applications allow users to generate graphs from data that has been input. However, this feature may not be necessary to view and/or input data into a basic spreadsheet. Thus application streaming may allow a user to begin using an application before the user's computer has received the entire application.
  • conventional application sequencing techniques that rely on virtualization typically burden streamed applications with runtime hooks that may have to be configured into an application launcher. Runtime hooks may allow the application to ensure that resources that the application uses are available. Additionally, conventional virtualization techniques may not fully isolate streamed applications from a system.
  • Figure 1 illustrates an example embodiment of a method associated with application sequencing.
  • Figure 2 illustrates another example embodiment of a method associated with application sequencing.
  • Figure 3 illustrates an example embodiment of a system associated with application streaming.
  • Figure 4 illustrates another example embodiment of a system associated with application streaming.
  • Figure 5 illustrates an example computing environment in which example systems and methods, and equivalents, may operate.
  • One example embodiment includes a computer-readable medium that stores computer-executable instructions that when executed by a computer cause the computer to perform a method.
  • the method comprises overlaying a virtual file system on an underlying directory structure on a computer.
  • the method also includes controlling a package management system on the computer to sequence an application.
  • data associated with the application is stored on the virtual file system.
  • One example method includes overlaying a virtual file system on top of an underlying directory structure (e.g., a file system on a hard disk). This may facilitate preventing changes that are made to the virtual file system from directly affecting the underlying directory structure.
  • the example method also includes controlling a package management system to sequence an application. The package management system may be controlled to store data associated with the application to the virtual file system.
  • the application may be effectively isolated from the base system. This may allow the system to be reset to a known state without having to worry about what has been done in or by the application. Further, the virtual file system may provide read access to data stored in the underlying directory structure. This may give the application access to data and/or resources stored in the underlying directory structure.
  • the package management system may automatically determine what additional resources the application may require and automatically ensure that these resources are available to the application. This may include downloading and/or installing additional data and/or applications. Thus, the package management system may reduce the number of runtime hooks that are built into a sequenced application that an administrator may have otherwise had to pre-configure.
  • the combination of a virtual file system overlay and a package management system facilitates application streaming in a manner not previously contemplated as package management systems are typically associated with configuring and maintaining data and applications that are installed on non- virtualized data structures.
  • a package management system may compare a list of installed packages to a set of rules for dependencies, recommendations and/or suggestions specified in a requested application's packaging.
  • Dependencies may specify other packages that the application may require to function properly.
  • Recommendations may include secondary features of the application.
  • Suggestions may include convenience features (e.g., macros, a more sophisticated user interface, and so forth).
  • the package management system may automatically sequence the requested application and its dependencies without an administrator configuring the sequenced application in advance.
  • the package management system may also be able to ensure that specific hardware requirements of an application are available to the application based on a preconfigured policy.
  • references to "one embodiment”, “an embodiment”, “one example”, “an example”, and so on, indicate that the embodiment(s) or example(s) so described may include a particular feature, structure, characteristic, property, element, or limitation, but that not every embodiment or example necessarily includes that particular feature, structure, characteristic, property, element or limitation.
  • ASIC application specific integrated circuit
  • CD compact disk
  • CD-R CD recordable
  • CD-RW CD rewriteable.
  • DVD digital versatile disk and/or digital video disk.
  • HTTP hypertext transfer protocol
  • PCI peripheral component interconnect
  • PCIE PCI express.
  • RAM random access memory
  • DRAM dynamic RAM
  • SRAM static RAM.
  • ROM read only memory.
  • PROM programmable ROM.
  • USB universal serial bus
  • LAN local area network.
  • WAN wide area network.
  • Computer component refers to a computer-related entity (e.g., hardware, firmware, software in execution, combinations thereof).
  • Computer components may include, for example, a process running on a processor, a processor, an object, an executable, a thread of execution, and a computer.
  • a computer component(s) may reside within a process and/or thread.
  • a computer component may be localized on one computer and/or may be distributed between multiple computers.
  • Computer communication refers to a communication between computing devices (e.g., computer, personal digital assistant, cellular telephone) and can be, for example, a network transfer, a file transfer, an applet transfer, an email, an HTTP transfer, and so on.
  • a computer communication can occur across, for example, a wireless system (e.g., IEEE 802.11), an Ethernet system (e.g., IEEE 802.3), a token ring system (e.g., IEEE 802.5), a LAN, a WAN, a point-to-point system, a circuit switching system, a packet switching system, and so on.
  • Computer-readable medium refers to a medium that stores signals, instructions and/or data.
  • a computer-readable medium may take forms, including, but not limited to, non-volatile media, and volatile media.
  • Nonvolatile media may include, for example, optical disks, magnetic disks, and so on.
  • Volatile media may include, for example, semiconductor memories, dynamic memory, and so on.
  • a computer-readable medium may include, but are not limited to, a floppy disk, a flexible disk, a hard disk, a magnetic tape, other magnetic medium, an ASIC, a CD, other optical medium, a RAM, a ROM, a memory chip or card, a memory stick, and other media from which a computer, a processor or other electronic device can read.
  • Logic includes but is not limited to hardware, firmware, software in execution on a machine, and/or combinations of each to perform a function(s) or an action(s), and/or to cause a function or action from another logic, method, and/or system.
  • Logic may include a software controlled microprocessor, a discrete logic (e.g., ASIC), an analog circuit, a digital circuit, a programmed logic device, a memory device containing instructions, and so on.
  • Logic may include one or more gates, combinations of gates, or other circuit components. Where multiple logical logics are described, it may be possible to incorporate the multiple logical logics into one physical logic. Similarly, where a single logical logic is described, it may be possible to distribute that single logical logic between multiple physical logics.
  • An "operable connection”, or a connection by which entities are “operably connected”, is one in which signals, physical communications, and/or logical communications may be sent and/or received.
  • An operable connection may include a physical interface, an electrical interface, and/or a data interface.
  • An operable connection may include differing combinations of interfaces and/or connections sufficient to allow operable control.
  • two entities can be operably connected to communicate signals to each other directly or through one or more intermediate entities (e.g., processor, operating system, logic, software).
  • Logical and/or physical communication channels can be used to create an operable connection.
  • Signal includes but is not limited to, electrical signals, optical signals, analog signals, digital signals, data, computer instructions, processor instructions, messages, a bit, a bit stream, or other means that can be received, transmitted and/or detected.
  • Software includes but is not limited to, one or more executable instruction that cause a computer, processor, or other electronic device to perform functions, actions and/or behave in a desired manner. "Software” does not refer to stored instructions being claimed as stored instructions per se (e.g., a program listing). The instructions may be embodied in various forms including routines, algorithms, modules, methods, threads, and/or programs including separate applications or code from dynamically linked libraries.
  • User includes but is not limited to one or more persons, software, computers or other devices, or combinations of these.
  • Example methods may be better appreciated with reference to flow diagrams. While for purposes of simplicity of explanation, the illustrated methodologies are shown and described as a series of blocks, it is to be appreciated that the methodologies are not limited by the order of the blocks, as some blocks can occur in different orders and/or concurrently with other blocks from that shown and described. Moreover, less than all the illustrated blocks may be required to implement an example methodology. Blocks may be combined or separated into multiple components. Furthermore, additional and/or alternative methodologies can employ additional, not illustrated blocks.
  • Figure 1 illustrates an example embodiment of a method 100 associated with application sequencing.
  • Method 100 includes, at 110, overlaying a virtual file system on an underlying directory structure.
  • the virtual file system may be configured to prevent data written to the virtual file system from being written to the underlying directory structure. This may prevent changes made to resources used by the virtual file system from affecting a state of the underlying directory structure.
  • the underlying directory structure may be built into a file system residing on a computer that is performing method 100.
  • Method 100 also includes, at 120, controlling a package management system on the computer to sequence an application. Data associated with the application may be stored on the virtual file system.
  • Sequencing the application may comprise providing application request data to a remote server.
  • the application request data may identify the application being sequenced.
  • the application request data may identify the application with data associated with a requesting entity.
  • a requesting entity identified as an artist may cause a 3D modeling application to be sequenced while a requesting entity identified as a programmer may cause a scripting application to be sequenced.
  • Sequencing the application may also comprise receiving a first portion of the application from the remote server.
  • the first portion of the application may comprise a minimum portion of the application. This minimum portion of the application may allow a primary function of the application to operate.
  • a minimum portion of a word processor application may comprise instructions that cause a computer to display a simple user interface and cause the computer to facilitate manipulation of a text file.
  • Sequencing the application may also comprise receiving a second portion of the application from the remote server.
  • the second portion may be downloaded based on information in the application request data.
  • the application request data may identify a role or title of a user requesting the sequencing of the application.
  • a second portion of a spreadsheet application downloaded for a financial analyst may include a graphical analysis feature that allows the financial analyst to create and manipulate graphs.
  • a second portion of a spreadsheet application downloaded for a publicist may include a mail merge feature that allows the publicist to merge address data with a boilerplate letter to create personalized mailings.
  • the second portion may be downloaded in response to receiving a request for access to a feature that is a secondary function of the application.
  • the second portion may comprise a portion of the application that contains instructions that cause the computer to facilitate providing access to the secondary feature.
  • a professor using a slideshow application may receive a portion of the slideshow application that allows the professor to play a slideshow that he has created. If the professor determines he needs to modify a slide, a portion of the slideshow application that facilitates editing slides may be provided on demand.
  • Figure 100 illustrates various actions occurring in serial, it is to be appreciated that various actions illustrated in Figure 100 could occur substantially in parallel.
  • a first process could overlay the virtual file system, and a second process could control the package management system. While two processes are described, it is to be appreciated that a greater and/or lesser number of processes could be employed and that lightweight processes, regular processes, threads, and other approaches could be employed.
  • a method may be implemented as computer executable instructions.
  • a computer-readable medium may store computer executable instructions that if executed by a machine (e.g., processor) cause the machine to perform a method. While executable instructions associated with the above method are described as being stored on a computer-readable medium, it is to be appreciated that executable instructions associated with other example methods described herein may also be stored on a computer-readable medium.
  • Figure 2 illustrates an example embodiment of a method 200 associated with application sequencing.
  • Method 200 includes several actions similar to those described in connection with method 100 (figure 1).
  • method 200 includes overlaying a virtual file system at 210, and controlling a package management system at 220.
  • method 200 includes additional actions.
  • Method 200 includes, at 230, copying data from the virtual file system to a non-virtual memory.
  • the non-virtual memory may be the underlying directory structure, a local storage medium, a remote storage medium, and so on. Copying data to a non-virtual memory may facilitate backing up data that was manipulated while the application was running. For example, a file a user has created or modified may be lost if data associated with the file is not copied to a non-virtual memory.
  • Method 200 also includes, at 240, terminating the virtual file system. Terminating the virtual file system may restore a computer on which the virtual file system was created to a prior state. The prior state may be a known state that facilitates operations of future instances of application sequencing methods.
  • the virtual file system may be terminated as a result of rebooting a system with which the underlying directory structure is associated, terminating an instance of the application, a signal from an administrating entity, a time limit expiring, and so forth.
  • method 200 illustrates how an application may be sequenced to a virtual file system, and how data from the virtual file system may be treated when and/or before the application is no longer being used.
  • Figure 3 illustrates an example embodiment of a system 300 associated with application sequencing.
  • System 300 includes a first file system 310.
  • First file system 310 may comprise a directory structure.
  • System 300 also includes an overlay logic 320. Overlay logic 320 may overlay a virtual file system on top of the directory structure. In one example, the virtual file system may prevent data written to the virtual file system from being written to first file system 310.
  • System 300 also includes a package management logic 330.
  • Package management logic 330 may sequence an application. Data associated with the application may be stored on the virtual file system.
  • figure 3 illustrates a system 300 that can virtualize a file system instead of virtualizing an application. This facilitates reliably restoring the base system when the application is no longer being used on the system.
  • FIG. 4 illustrates an example embodiment of a system 400 associated with application sequencing.
  • System 400 includes several elements similar to those described in connection with system 300 (figure 3).
  • system 400 includes a first file system 410, an overlay logic 420, and a package management logic 430.
  • System 400 also includes a control logic 440.
  • Control logic 440 may control overlay logic 420 to overlay the virtual file system and package management logic 430 to sequence the application.
  • Control logic 440 may also initiate the application.
  • control logic 440 may activate in response to a user input.
  • a desktop icon may allow a user to cause control logic 440 to initiate operation so that the user may use an application with which the desktop icon is associated.
  • system 400 illustrates how a user input may be used to initiate application sequencing that uses a virtual file system.
  • FIG. 5 illustrates an example computing device in which example systems and methods described herein, and equivalents, may operate.
  • the example computing device may be a computer 500 that includes a processor 502, a memory 504, and input/output ports 510 operably connected by a bus 508.
  • the computer 500 may include an application streaming logic 530 configured to facilitate sequencing applications.
  • the logic 530 may be implemented in hardware, software, firmware, and/or combinations thereof. While the logic 530 is illustrated as a hardware component attached to the bus 508, it is to be appreciated that in one example, the logic 530 could be implemented in the processor 502.
  • logic 530 may provide means (e.g., hardware, software, firmware) for overlaying a virtual file system on top of a directory structure.
  • the means may be implemented, for example, as an ASIC.
  • the means may also be implemented as computer executable instructions that are presented to computer 500 as data
  • Logic 530 may also provide means (e.g., hardware, software, firmware) for sequencing an application to the virtual file system. Data associated with the application may be stored on the virtual file system.
  • the processor 502 may be a variety of various processors including dual microprocessor and other multi-processor architectures.
  • a memory 504 may include volatile memory and/or non-volatile memory.
  • Non-volatile memory may include, for example, ROM, PROM, and so on.
  • Volatile memory may include, for example, RAM, SRAM, DRAM, and so on.
  • a disk 506 may be operably connected to the computer 500 via, for example, an input/output interface (e.g., card, device) 518 and an input/output port 510.
  • the disk 506 may be, for example, a magnetic disk drive, a solid state disk drive, a floppy disk drive, a tape drive, a Zip drive, a flash memory card, a memory stick, and so on.
  • the disk 506 may be a CD-ROM drive, a CD-R drive, a CD-RW drive, a DVD ROM, and so on.
  • the memory 504 can store a process 514 and/or a data 516, for example.
  • the disk 506 and/or the memory 504 can store an operating system that controls and allocates resources of the computer 500.
  • the bus 508 may be a single internal bus interconnect architecture and/or other bus or mesh architectures. While a single bus is illustrated, it is to be appreciated that the computer 500 may communicate with various devices, logics, and peripherals using other busses (e.g., PCIE, 1394, USB, Ethernet).
  • the bus 508 can be types including, for example, a memory bus, a memory controller, a peripheral bus, an external bus, a crossbar switch, and/or a local bus.
  • the computer 500 may interact with input/output devices via the I/O interfaces 518 and the input/output ports 510.
  • Input/output devices may be, for example, a keyboard, a microphone, a pointing and selection device, cameras, video cards, displays, the disk 506, the network devices 520, and so on.
  • the input/output ports 510 may include, for example, serial ports, parallel ports, and USB ports.
  • the computer 500 can operate in a network environment and thus may be connected to the network devices 520 via the I/O interfaces 518, and/or the I/O ports 510. Through the network devices 520, the computer 500 may interact with a network. Through the network, the computer 500 may be logically connected to remote computers. Networks with which the computer 500 may interact include, but are not limited to, a LAN, a WAN, and other networks. [0058] While example systems, methods, and so on have been illustrated by describing examples, and while the examples have been described in considerable detail, it is not the intention of the applicants to restrict or in any way limit the scope of the appended claims to such detail.

Abstract

Systems, methods, and other embodiments associated with application sequencing are described. One example method includes overlaying (110) a virtual file system on an underlying directory structure on a computer. The example method may also include controlling (120) a package management system on the computer to sequence an application. Data associated with the application may be stored on the virtual file system.

Description

APPLSCATSON SEQUENCING
BACKGROUND [0001] Companies sometimes employ workers who have specialized tasks. These workers may use subsets of software available to the company based on their tasks. For example, a programmer may use a word processor, a spreadsheet application, a text editor, a compiler, a secure test environment, and so forth. An artist may use an image editor, a 3D modeler, a word processor, a graphics tablet interface, a publishing application, and so forth. A financial analyst may use a word processor, an analysis tool, a web browser, a spreadsheet application, and so forth. Previously, applications that an employee used were installed on the employee's computer. However, when updates to an application were made, and/or a new version came out, individual computers on which the application was installed may have needed to be updated. This may have required a technician to sit down at and/or remotely control computers individually to perform an update. To reduce labor costs and downtime losses, companies have begun moving towards application streaming. Application streaming involves hosting applications on a centralized server and providing applications to users over a network as they are requested by the users.
[0002] Some conventional implementations of application streaming, sometimes referred to as application sequencing, use virtualization techniques to provide an application to a user. These implementations may allow a user to begin to use an application after only a portion of the application's functionality has been downloaded. For example, some sophisticated spreadsheet applications allow users to generate graphs from data that has been input. However, this feature may not be necessary to view and/or input data into a basic spreadsheet. Thus application streaming may allow a user to begin using an application before the user's computer has received the entire application. However, conventional application sequencing techniques that rely on virtualization typically burden streamed applications with runtime hooks that may have to be configured into an application launcher. Runtime hooks may allow the application to ensure that resources that the application uses are available. Additionally, conventional virtualization techniques may not fully isolate streamed applications from a system.
BRIEF DESCRIPTION OF THE DRAWINGS
[0003] The accompanying drawings, which are incorporated in and constitute a part of the specification, illustrate various example systems, methods, and other example embodiments of various aspects of the invention. It will be appreciated that the illustrated element boundaries (e.g., boxes, groups of boxes, or other shapes) in the figures represent one example of the boundaries. One of ordinary skill in the art will appreciate that in some examples one element may be designed as multiple elements or that multiple elements may be designed as one element. In some examples, an element shown as an internal component of another element may be implemented as an external component and vice versa. Furthermore, elements may not be drawn to scale.
[0004] Figure 1 illustrates an example embodiment of a method associated with application sequencing. [0005] Figure 2 illustrates another example embodiment of a method associated with application sequencing.
[0006] Figure 3 illustrates an example embodiment of a system associated with application streaming. [0007] Figure 4 illustrates another example embodiment of a system associated with application streaming.
[0008] Figure 5 illustrates an example computing environment in which example systems and methods, and equivalents, may operate.
SUMMARY
[0009] Systems and methods associated with application streaming are described. One example embodiment includes a computer-readable medium that stores computer-executable instructions that when executed by a computer cause the computer to perform a method. The method comprises overlaying a virtual file system on an underlying directory structure on a computer. The method also includes controlling a package management system on the computer to sequence an application. In this example, data associated with the application is stored on the virtual file system.
DETAILED DESCRIPTION
[0010] Systems and methods associated with application streaming are described. One example method includes overlaying a virtual file system on top of an underlying directory structure (e.g., a file system on a hard disk). This may facilitate preventing changes that are made to the virtual file system from directly affecting the underlying directory structure. The example method also includes controlling a package management system to sequence an application. The package management system may be controlled to store data associated with the application to the virtual file system.
[0011] By virtualizing the file system on which application data is sequenced, the application may be effectively isolated from the base system. This may allow the system to be reset to a known state without having to worry about what has been done in or by the application. Further, the virtual file system may provide read access to data stored in the underlying directory structure. This may give the application access to data and/or resources stored in the underlying directory structure. By sequencing the application to the virtual file system with a package management system, the package management system may automatically determine what additional resources the application may require and automatically ensure that these resources are available to the application. This may include downloading and/or installing additional data and/or applications. Thus, the package management system may reduce the number of runtime hooks that are built into a sequenced application that an administrator may have otherwise had to pre-configure. The combination of a virtual file system overlay and a package management system facilitates application streaming in a manner not previously contemplated as package management systems are typically associated with configuring and maintaining data and applications that are installed on non- virtualized data structures.
[0012] By way of illustration, a package management system may compare a list of installed packages to a set of rules for dependencies, recommendations and/or suggestions specified in a requested application's packaging. Dependencies may specify other packages that the application may require to function properly. Recommendations may include secondary features of the application. Suggestions may include convenience features (e.g., macros, a more sophisticated user interface, and so forth). Thus, the package management system may automatically sequence the requested application and its dependencies without an administrator configuring the sequenced application in advance. The package management system may also be able to ensure that specific hardware requirements of an application are available to the application based on a preconfigured policy.
[0013] The following includes definitions of selected terms employed herein. The definitions include various examples and/or forms of components that fall within the scope of a term and that may be used for implementation. The examples are not intended to be limiting. Both singular and plural forms of terms may be within the definitions.
[0014] References to "one embodiment", "an embodiment", "one example", "an example", and so on, indicate that the embodiment(s) or example(s) so described may include a particular feature, structure, characteristic, property, element, or limitation, but that not every embodiment or example necessarily includes that particular feature, structure, characteristic, property, element or limitation.
Furthermore, repeated use of the phrase "in one embodiment" does not necessarily refer to the same embodiment, though it may.
[0015] ASIC: application specific integrated circuit.
[0016] CD: compact disk.
[0017] CD-R: CD recordable.
[0018] CD-RW: CD rewriteable. [0019] DVD: digital versatile disk and/or digital video disk.
[0020] HTTP: hypertext transfer protocol.
[0021] PCI: peripheral component interconnect.
[0022] PCIE: PCI express.
[0023] RAM: random access memory. [0024] DRAM: dynamic RAM.
[0025] SRAM: static RAM. [0026] ROM: read only memory.
[0027] PROM: programmable ROM.
[0028] USB: universal serial bus.
[0029] LAN: local area network. [0030] WAN: wide area network.
[0031] "Computer component", as used herein, refers to a computer-related entity (e.g., hardware, firmware, software in execution, combinations thereof). Computer components may include, for example, a process running on a processor, a processor, an object, an executable, a thread of execution, and a computer. A computer component(s) may reside within a process and/or thread. A computer component may be localized on one computer and/or may be distributed between multiple computers.
[0032] "Computer communication", as used herein, refers to a communication between computing devices (e.g., computer, personal digital assistant, cellular telephone) and can be, for example, a network transfer, a file transfer, an applet transfer, an email, an HTTP transfer, and so on. A computer communication can occur across, for example, a wireless system (e.g., IEEE 802.11), an Ethernet system (e.g., IEEE 802.3), a token ring system (e.g., IEEE 802.5), a LAN, a WAN, a point-to-point system, a circuit switching system, a packet switching system, and so on.
[0033] "Computer-readable medium", as used herein, refers to a medium that stores signals, instructions and/or data. A computer-readable medium may take forms, including, but not limited to, non-volatile media, and volatile media. Nonvolatile media may include, for example, optical disks, magnetic disks, and so on. Volatile media may include, for example, semiconductor memories, dynamic memory, and so on. Common forms of a computer-readable medium may include, but are not limited to, a floppy disk, a flexible disk, a hard disk, a magnetic tape, other magnetic medium, an ASIC, a CD, other optical medium, a RAM, a ROM, a memory chip or card, a memory stick, and other media from which a computer, a processor or other electronic device can read.
[0034] "Logic", as used herein, includes but is not limited to hardware, firmware, software in execution on a machine, and/or combinations of each to perform a function(s) or an action(s), and/or to cause a function or action from another logic, method, and/or system. Logic may include a software controlled microprocessor, a discrete logic (e.g., ASIC), an analog circuit, a digital circuit, a programmed logic device, a memory device containing instructions, and so on. Logic may include one or more gates, combinations of gates, or other circuit components. Where multiple logical logics are described, it may be possible to incorporate the multiple logical logics into one physical logic. Similarly, where a single logical logic is described, it may be possible to distribute that single logical logic between multiple physical logics.
[0035] An "operable connection", or a connection by which entities are "operably connected", is one in which signals, physical communications, and/or logical communications may be sent and/or received. An operable connection may include a physical interface, an electrical interface, and/or a data interface. An operable connection may include differing combinations of interfaces and/or connections sufficient to allow operable control. For example, two entities can be operably connected to communicate signals to each other directly or through one or more intermediate entities (e.g., processor, operating system, logic, software). Logical and/or physical communication channels can be used to create an operable connection.
[0036] "Signal", as used herein, includes but is not limited to, electrical signals, optical signals, analog signals, digital signals, data, computer instructions, processor instructions, messages, a bit, a bit stream, or other means that can be received, transmitted and/or detected.
[0037] "Software", as used herein, includes but is not limited to, one or more executable instruction that cause a computer, processor, or other electronic device to perform functions, actions and/or behave in a desired manner. "Software" does not refer to stored instructions being claimed as stored instructions per se (e.g., a program listing). The instructions may be embodied in various forms including routines, algorithms, modules, methods, threads, and/or programs including separate applications or code from dynamically linked libraries.
[0038] "User", as used herein, includes but is not limited to one or more persons, software, computers or other devices, or combinations of these.
[0039] Some portions of the detailed descriptions that follow are presented in terms of algorithms and symbolic representations of operations on data bits within a memory. These algorithmic descriptions and representations are used by those skilled in the art to convey the substance of their work to others. An algorithm, here and generally, is conceived to be a sequence of operations that produce a result. The operations may include physical manipulations of physical quantities. Usually, though not necessarily, the physical quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated in a logic, and so on. The physical manipulations create a concrete, tangible, useful, real-world result.
[0040] It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, and so on. It should be borne in mind, however, that these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise, it is appreciated that throughout the description, terms including processing, computing, determining, and so on, refer to actions and processes of a computer system, logic, processor, or similar electronic device that manipulates and transforms data represented as physical (electronic) quantities.
[0041] Example methods may be better appreciated with reference to flow diagrams. While for purposes of simplicity of explanation, the illustrated methodologies are shown and described as a series of blocks, it is to be appreciated that the methodologies are not limited by the order of the blocks, as some blocks can occur in different orders and/or concurrently with other blocks from that shown and described. Moreover, less than all the illustrated blocks may be required to implement an example methodology. Blocks may be combined or separated into multiple components. Furthermore, additional and/or alternative methodologies can employ additional, not illustrated blocks.
[0042] Figure 1 illustrates an example embodiment of a method 100 associated with application sequencing. Method 100 includes, at 110, overlaying a virtual file system on an underlying directory structure. In one example, the virtual file system may be configured to prevent data written to the virtual file system from being written to the underlying directory structure. This may prevent changes made to resources used by the virtual file system from affecting a state of the underlying directory structure. The underlying directory structure may be built into a file system residing on a computer that is performing method 100. Method 100 also includes, at 120, controlling a package management system on the computer to sequence an application. Data associated with the application may be stored on the virtual file system.
[0043] Sequencing the application may comprise providing application request data to a remote server. The application request data may identify the application being sequenced. In one example, the application request data may identify the application with data associated with a requesting entity. For example, a requesting entity identified as an artist may cause a 3D modeling application to be sequenced while a requesting entity identified as a programmer may cause a scripting application to be sequenced. Sequencing the application may also comprise receiving a first portion of the application from the remote server. In one example, the first portion of the application may comprise a minimum portion of the application. This minimum portion of the application may allow a primary function of the application to operate. For example, a minimum portion of a word processor application may comprise instructions that cause a computer to display a simple user interface and cause the computer to facilitate manipulation of a text file.
[0044] Sequencing the application may also comprise receiving a second portion of the application from the remote server. In one example, the second portion may be downloaded based on information in the application request data. By way of illustration, the application request data may identify a role or title of a user requesting the sequencing of the application. A second portion of a spreadsheet application downloaded for a financial analyst may include a graphical analysis feature that allows the financial analyst to create and manipulate graphs. A second portion of a spreadsheet application downloaded for a publicist may include a mail merge feature that allows the publicist to merge address data with a boilerplate letter to create personalized mailings. In another example, the second portion may be downloaded in response to receiving a request for access to a feature that is a secondary function of the application. Thus, the second portion may comprise a portion of the application that contains instructions that cause the computer to facilitate providing access to the secondary feature. By way of illustration, a professor using a slideshow application may receive a portion of the slideshow application that allows the professor to play a slideshow that he has created. If the professor determines he needs to modify a slide, a portion of the slideshow application that facilitates editing slides may be provided on demand.
[0045] While Figure 100 illustrates various actions occurring in serial, it is to be appreciated that various actions illustrated in Figure 100 could occur substantially in parallel. By way of illustration, a first process could overlay the virtual file system, and a second process could control the package management system. While two processes are described, it is to be appreciated that a greater and/or lesser number of processes could be employed and that lightweight processes, regular processes, threads, and other approaches could be employed.
[0046] In one example, a method may be implemented as computer executable instructions. Thus, in one example, a computer-readable medium may store computer executable instructions that if executed by a machine (e.g., processor) cause the machine to perform a method. While executable instructions associated with the above method are described as being stored on a computer-readable medium, it is to be appreciated that executable instructions associated with other example methods described herein may also be stored on a computer-readable medium.
[0047] Figure 2 illustrates an example embodiment of a method 200 associated with application sequencing. Method 200 includes several actions similar to those described in connection with method 100 (figure 1). For example, method 200 includes overlaying a virtual file system at 210, and controlling a package management system at 220. However, method 200 includes additional actions.
[0048] Method 200 includes, at 230, copying data from the virtual file system to a non-virtual memory. The non-virtual memory may be the underlying directory structure, a local storage medium, a remote storage medium, and so on. Copying data to a non-virtual memory may facilitate backing up data that was manipulated while the application was running. For example, a file a user has created or modified may be lost if data associated with the file is not copied to a non-virtual memory. Method 200 also includes, at 240, terminating the virtual file system. Terminating the virtual file system may restore a computer on which the virtual file system was created to a prior state. The prior state may be a known state that facilitates operations of future instances of application sequencing methods. The virtual file system may be terminated as a result of rebooting a system with which the underlying directory structure is associated, terminating an instance of the application, a signal from an administrating entity, a time limit expiring, and so forth. Thus method 200 illustrates how an application may be sequenced to a virtual file system, and how data from the virtual file system may be treated when and/or before the application is no longer being used.
[0049] Figure 3 illustrates an example embodiment of a system 300 associated with application sequencing. System 300 includes a first file system 310. First file system 310 may comprise a directory structure. System 300 also includes an overlay logic 320. Overlay logic 320 may overlay a virtual file system on top of the directory structure. In one example, the virtual file system may prevent data written to the virtual file system from being written to first file system 310. System 300 also includes a package management logic 330. Package management logic 330 may sequence an application. Data associated with the application may be stored on the virtual file system. Thus figure 3 illustrates a system 300 that can virtualize a file system instead of virtualizing an application. This facilitates reliably restoring the base system when the application is no longer being used on the system. [0050] Figure 4 illustrates an example embodiment of a system 400 associated with application sequencing. System 400 includes several elements similar to those described in connection with system 300 (figure 3). For example, system 400 includes a first file system 410, an overlay logic 420, and a package management logic 430. System 400 also includes a control logic 440. Control logic 440 may control overlay logic 420 to overlay the virtual file system and package management logic 430 to sequence the application. Control logic 440 may also initiate the application. In one example control logic 440 may activate in response to a user input. By way of illustration a desktop icon may allow a user to cause control logic 440 to initiate operation so that the user may use an application with which the desktop icon is associated. Thus system 400 illustrates how a user input may be used to initiate application sequencing that uses a virtual file system.
[0051] Figure 5 illustrates an example computing device in which example systems and methods described herein, and equivalents, may operate. The example computing device may be a computer 500 that includes a processor 502, a memory 504, and input/output ports 510 operably connected by a bus 508. In one example, the computer 500 may include an application streaming logic 530 configured to facilitate sequencing applications. In different examples, the logic 530 may be implemented in hardware, software, firmware, and/or combinations thereof. While the logic 530 is illustrated as a hardware component attached to the bus 508, it is to be appreciated that in one example, the logic 530 could be implemented in the processor 502.
[0052] Thus, logic 530 may provide means (e.g., hardware, software, firmware) for overlaying a virtual file system on top of a directory structure. The means may be implemented, for example, as an ASIC. The means may also be implemented as computer executable instructions that are presented to computer 500 as data
516 that are temporarily stored in memory 504 and then executed by processor
502. Logic 530 may also provide means (e.g., hardware, software, firmware) for sequencing an application to the virtual file system. Data associated with the application may be stored on the virtual file system.
[0053] Generally describing an example configuration of the computer 500, the processor 502 may be a variety of various processors including dual microprocessor and other multi-processor architectures. A memory 504 may include volatile memory and/or non-volatile memory. Non-volatile memory may include, for example, ROM, PROM, and so on. Volatile memory may include, for example, RAM, SRAM, DRAM, and so on.
[0054] A disk 506 may be operably connected to the computer 500 via, for example, an input/output interface (e.g., card, device) 518 and an input/output port 510. The disk 506 may be, for example, a magnetic disk drive, a solid state disk drive, a floppy disk drive, a tape drive, a Zip drive, a flash memory card, a memory stick, and so on. Furthermore, the disk 506 may be a CD-ROM drive, a CD-R drive, a CD-RW drive, a DVD ROM, and so on. The memory 504 can store a process 514 and/or a data 516, for example. The disk 506 and/or the memory 504 can store an operating system that controls and allocates resources of the computer 500.
[0055] The bus 508 may be a single internal bus interconnect architecture and/or other bus or mesh architectures. While a single bus is illustrated, it is to be appreciated that the computer 500 may communicate with various devices, logics, and peripherals using other busses (e.g., PCIE, 1394, USB, Ethernet). The bus 508 can be types including, for example, a memory bus, a memory controller, a peripheral bus, an external bus, a crossbar switch, and/or a local bus.
[0056] The computer 500 may interact with input/output devices via the I/O interfaces 518 and the input/output ports 510. Input/output devices may be, for example, a keyboard, a microphone, a pointing and selection device, cameras, video cards, displays, the disk 506, the network devices 520, and so on. The input/output ports 510 may include, for example, serial ports, parallel ports, and USB ports.
[0057] The computer 500 can operate in a network environment and thus may be connected to the network devices 520 via the I/O interfaces 518, and/or the I/O ports 510. Through the network devices 520, the computer 500 may interact with a network. Through the network, the computer 500 may be logically connected to remote computers. Networks with which the computer 500 may interact include, but are not limited to, a LAN, a WAN, and other networks. [0058] While example systems, methods, and so on have been illustrated by describing examples, and while the examples have been described in considerable detail, it is not the intention of the applicants to restrict or in any way limit the scope of the appended claims to such detail. It is, of course, not possible to describe every conceivable combination of components or methodologies for purposes of describing the systems, methods, and so on described herein. Therefore, the invention is not limited to the specific details, the representative apparatus, and illustrative examples shown and described. Thus, this application is intended to embrace alterations, modifications, and variations that fall within the scope of the appended claims. [0059] To the extent that the term "includes" or "including" is employed in the detailed description or the claims, it is intended to be inclusive in a manner similar to the term "comprising" as that term is interpreted when employed as a transitional word in a claim. [0060] To the extent that the term "or" is employed in the detailed description or claims (e.g., A or B) it is intended to mean "A or B or both". When the applicants intend to indicate "only A or B but not both" then the term "only A or B but not both" will be employed. Thus, use of the term "or" herein is the inclusive, and not the exclusive use. See, Bryan A. Garner, A Dictionary of Modern Legal Usage 624 (2d. Ed. 1995).
[0061] To the extent that the phrase "one or more of, A, B, and C" is employed herein, (e.g., a data store configured to store one or more of, A, B, and C) it is intended to convey the set of possibilities A, B, C, AB, AC, BC, and/or ABC (e.g., the data store may store only A, only B, only C, A&B, A&C, B&C, and/or A&B&C). It is not intended to require one of A, one of B, and one of C. When the applicants intend to indicate "at least one of A, at least one of B, and at least one of C", then the phrasing "at least one of A, at least one of B, and at least one of C" will be employed.

Claims

ClaimsWhat is claimed is:
1. A computer-readable medium storing computer-executable instructions that when executed by a computer cause the computer to perform a method, the method comprising: overlaying a virtual file system on an underlying directory structure on the computer; and controlling a package management system on the computer to sequence an application, where data associated with the application is stored on the virtual file system.
2. The computer-readable medium of claim 1 , where the virtual file system prevents data written to the virtual file system from being written to the underlying directory structure.
3. The computer-readable medium of claim 1 , where sequencing the application comprises: providing application request data to a remote server, where the application request data identifies the application; and receiving a first portion of the application from the remote server.
4. The computer-readable medium of claim 3, where the first portion of the application comprises a minimum portion of the application that allows a primary function of the application to operate.
5. The computer-readable medium of claim 4, where sequencing the application comprises: receiving a second portion of the application from the remote server.
6. The computer-readable medium of claim 5, where the second portion is downloaded based on information in the application request data.
7. The computer-readable medium of claim 5, where the second portion is downloaded in response to receiving a request for access to a feature that is a secondary function of the application, and where the second portion comprises a portion of the application that provides access to the feature.
8. The computer-readable medium of claim 3, where the application request data identifies the application with data associated with a requesting entity.
9. The computer-readable medium of claim 1 , the method comprising: terminating the virtual file system.
10. The computer-readable medium of claim 9, where the virtual file system is terminated as a result of one of, rebooting a system with which the underlying directory structure is associated, terminating an instance of the application, a signal from an administrating entity, and a time limit expiring.
11. The computer-readable medium of claim 1 , the method comprising: copying data on the virtual file system to a non-virtual memory, where the non-virtual memory is one of, the underlying directory structure, a local storage medium, and a remote storage medium.
12. A system, comprising: a first file system comprising a directory structure; an overlay logic to overlay a virtual file system on the directory structure, where the virtual file system prevents data written to the virtual file system from being written to the first file system; and a package management logic to sequence an application, where data associated with the application is stored on the virtual file system.
13. The system of claim 12, comprising: a control logic to control the overlay logic to overlay the virtual file system, to control the package management logic to sequence the application, and to initiate the application.
14. The system of claim 13, where the control logic activates in response to a user input.
15. A system, comprising: means for overlaying a virtual file system on a directory structure; and means for sequencing an application to the virtual file system, where data associated with the application is stored on the virtual file system.
PCT/US2009/036297 2009-03-06 2009-03-06 Application sequencing WO2010101574A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/US2009/036297 WO2010101574A1 (en) 2009-03-06 2009-03-06 Application sequencing
TW099106431A TW201037606A (en) 2009-03-06 2010-03-05 Application sequencing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2009/036297 WO2010101574A1 (en) 2009-03-06 2009-03-06 Application sequencing

Publications (1)

Publication Number Publication Date
WO2010101574A1 true WO2010101574A1 (en) 2010-09-10

Family

ID=42709937

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2009/036297 WO2010101574A1 (en) 2009-03-06 2009-03-06 Application sequencing

Country Status (2)

Country Link
TW (1) TW201037606A (en)
WO (1) WO2010101574A1 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010034736A1 (en) * 1998-07-22 2001-10-25 Dan Eylon Method and system for executing network streamed application
US6393437B1 (en) * 1998-01-27 2002-05-21 Microsoft Corporation Web developer isolation techniques
US20050207732A1 (en) * 2004-03-22 2005-09-22 Lg Electronics Inc. Method and apparatus for editing recorded program using virtual file system and file structure

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6393437B1 (en) * 1998-01-27 2002-05-21 Microsoft Corporation Web developer isolation techniques
US20010034736A1 (en) * 1998-07-22 2001-10-25 Dan Eylon Method and system for executing network streamed application
US20050207732A1 (en) * 2004-03-22 2005-09-22 Lg Electronics Inc. Method and apparatus for editing recorded program using virtual file system and file structure

Also Published As

Publication number Publication date
TW201037606A (en) 2010-10-16

Similar Documents

Publication Publication Date Title
CN107924323B (en) Dependency-based container deployment
US10074206B1 (en) Network-optimized graphics library for virtualized graphics processing
US20140351811A1 (en) Datacenter application packages with hardware accelerators
CN110088731A (en) Use the soft resetting of the kernel of non-volatile ram
US20120254885A1 (en) Running a plurality of instances of an application
US20130152079A1 (en) Dynamic generation of VM instance at time of invocation
US11669334B2 (en) Just-in-time containers
US20150106607A1 (en) Automatically reflecting changes to a computing solution into an image for the computing solution
CN114830135A (en) Hierarchical partitioning of operators
US20150007170A1 (en) Systems and Methods for Providing Hypercall Interface for Virtual Machines
US9325576B2 (en) Dynamic server to server configuration and initialization
US20160117193A1 (en) Resource mapping in multi-threaded central processor units
US9336216B2 (en) Command-based data migration
US9766918B2 (en) Virtual system device identification using GPU to host bridge mapping
US9753820B2 (en) Failover mechanism
US11030072B2 (en) Creating and starting fast-start container images
US9038077B1 (en) Data transfer protection in a multi-tasking modeling environment
US10318278B2 (en) Power management data package provision method and apparatus
WO2010101574A1 (en) Application sequencing
US20160378686A1 (en) Memory encryption exclusion method and apparatus
US10255198B2 (en) Deferring registration for DMA operations
US10649743B2 (en) Application developing method and system
Borin et al. Deploying and Configuring Infrastructure
CN113826072B (en) Code update in system management mode
US20230205500A1 (en) Computation architecture synthesis

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 09841251

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 09841251

Country of ref document: EP

Kind code of ref document: A1