CROSS REFERENCE TO RELATED APPLICATIONSThis application is a continuation application of application Ser. No. 11/258,599, entitled “Sync-Time Read Only Memory Image Binding for Limited Resource Devices,” filed Oct. 25, 2005, now allowed, which is a continuation application of application Ser. No. 09/572,563, entitled “Sync-Time Read Only Memory Image Binding For Limited Resource Devices,” filed May 16, 2000, now U.S. Pat. No. 6,959,330, and assigned to the assignee of the present application. The subject matter in the above-identified co-pending and commonly owned applications are incorporated herein by reference.
BACKGROUND OF THE INVENTION1. Field of the Invention
The present invention relates to the field of data processing systems. Specifically, the present invention relates to a method and system for installing an application in a portable computer system.
2. Related Art
As the components required to build a computer system have reduced in size, new categories of computer systems have emerged. One of the more recent categories of computer systems is the “palmtop” computer system, or personal digital assistant (PDA). A palmtop computer system is a computer that is small enough to be held in the hand of a user and is thus “palm-sized.” As a result, palmtops are readily carried about in a briefcase or purse, and some palmtops are compact enough to fit into a person's pocket. By virtue of their size, palmtop computer systems are also lightweight and so are exceptionally portable and convenient.
The portability and convenience of palmtops has made it increasingly desirable to increase the number and types of applications that can be run on them. It is advantageous to expand the capabilities of a palmtop so that it can provide many of the same, if not the same, services provided by a desktop or laptop computer system, particularly with regard to access to the World Wide Web as well as the ability to communicate with other palmtops and personal computers. As such, information currently available via the Internet over personal computers, such as on-line access to news and financial information, can also be provided via a palmtop. In addition, a palmtop can be used for electronic mail (“e-mail”) and multi-player gaming, and features such as voice recognition can also be added.
It has proven convenient to exchange data and information between a computer system and a palmtop computer using a communication interface, such as a serial or parallel input port. Many palmtop computers also include an infrared communication port for transmitting data over a wireless link (“beaming”). Thus, mechanisms exist for transferring applications and other information from a computer system to a palmtop, or from one palmtop to another. Moreover, the palmtop can be linked to traditional desktop applications such as word processing and spreadsheet programs.
However, with portability and convenience comes a tradeoff in processing power and memory space. The processing problem can be addressed using processors that are smaller and faster than preceding generations, and innovative techniques may also be available to store data and information more densely in smaller places. Still, for a given density of memory space, it is generally necessary to increase the physical size of the memory in order to increase the memory capacity. This is problematic given the preference for ever smaller palmtops or for palmtops that provide further capabilities without an increase in size and weight. Accordingly, when compared to a desktop computer system, a palmtop may be limited with regard to the amount of information it can hold, and hence with regard to the number and types of applications that can be used.
This problem can be aggravated by the size of the operating system needed to support the various applications loaded on the palmtop. As the number and, in particular, the variety of applications increases, the operating system needed to run those applications increases in complexity and correspondingly in size, further exacerbating the memory issue.
The traditional model for generic, limited resource devices such as palmtops is that a memory image is built and installed on the device. The memory image provides a certain set of abstract operating system services for the applications on the device. However, as the application set expands and becomes more diverse, the need for the operating system to grow in size and abstraction becomes more problematic in relation to the resources available in the device.
In addition, many applications today utilize the well-known Component Object Model (COM) software architecture as well as other well-known architectures such as Common Object Request Broker Architecture (CORBA), Distributed COM (DCOM), and Distributed Computing Environment (DCE). COM is based on software objects or modules that are well encapsulated and accessed through interfaces provided by services such as Object Linking and Embedding (OLE) and ActiveX. COM objects can interoperate with other COM components through their interfaces. In this way, COM allows applications to be built from different components.
Thus, with a COM-based architecture, the operating system provides services supporting the execution of an application, in essence building the application by defining and implementing interfaces and modules between its various COM components when the application is called. Accordingly, with COM applications, further complexity is added to the operating system, requiring more coding and hence more memory.
In summary, in order to keep up with consumer demands, it is desirable to expand the capabilities of palmtops and increase the number and type of applications they can execute, as well as the amount of information they can hold. However, this can put a strain on the memory resources of the palmtop. Furthermore, the number and variety of applications can increase the complexity and size of the operating system needed, also straining available memory resources. In addition, software architectures such as COM can increase the size and complexity of the operating system, further adding to the load on available memory. On the other hand, any increase in memory size is constrained by the desire to keep palmtops small and light.
SUMMARY OF THE INVENTIONAccordingly, what is needed is a system or method allowing applications to be stored and executed on a portable computer system (e.g., a palmtop) while efficiently utilizing the memory resources available on such a device. The present invention provides this advantage and others not specifically mentioned above but described in the sections to follow.
A method and system are described for installing an application or set of applications on a client device, such as a portable (or palmtop) computer system. In the present embodiment, the application(s) to be installed on the client device are identified. A host device generates an operating system for the client device that contains essentially only those software routines needed to support the applications (a “subset” of software routines). Only the application(s) and the subset of software routines needed to support the application(s) are downloaded onto the client computer system. Thus, the operating system of the client computer system contains only those software routines needed to support the application(s), thereby saving memory space in the client computer system.
In one embodiment, the subset comprises a complete set of software routines that are required to use the application(s) on the client device. In this embodiment, the application(s) and the subset are installed on the client device.
In another embodiment, the subset comprises only those software routines that, in combination with software routines already on the client device and used by the client operating system, allow the application(s) to be used on the client device. In this embodiment, the application(s) and only the incremental changes to the client operating system needed to support the application(s) are installed on the client device, and the client operating system is modified accordingly.
In the present embodiment, the application(s) and the subset of software routines are downloaded onto the client computer system at “sync time” (the time at which the client and host computer systems synchronize with each other to share information such as applications and databases).
In another embodiment, a user identifies via a graphical user interface the applications that are to be installed on the client device.
The present invention thus provides a method and system thereof in which a memory image is built at sync time and loaded onto the client device, such that the memory image includes only the specific code and resources required to support the client device and the application(s) installed on the client device. In one embodiment, the present invention includes the concept of synchronizing the presently installed operating system and installing a new application or set of applications with only the changes (“deltas”) in the operating system required by the application(s). The present invention removes the need to install code or resources not required by the specific type of client device or the application(s) installed thereon, thereby efficiently using memory resources on the client device.
BRIEF DESCRIPTION OF THE DRAWINGSFIG. 1A is a block diagram of an exemplary network environment including a palmtop computer system in accordance with one embodiment of the present invention.
FIG. 1B is a block diagram of a palmtop computer system connected to other computer systems and the Internet via a cradle device in accordance with one embodiment of the present invention.
FIG. 2 is a top side perspective view of a palmtop computer system in accordance with one embodiment of the present invention.
FIG. 3 is' a bottom side perspective view of the palmtop computer system ofFIG. 2.
FIG. 4 is an exploded view of the components of the palmtop computer system ofFIG. 2.
FIG. 5 is a block diagram of one embodiment of a portable computer system in accordance with the present invention.
FIG. 6 is a perspective view of the cradle device for connecting the palmtop computer system to other systems via a communication interface in accordance with one embodiment of the present invention.
FIG. 7 is a block diagram of one embodiment of a desktop or laptop computer system in accordance with the present invention.
FIG. 8 is a block diagram of a one embodiment of a system for allowing a palmtop computer system and another computer system to share information in accordance with the present invention.
FIG. 9A is a block diagram showing a software platform used on a portable computer system in accordance with one embodiment of the present invention.
FIG. 9B is a block diagram illustrating the installation of an application onto a palmtop computer system in accordance with one embodiment of the present invention.
FIG.1OA is a flowchart of the steps in a process for installing an application on a palmtop computer system in accordance with one embodiment of the present invention.
FIG.1OB is a flowchart of one embodiment of the steps in a process in which a user selects a set of applications to be installed on a palmtop computer system in accordance with the present invention.
FIG. 11 illustrates a memory map of the memory of a palmtop computer system showing an application bound to a section of code in accordance with one embodiment of the present invention.
FIG. 12 is a flowchart of the steps in a process for binding an application to a memory address in accordance with one embodiment of the present invention.
DETAILED DESCRIPTION OF THE INVENTIONIn the following detailed description of the present invention, numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, it will be recognized by one skilled in the art that the present invention may be practiced without these specific details or with equivalents thereof. In other instances, well known methods, procedures, components, and circuits have not been described in detail as not to unnecessarily obscure aspects of the present invention.
Notation and NomenclatureSome portions of the detailed descriptions, which follow, are presented in terms of procedures, steps, logic blocks, processing, and other symbolic representations of operations on data bits that can be performed on computer memory. These descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. A procedure, computer executed step, logic block, process, etc., is here, and generally, conceived to be a self-consistent sequence of steps or instructions leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated in a computer system. 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, or the like.
It should be borne in mind, however, that all of 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 as apparent from the following discussions, it is appreciated that throughout the present invention, discussions utilizing terms such as “identifying” or “generating” or “installing” or “receiving” or “transferring” or “inserting” or “modifying” or “building” or “storing” or “determining” or “replacing” or the like, refer to the action and processes of a computer system (e.g., processes1000,1100 and1200 ofFIGS. 1 OA,1 OB and12, respectively), or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.
Exemplary Palmtop PlatformFIG. 1A is a block diagram of anexemplary network environment50 including aportable computer system100 in accordance with one embodiment of the present invention.Portable computer system100 is also known as a palmtop or palm-sized computer system. In one embodiment,portable computer system100 bas the ability to transmit and receive data and information over a wireless communication interface (e.g., a radio interface).
In the present embodiment,base station32 is both a transmitter and receiver base station, which can be implemented by coupling it into an existingpublic telephone network34. Implemented in this manner,base station32 enablesportable computer system100 to communicate with a proxyserver computer system36, which is coupled by wire to the existingpublic telephone network34. Furthermore, proxyserver computer system36 is coupled to theinternet52, thereby enablingportable computer system100 to communicate with theInternet52. When communicating with a Web site overinternet52, protocols such as CTP (Compact Transport Protocol) and CML (Compact Markup Language) can be used byportable computer system100 in the present embodiment.
It should be appreciated that within the present embodiment, one of the functions ofproxy sewer36 is to perform operations over theInternet52 on behalf ofportable computer system100. For example,proxy server36 has a particular Internet address and acts as a proxy device forportable computer system100 over theInternet52.
It should be further appreciated that other embodiments of a communications network, planned or envisioned, may be utilized in accordance with the present invention. For example, a wireless connection may be made fromportable computer system100 directly to theInternet52.
The data and information which are communicated betweenbase station32 andportable computer system100 are the same type of information and data that can conventionally be transferred and received over a public telephone wire network system. However, a wireless communication interface is utilized to communicate data and information betweenportable computer system100 andbase station32. It should be appreciated that one embodiment of a wireless communication system in accordance with the present invention is the Mobitex wireless communication system.
FIG. 1B illustrates another embodiment of asystem51 that can be used in conjunction with various embodiments of the present invention.System51 comprises ahost computer system56 which can either be a desktop unit as shown, or, alternatively, can be alaptop system58. Optionally, one or more host computer systems can be>used withinsystem51.Host computer systems58 and56 are shown connected to acommunication bus54, which in one embodiment can be a serial communication bus, but could be of any of a number of well known designs, e.g., a parallel bus, Ethernet Local Area Network (LAN), etc. Optionally,bus54 can provide communication with theInternet52 using a number of well-known protocols.
Importantly,bus54 is also coupled to acradle60 for receiving and initiating communication with portable computer system100 (“handheld computer”) of the present invention.Cradle60 provides an electrical and mechanical communication interface between bus54 (and anything coupled to bus54) and thecomputer system100 for two-way communications. It is appreciated that, in accordance with the present invention,portable computer system100 may instead be coupled tohost computer systems56 and58 via a wireless (radio) connection.Computer system100 also contains a wirelessinfrared communication mechanism64 for sending and receiving information from other devices.
With reference to bothFIGS. 1A and 16, it is appreciated thatportable computer system100 can be used in a network environment combining elements ofnetworks50 and51. That is, as will be seen below,portable computer system100 can include both a wireless infrared communication mechanism and a signal (e.g., radio) receiver/transmitter device.
FIG. 2 is a perspective illustration of thetop face100aof one embodiment of thepalmtop computer system100 of the present invention. Thetop face100acontains adisplay screen105 surrounded by a bezel or cover. Aremovable stylus80 is also shown. Thedisplay screen105 is a touch screen able to register contact between the screen and the tip of thestylus80. Thestylus80 can be of any material to make contact with thescreen105. Thetop face100aalso contains one or more dedicated and/orprogrammable buttons75 for selecting information and causing the computer system to implement functions. The on/offbutton95 is also shown.
FIG. 2 also illustrates a handwriting recognition pad or “digitizer” containing tworegions106aand106b. Region106ais for the drawing of alphabetic characters therein (and not for numeric characters) for automatic recognition, andregion106bis for the drawing of numeric characters therein (and not for alphabetic characters) for automatic recognition. Thestylus80 is used for stroking a character within one of theregions106aand106b. The stroke information is then fed to an internal processor for automatic character recognition. Once characters are recognized, they are typically displayed on thescreen105 for verification and/or modification.
FIG. 3 illustrates thebottom side100bof one embodiment of the palmtop computer system that can be used in accordance with various embodiments of the present invention. Anextendible antenna85 is shown, and also a batterystorage compartment door90 is shown. Acommunication interface180 is also shown. In one embodiment of the present invention, thecommunication interface180 is a serial communication port, but could also alternatively be of any of a number of well-known communication standards and protocols, e.g., parallel, SCSI (small computer system interface), Firewire (IEEE 1394), Ethernet, etc.
FIG. 4 is an exploded view of thepalmtop computer system100 in accordance with one implementation.Computer system100 contains aback cover245, and afront cover210 having an outline ofregion106 and holes75afor receiving buttons75b. A flat panel display105 (both liquid crystal display and touch screen) fits intofront cover210. Any of a number of display technologies can be used, e.g., liquid crystal display (LCD), field emission display (FED), plasma, etc., for theflat panel display105. A battery215 provides electrical power. A contrast adjustment (potentiometer)220 is also shown, as well as an on/offbutton95. Aflex circuit230 is shown along with a printed circuit (PC)board225 containing electronics and logic (e.g., memory, communication bus, processor, etc.) for implementing compute r system functionality. The digitizer pad is also included inPC board225. Amidframe235 is shown along withstylus80. Position-adjustable antenna85 is shown.
Infrared communication mechanism64 (e.g., an infrared emitter and detector device) is for sending and receiving information from other similarly equipped devices (seeFIG. 1 B). A signal (e.g., radio) receiver/transmitter device108 is also shown. The receiver/transmitter device108 is coupled to theantenna85 and also coupled to communicate with thePC board225. In one implementation the Mobitex wireless communication system is used to provide two-way communication betweencomputer system100 and other networked computers and/or the Internet via a proxy server (see Figure IA).
FIG. 5 illustrates circuitry ofcomputer system100, some of which can be implemented on PC board225 (FIG. 4).Computer system100 includes an address/data bus110 for communicating information, acentral processor101 coupled with the bus for processing information and instructions, a volatile memory102 (e.g., random access memory, RAM) coupled with thebus110 for storing information and instructions for thecentral processor101 and a non-volatile memory103 (e.g., read only memory, ROM) coupled with thebus110 for storing static information and instructions for theprocessor101.Computer system100 also includes an optional data storage device104 (e.g., memory stick) coupled with thebus110 for storing information and instructions.Device104 can be removable. As described above,computer system100 also contains adisplay device105 coupled to thebus110 for displaying information to the computer user.PC board225 can contain theprocessor101, thebus110, theROM103 and theRAM102.
With reference still toFIG. 5,computer system100 also includes a signal transmitter/receiver device108, which is coupled to bus110 for providing a physical communication link betweencomputer system100, and a network environment (e.g.,network environments50 and51 ofFIGS. 1A and 16, respectively). As such, signal transmitter/receiver device108 enablescentral processor unit101 to communicate wirelessly with other electronic systems coupled to the network. It should be appreciated that within the present embodiment, signal transmitter/receiver device108 is coupled to antenna85 (FIG. 4) and provides the functionality to transmit and receive information over a wireless communication interface. It should be further appreciated that the present embodiment of signal transmitter/receiver device108 is well suited to be implemented in a wide variety of ways. For example, signal transmitter/receiver device108 could be implemented as a modem.
In one embodiment,computer system100 includes acommunication circuit109 coupled tobus110.Communication circuit109 includes an optional digital signal processor (DSP)120 for processing data to be transmitted or data that are received via signal transmitter/receiver device108. Alternatively,processor101 can perform some or all of the functions performed byDSP120.
Also included incomputer system100 ofFIG. 5 is an optionalalphanumeric input device106 that in one implementation is a handwriting recognition pad (“digitizer”) havingregions106aand106b(FIG. 2), for instance.Alphanumeric input device106 can communicate information and command selections toprocessor101.Computer system100 also includes an optional cursor control or directing device (on-screen cursor control107) coupled tobus110 for communicating user input information and command selections toprocessor101. In one implementation, on-screencursor control device107 is a touch screen device incorporated withdisplay device105. On-screencursor control device107 is capable of registering a position ondisplay device105 where the stylus makes contact. Thedisplay device105 utilized withcomputer system100 may be a liquid crystal display device, a cathode ray tube (CRT), a field emission display device (also called a flat panel CRT) or other display device suitable for generating graphic images and alphanumeric characters recognizable to the user. In the preferred embodiment,display device105 is a flat panel display.
FIG. 6 is a perspective illustration of one embodiment of thecradle60 for receiving thepalmtop computer system100.Cradle60 contains a mechanical andelectrical interface260 for interfacing with communication interface108 (FIG. 3) ofcomputer system100 whensystem100 is slid into thecradle60 in an upright position. Once inserted,button270 can be pressed to initiate two-way communication (e.g., a communication session) betweencomputer system100 and other computer systems coupled toserial communication265.
Exemplary Desktop/Laptop PlatformRefer now toFIG. 7 which illustrates an exemplary host computer system342 (e.g.,desktop computer system56 orlaptop computer system58 ofFIG. 1B) upon which embodiments of the present invention may be practiced. In one embodiment,host computer system342 may instead be a server computer system in a computer system network (including the World Wide Web) or a proxy server computer (e.g.,proxy server36 ofFIG. 1 B).
Continuing with reference toFIG. 7, in general,computer system342 comprisesbus700 for communicating information,processor701 coupled withbus700 for processing information and instructions, random access (volatile) memory (RAM)702 coupled withbus700 for storing information and instructions forprocessor701, read-only (non-volatile) memory (ROM)703 coupled withbus700 for storing static information and instructions forprocessor701,data storage device704 such as a magnetic or optical disk and disk drive coupled withbus700 for storing information and instructions, an optional user output device such asdisplay device705 coupled tobus700 for displaying information to the computer user, an optional user input device such asalphanumeric input device706 including alphanumeric and function keys coupled tobus700 for communicating information and command selections toprocessor701, and an optional user input device such ascursor control device707 coupled tobus100 for communicating user input information and command selections toprocessor701. Furthermore, an optional input/output (VO)device708 is used to couplecomputer system342 to, for example, a communication bus (e.g.,communication bus54 ofFIG. 1B).
Continuing with reference toFIG. 7,display device705 utilized withcomputer system342 may be a liquid crystal device, cathode ray tube, or other display device suitable for creating graphic images and alphanumeric characters recognizable to the user.Cursor control device707 allows the computer user to dynamically signal the two-dimensional movement of a visible symbol (pointer) on a display screen ofdisplay device705. Many implementations of the cursor control device are known in the art including a trackball, mouse, joystick or special keys onalphanumeric input device706 capable of signaling movement of a given direction or manner of displacement. It is to be appreciated that thecursor control707 also may be directed and/or activated via input from the keyboard using special keys and key sequence commands. Alternatively, the cursor may be directed and/or activated via input from a number of specially adapted cursor directing devices.
FIG. 8 illustrates asystem340 in accordance with one embodiment of the present invention for allowing a portable computer system100 (e.g., a palmtop or any portable computer system) to share information with a host computer system342 (FIG. 7).Computer system342 containsdatabase326, a software file sharing manager322 (e.g., a hot-sync software manager), a filelink configuration database324, and asoftware conduit320. The filelink configuration database324 is linked to thefile sharing manager322 and specifies, for a particular database, its source file, category information, and the frequency of update for the database.Conduit320 outlines the manner in which records are to be synchronized between databases under control offile sharing manager322. This process, including the file sharing manager and the conduit, is described in U.S. Pat. No. 5,884,323 by Hawkins et al., issued Mar. 16, 1999, assigned to the assignee of the present invention and hereby incorporated by reference.
With reference still toFIG. 8,portable computer system100 is interfaced withcomputer system342 using cradle60 (FIG. 1 B). Alternatively,portable computer system100 can be interfaced withcomputer system342 using a wireless (e.g., radio) connection. During synchronization betweenportable computer system100 anddatabase326, delta records330aand330bare passed throughconduit320 betweendatabase326 and a database ofportable computer system100 under control of thefile sharing manager322. Delta records330aand330brepresent changes (including additions) that occurred on eitherportable computer system100 or oncomputer system342. After synchronization, these two databases will contain the same information. Namely, records updated onportable computer system100 are reflected indatabase326 and vice versa. The synchronization process (including the file sharing manager) is described in U.S. Pat. No. 6,006,274 by Hawkins et al., issued Dec. 21, 1999, assigned to the assignee of the present invention and hereby incorporated by reference. Synchronization is also described in U.S. Pat. No. 5,727,202 by Kucala, issued Mar. 10, 1998, assigned to the assignee of the present invention and hereby incorporated by reference, and also in U.S. Pat. No. 5,832,489 by Kucala, issued Nov. 3, 1998, assigned to the assignee of the present invention and hereby incorporated by reference.
Process for Installing an ApplicationFIG. 9A is a block diagram ofsoftware platforms900 and910 in accordance with one embodiment of the present invention.Software platform900 represents the total set of applications, application program interfaces and operating system software routines that can be used on a portable computer system100 (FIG. 5). Software platform910 represents a subset ofsoftware platform900 that can be derived fromsoftware platform900 and installed onportable computer system100 in accordance with one embodiment of the present invention.
With reference to FIG.9AJ software platform900 includes anapplication software layer902, which includes the many different software applications that can operate withinportable computer system100.Application software layer902 communicates data, data packets, and other types of information with application program interface (API)layer904. APIs are well known by those of ordinary skill in the art as a mechanism for providing a common interface betweenapplication software layer902 andoperating system906.Operating system906 is comprised of a plurality of software routines ormodules906a-ethat operate in a known manner to provide the resources and services needed to support the execution of the applications and APIs inapplication software layer902 andAPI layer904.
In accordance with the present embodiment of the present invention,software platform910 represents a subset ofsoftware platform900 that can be used on aportable computer system100.Software platform910 includes an application software layer912, an application program interface layer914, and anoperating system916 comprised of a plurality of software routines ormodules906a-c. Application software layer912 includes those applications installed onportable computer system100. In accordance with the present embodiment of the present invention,operating system916 is comprised of only those software routines ormodules906a-cthat are needed in order to support the execution of the applications and APIs insoftware layer912 andAPI layer914. Thus, in accordance with the present invention,software platform910 uses less memory thansoftware platform900, thereby more efficiently using the memory resources onportable computer system100. Additional information is provided in conjunction withFIG. 10B.
FIG. 9B is a block diagram illustrating the installation of anew application908 onto apalmtop computer system100 in accordance with one embodiment of the present invention. In accordance with the present embodiment of the present invention, a memory image of a subset ofoperating system906 is generated. In the present embodiment, the memory image comprises the software routine(s) (e.g.,software routine906d), or a portion of one or more software routines, that in combination withsoftware routines906a-cused by operating system916 onportable computer system100 allowapplication908 to be used on the portable computer system. In another embodiment, a memory image is generated containing the software routine(s), or portions of one or more software routines, that are required to useapplication908 as well as the applications already on portable computer system100 (e.g., the memory image comprisessoftware routines906a-d). Additional information is provided in conjunction with FIG.1OA.
Thus, in the former embodiment of the preceding paragraph] the memory image comprises the incremental changes tooperating system916 needed to supportapplication908, while in the latter embodiment, the memory image comprises a more complete operating system needed to supportapplication908 and the other applications installed onportable computer system100. In either embodiment, operating system916 of the portable computer system contains only those software routines needed to support the installed applications, thus efficiently using the memory resources available on the portable computer system.
In the present embodiment of the present invention] theoperating system916 is modified at sync time to incorporate the memory image comprising eithersoftware routine906dor the memory image comprising the modified operating system916 (that is, the memory image containingsoftware routines906a-d).New application908 is also downloaded ontoportable computer system100 at sync time.
FIG. 10A is a flowchart of one embodiment of the steps in aprocess1000 for installing a new application from a host device (e.g.,computer system342 ofFIG. 7) to a client device (e.g.,portable computer system100 ofFIG. 1B) in accordance with the present invention. In the present embodiment,process1000 can be implemented bycomputer system342 as computer-readable program instructions stored in a memory unit (e.g., ROM non-volatile703 ofFIG. 7) and executed by a processor (e.g.,processor701 ofFIG. 7). In one embodiment,process1000 is performed during the synchronization process described in conjunction withFIG. 8; however, it is appreciated thatprocess1000 is not limited to the synchronization process.
Instep1010 ofFIG. 10A, the application to be installed on portable computer system100 (e.g.,application908 ofFIG. 9B) is identified oncomputer system342. The application can be received at the host device from a site on the World Wide Web via Internet52 (FIG. 1B), from another computer system via a local area network, or from some other source.
In one embodiment,application908 is based on the well-known Component Object Model (COM) software architecture or one of the other well-known architectures such as Common Object Request Broker Architecture (CORBA), Distributed COM (DCOM), and Distributed Computing Environment (DCE). In these cases, it may be necessary forcomputer system342 to buildapplication908; the manner in which an application is built in accordance with these software architectures is also well-known in the art. Thus, in accordance with the present invention, becauseapplication908 is built oncomputer system342, it is not necessary forportable computer system100 to have software/code for supporting software architectures such as COM, thereby saving memory space in the portable computer system.
Instep1020 ofFIG. 10A, with reference also toFIG. 9B, a subset ofoperating system906 is generated. As part of the synchronization process described in conjunction withFIG. 8,computer system342 has the capability to identify whetheroperating system916 needs to modified, updated or added to in order to supportapplication908. Thus, in one embodiment,computer system342 can generate the incremental changes that need to be made tooperating system916 in order to supportapplication908.
Accordingly, in one embodiment, the subset comprises the software routine(s) (e.g.,software routine906d) or a portion of one or more software routines that, in combination withsoftware routines906a-calready used by operating system916 onportable computer system100, support application908 (e.g., allow the application to be used on the portable computer system). In another embodiment, the subset comprises the entire set ofsoftware routines906a-dthat are required to useapplication908 as well as the other applications installed onportable computer system100.
It is appreciated thatcomputer system342 also has the capability to identify unique characteristics ofportable computer system100 that are pertinent to identifying the changes that are needed tooperating system916. That is, for example,computer system342 can identify the type of hardware (e.g., the type of processor) being used byportable computer system100, and consequently can tailor the application and the subset of the operating system accordingly.
Instep1030 ofFIG. 10A, with reference also toFIG. 9B,operating system916 is modified to incorporate the subset ofoperating system906 generated instep1020. In the present embodiment,step1030 is performed during the synchronization process discussed above in conjunction withFIG. 8. In one embodiment, in which the subset contains only the incremental changes to the operating system, the subset is added to the current contents ofoperating system916. In another embodiment, in which the subset comprises the entire set ofsoftware routines906a-d, the software routines can be overwritten, updated or modified accordingly.
Instep1040,application908 is installed onportable computer system100.
It is appreciated thatprocess1000 can be implemented with a graphical user interface (GUI) or similar mechanism that allows the user ofportable computer system100 to select applications to be installed onportable computer system100. Thus, the present embodiment of the present invention can be automatically performed at sync time, or it can be implemented under the direction of and at the discretion of the user.
The present embodiment of the present invention, inparticular process1000, has been described in a context in which a new application is to be installed ontoportable computer system100. However, it is appreciated that the present embodiment of the present invention can also be used to update or delete one or more applications onportable computer system100, or to install a new API, update an existing API, or delete an API fromportable computer system100.
For example, a GUI can be used to select applications to be removed fromportable computer system100. In this latter case, those portions ofoperating system916 ofportable computer system100 that are no longer needed because, for example, the applications they support have been removed can also be removed fromportable computer system100 during the synchronization process.
FIG. 10B is a flowchart of one embodiment of the steps in aprocess1100 in which a user selects a set of applications to be installed from a host device (e.g.,desktop computer system56 orlaptop computer system58 ofFIG. 18, exemplified bycomputer system342 ofFIG. 7) on a client device (e.g.,portable computer system100 ofFIG. 1B) in accordance with the present invention. In the present embodiment,process1100 can be implemented bycomputer system342 as computer-readable program instructions stored in a memory unit (e.g., ROM non-volatile703 ofFIG. 7) and executed by a processor (e.g.,processor701 ofFIG. 7). In one embodiment,process1100 is performed during the synchronization process described in conjunction withFIG. 8; however, it is appreciated thatprocess1100 is not limited to the synchronization process.
Instep1110 ofFIG. 10B, the user identifies the set of applications to be installed onportable computer system100, using a GUI for example. The user can also identify applications to be deleted fromportable computer system100, applications to be updated (for example, with newer versions), and applications that are to remain as they are.
Instep1120, with reference also toFIG. 9B, based on the set of applications identified instep1110, a memory image comprising a subset ofoperating system906 is generated. In one embodiment, the memory image comprises the incremental changes (additions and deletions) that need to be made tooperating system916 in order to support the selected set of applications. In another embodiment, the memory image comprises the more complete set of software routine(s) that are required to use the set of selected applications onportable computer system100.
Instep1130 ofFIG. 10B, with reference also toFIG. 9B,operating system916 is modified or replaced as appropriate based onstep1120. In one embodiment, in which the subset contains only the incremental changes to the operating system, the subset is added to the current contents ofoperating system916. In another embodiment, in which the subset comprises the entire set ofsoftware routines906a-d, the software routines can be overwritten, updated or modified accordingly.
Instep1140 ofFIG. 10B and with reference also toFIG. 9B, in the present embodiment, the selected set of applications are loaded ontoportable computer system100.
Thus, the present embodiment of the present invention provides a method and system thereof in which a memory image is built at sync time and loaded onto the client device (e.g., portable computer system100), such that the memory image includes only the specific code and resources required to support the client device and the application(s) installed on the client device. In another embodiment, the present invention includes the concept of synchronizing the presently installed operating system and installing a new application or set of applications with only the changes (“deltas”) in the operating system required by the new application. The present embodiment of the present invention removes the need to install software/code or resources not required by the specific type of client device or the applications installed thereon, thereby saving memory space on the client device.
Process for Binding an ApplicationFIG. 11 illustrates a memory map of the memory of portable computer system100 (FIG. 5) showing anapplication1310 bound to a section of code in accordance with one embodiment of the present invention. Each of the twoapplications1310 and1330 make a “call” (a transfer of the execution of the application) tocomponent object1320 in accordance with one embodiment of the present invention. In the present embodiment,applications1310 and1330 andcomponent object1320 may be based on well-known software architectures such as COM, CORBA, DCOM, and DCE.
Component object1320 comprises a plurality of different functions that may be used by applications1310 and1330. For example, during the execution of application1310, if a particular function (e.g., a “draw line” function) needs to be performed, the execution is transferred tocomponent object1320 for that function. Upon completion of the function, the execution is transferred back to application1310. Similarly,application1330 can also be connected withcomponent object1320 for the draw line function or for some other function. It is appreciated that an application can have multiple calls.
In accordance with the present embodiment of the present invention, a call in an application (e.g., application1310) to a specific function incomponent object1320 is made with reference to a specific memory address incomponent object1320 where that function is located (e.g., a physical memory location or a line number). In this embodiment, a line of code in application1310 (the line of code at which the call is located) is linked to a line of code where the function being called is located; this process is referred to as “binding.” For example, the previous reference to the function (e.g., a library or system call to “draw line”) is replaced with a function call to a memory address (e.g., line1504). Specifically, a “dispatch” to a particular component object and function is linked to a particular line number. For example, ifcomponent object1320 is component object “#3” and the draw line function is function “#5,” then dispatch (#3, #5) is linked toline1504. In this manner,application1310 is “bound” tocomponent object1320; specifically, a draw line call inapplication1310 is bound toline1504. It is appreciated that an application can be bound to multiple physical memory locations in more than one component objects. Similarly, component objects can be bound to other component objects.
By binding an application to a specific memory address in a component object in accordance with the present embodiment of the present invention, the call to the referenced function occurs more quickly, improving the overall processing efficiency of the device executing the application. In addition, there is a potential memory space benefit when the function call is smaller than the library call and the code is rearranged to eliminate this unneeded space.
FIG. 12 is a flowchart of one embodiment of the steps in aprocess1200 for binding an application in accordance with the present invention. In the present embodiment,process1200 can be implemented by computer system342 (FIG. 7) as computer-readable program instructions stored in a memory unit (e.g., ROM non-volatile703 ofFIG. 7) and executed by a processor (e.g.,processor701 ofFIG. 7).Steps1220,1230,1240 and1250 ofprocess1200 are typically performed during the synchronization process described in conjunction withFIG. 8; however, it is appreciated thatprocess1200 is not limited to the synchronization process.
Instep1210 ofFIG. 12, the application to be installed (e.g.,application1310 ofFIG. 11) onportable computer system100 is received atcomputer system342. The application can be received at the host device from a site on the World Wide Web via Internet52 (FIG. 1 B), from another computer system via a local area network, or from some other source.
Instep1220 ofFIG. 12, in the present embodiment,application1310 is installed inportable computer system100 using, for example, the synchronization process described in conjunction withFIG. 8. In one embodiment,application1310 is installed onportable computer system100 usingprocess1000 ofFIG. 10A.
Instep1230 ofFIG. 12, in one embodiment, beforeapplication1310 is bound to component object1320 (FIG. 11), a threshold criterion must be satisfied. In another embodiment, the component objects are bound at the time whenapplication1310 is first built on computer system342 (step1210), without considering a threshold criterion.
If the threshold criterion is satisfied, binding is performed during the synchronization currently being performed (step1240). Otherwise, the binding is not performed but is performed at a later sync time. The threshold criterion is checked each time synchronization is performed (step1235).
The threshold criterion is utilized because, once an application is bound tocomponent object1320 inportable computer system100, it may be difficult to share the application with another portable computer system. For example, it is popular to beam an application from one palmtop computer to a second palmtop using an infrared signal (see discussion pertaining toFIG. 4). However, after binding, the application contains a reference to a specific physical memory location (e.g., line number) for a particular function (e.g.,line1504 for the draw line function). Thus, the draw line function may be located at a different line number in the second palmtop. Accordingly, the application may not perform properly on the second palmtop.
In one embodiment, the threshold criterion is based on the elapsed time sinceapplication1310 was installed on portable computer system100 (in step1220). In another embodiment, the threshold criterion is based on the elapsed time since thelast time application1310 was beamed fromportable computer system100 to another computer system. In these embodiments, the purpose of the threshold criterion is to allow a user a period of time tobeam application1310 to another user before the application is bound, or to delay binding until it appears that the application will no longer be beamed. It is appreciated that other threshold criterion may be utilized for other purposes in accordance with the present invention. For example, the threshold criterion can be based on the number of times the application is beamed fromportable computer system100 to other portable computer systems.
In the present embodiment, if binding, is not performed during the current synchronization, a copy ofapplication1310 is maintained oncomputer system342. This copy of the application can be bound bycomputer system342 when the threshold criterion is satisfied, and the bound copy can be used to replace the unbound version of the application onportable computer system100 at a later sync time. Thusapplication1310 does not have to be transferred back and forth betweenportable computer system100 andcomputer system342 in order to be bound.
Instep1240 ofFIG. 12, the application is bound as described above in conjunction withFIG. 11.
Instep1250 ofFIG. 12, application1310 (now bound) is reinstalled inportable computer system100 using, for example, the synchronization process described in conjunction withFIG. 8. The installation must preclude the code involved from being subsequently moved. Thus, in one embodiment, the code is placed in read-only memory. Alternatively, the code is marked as not being movable.
The present embodiment of the present invention is described in the context of installing an application from a host computer device (e.g., computer system342) to aportable computer system100. However, it is appreciated that the present embodiment of the present invention may be utilized in other types and combinations of computer systems. Furthermore, the present embodiment of the present invention may be utilized to bind an application, a component object or a line of code to another application, component object or line of code in any type of single storage system (egg., a memory unit such as ROM, RAM, etc.), or in two different storage systems on the same or on different devices.
Thus, the present embodiment of the present invention provides a method and system thereof for binding an application to a specific physical memory location (e.g., a line number) that corresponds to a line or section of code for performing a particular function. Accordingly, when the application makes a call to that function, the execution of the application can proceed directly to the physical location where that function is located, instead of having to search out the location of the function. As such, the call is completed more quickly, thereby speeding up the execution of the application.
The preferred embodiment of the present invention is thus described. While the present invention has been described in particular embodiments, it should be appreciated that the present invention should not be construed as limited by such embodiments, but rather construed according to the below claims.