U.S. patent application number 10/771021 was filed with the patent office on 2004-08-12 for system for evolutionary adaptation.
This patent application is currently assigned to Lockheed Martin Corporation. Invention is credited to Bush, Stephen F..
Application Number | 20040156370 10/771021 |
Document ID | / |
Family ID | 32829912 |
Filed Date | 2004-08-12 |
United States Patent
Application |
20040156370 |
Kind Code |
A1 |
Bush, Stephen F. |
August 12, 2004 |
System for evolutionary adaptation
Abstract
A system in accordance with the present invention operates a
wireless ad hoc network. The system includes a plurality of nodes
and an active packet. The active packet implements a genetically
programmed adaptation of one of the plurality of nodes in response
to a change of condition of the one node of the plurality of
nodes.
Inventors: |
Bush, Stephen F.; (Latham,
NY) |
Correspondence
Address: |
TAROLLI, SUNDHEIM, COVELL & TUMMINO LLP
Suite 1111
526 Superior Avenue
CLEVELAND
OH
44114
US
|
Assignee: |
Lockheed Martin Corporation
|
Family ID: |
32829912 |
Appl. No.: |
10/771021 |
Filed: |
February 3, 2004 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
60445579 |
Feb 7, 2003 |
|
|
|
Current U.S.
Class: |
370/400 ;
370/465 |
Current CPC
Class: |
H04W 36/00835 20180801;
H04W 84/18 20130101 |
Class at
Publication: |
370/400 ;
370/465 |
International
Class: |
H04J 003/16 |
Claims
Having described the invention, we claim:
1. A system for operating a wireless ad hoc network, said system
comprising: a plurality of nodes; and an active packet for
implementing a genetically programmed adaptation of one of said
plurality of nodes in response to a change of condition of said one
node of said plurality of nodes.
2. The system as set forth in claim 1 further including a
functional unit injected into said active packet.
3. The system as set forth in claim 2 wherein said functional unit
remains inactive until a fitness function is injected into said one
node of said plurality of nodes.
4. The system as set forth in claim 3 wherein said fitness function
allows functional evolution of said plurality of nodes.
5. The system as set forth in claim 4 wherein said system
genetically modifies itself to meet a specific fitness
criteria.
6. The system as set forth in claim 5 wherein said active packet
performs a mutation operation for generating a single parental
program.
7. The system as set forth in claim 6 wherein said single parental
program has been probabilistically selected based on fitness.
8. A computer program product for evolutionarily adapting a
network, said computer program product comprising: a first
instruction for implementing a genetically programmed adaptation of
one of a plurality of nodes in response to a change of condition of
the one node of the plurality of nodes, said first instruction
being executed by an active packet; and a second instruction for
injecting a functional unit into the active packet.
9. The computer program product as set forth in claim 8 further
including a third instruction for probabilistically selecting two
parental programs based on fitness.
10. The computer program product as set forth in claim 9 wherein
the two parental programs have different sizes and shapes.
11. The computer program product as set forth in claim 8 further
including a fourth instruction for continuously evaluating the
functional unit.
12. The computer program product as set forth in claim 11 further
including a fifth instruction for maintaining a population of
structures that evolve according to rules of selection and genetic
operators.
13. The computer program product as set forth in claim 12 further
including a sixth instruction for classifying functional units
within functional unit classes.
14. The computer program product as set forth in claim 13 further
including a seventh instruction for enforcing minimal requirements
on an execution environment of the network.
15. A method for adapting a network, said method comprising the
steps of: operating a plurality of nodes; implementing a
genetically programmed adaptation of one of the plurality of nodes
in response to a change of condition of the one node of the
plurality of nodes; executing said operating step by an active
packet; injecting a functional unit into the active packet; and
probabilistically selecting two parental programs based on
fitness.
16. The method as set forth in claim 15 further including the step
of publishing the state of each of the plurality of nodes to the
other nodes.
17. The method as set forth in claim 16 further including the step
of predicting a state of the network.
18. The method as set forth in claim 17 further including the step
of querying the network to verify the accuracy of said predicting
step.
Description
RELATED APPLICATION
[0001] This application claims the benefit of U.S. Provisional
Application No. 60/445,579, filed Feb. 7, 2003.
FIELD OF INVENTION
[0002] The present invention relates to a system for evolutionary
adaptation within a wireless network, and more specifically, to a
system for evolving services and protocols within wireless network
operation.
BACKGROUND OF THE INVENTION
[0003] Dynamic Ad-Hoc Wireless Networks (DAHWNs) are a subset of
variable topology networks. The goal of variable topology networks
is to maintain message delivery as the network topology varies.
Network nodes should be able to dynamically form transient
networks. Nodes, which may be located on rapidly moving platforms
such as aircraft, should be able to join, leave, and re-join
networks which may form at any time. Networks spontaneously form
and their topologies may change rapidly or almost immediately. An
additional challenge required by airborne and heterogeneous air and
ground environments is the ability to provide predictable and
optimized Quality of Service (QoS) of data transmission over
variable topologies.
[0004] In order to provide predictable and optimal Quality of
Service (QoS) in Dynamic Ad-Hoc Wireless Networks, network
architecture must support dynamic adaptation to the rapidly
changing environment. The degree to which the network must adapt is
dependent on the rate of change of the topology. QoS requirements
are most often stated in the form of an optimization problem with a
cost function that is optimized by adaptation within the network.
An applicable result from complexity theory, a No Free Lunch
Theorem, expresses a limit on the ability of any single algorithm,
or protocol, to meet QoS requirements. The No Free Lunch Theorem
states that all algorithms perform exactly the same, searching for
an extremum, when averaged over all cost functions. If a
potentially good algorithm appears to outperform poor algorithm on
some cost functions, then there exist exactly as many functions
where the apparent poor algorithm will outperform the good
algorithm. In other words, no single algorithm, or ad-hoc protocol,
can optimize all potential QoS requirements.
[0005] There are two forms of adaptation of protocols: 1) an
algorithm that remains fixed, but includes tunable parameters and
2) an algorithm whose fundamental operation changes. Most
conventional theory has focused upon the fixed, but tunable
adaptation. In other words, current research is seeking a fixed
algorithm with enough degrees of freedom such that optimal
operation may be found by tuning a fixed set of parameters. This
may be due in part to the difficulty in breaking away from the
fixed operation of the Internet Protocol that has a strong grip on
the mind-set of most researchers. Great potential exists in
examining the latter form of adaptation, particularly in light of
the implication of the No Free Lunch Theorem which indicates that
simply tuning a given algorithm will not be as optimal as changing
the algorithm itself.
[0006] Two high-level frameworks that are flexible and customizable
enough to allow dynamic change in algorithmic content within
networks are: Programmable Networks and Active Networks. A
Programmable Network allows control software of the network to be
dynamically reprogrammed. An Active Network is an extreme form of
programmable network that allows code and data to travel through
the network, often in the same packet structure. Active packet code
may execute on any node along the path that the packet travels.
Active networks may service both mobile and ad-hoc networks. One
challenge that must be addressed is the mismatch among adaptation
of individual layers of Internet Protocol (IP) and improving the
adaptation to suit the characteristics of wireless and ad-hoc
network environments.
[0007] The most significant gap that has been identified with
regard to adaptation within ad-hoc networks is the lack of
synergistic adaptation among network layers. Early network
implementation focused upon network layering as a mechanism for
partitioning computer communications into a set of tractable
sub-tasks.
[0008] Layering has resulted in many forms of adaptation occurring
simultaneously within the network. At times, adaptation in one
layer (e.g., congestion control) may occur in a manner antithetical
to adaptation in another layer (e.g., route repair). A
"meta"-adaptation view, namely how adaptive mechanisms work
together, is extremely important for an ad-hoc network environment,
but is currently lacking.
[0009] One conventional attempt to correct this deficiency is
Explicit Link Failure Notification. Congestion and routing each try
to adapt based upon limited knowledge of each other, resulting in
sub-optimal global behavior. Another example of sub-optimal
adaptation behavior is MAC to IP layer address resolution.
[0010] Non-layered ad hoc communication in sensor networks may also
provide useful information. A sensor network tends to assume large
numbers of constrained sensor devices that transmit asymmetrically
to a central location. However, ad hoc routing must be implemented
on the sensors using as little power and processing as possible.
This has resulted in fewer network layers and better in-network
utilization via active networking.
[0011] It would be desirable for wireless ad-hoc networks to
minimize network misconfiguration, bandwidth and processor
misallocation, faults caused by distributed denial of service,
virus attacks, sub-optimal traffic shaping, sub-optimal routing,
sub-optimally fused data, sub-optimal link quality, miscomposed
modeling, and sub-optimally tuned components. Further, conventional
ad-hoc wireless networks do not have the capability of
"self-healing". If a conventional network encounters a situation
that exceeds its predefined tolerances, the conventional network
will likely exhibit catastrophic failure.
SUMMARY OF THE INVENTION
[0012] A system in accordance with the present invention operates a
wireless ad hoc network. The system includes a plurality of nodes
and an active packet. The active packet implements a genetically
programmed adaptation of one of the plurality of nodes in response
to a change of condition of the one node of the plurality of
nodes.
[0013] A computer program product in accordance with the present
invention evolutionarily adapts a network. The computer program
product includes a first instruction for implementing a genetically
programmed adaptation of one of a plurality of nodes in response to
a change of condition of the one node of the plurality of nodes and
a second instruction for injecting a functional unit into the
active packet. The first instruction is executed by an active
packet.
[0014] A method in accordance with the present invention adapts a
network. The method includes the steps of: operating a plurality of
nodes with active packets; implementing a genetically programmed
adaptation of one of the plurality of nodes in response to a change
of condition of the one node of the plurality of nodes; executing
the operating step by the active packet; injecting a functional
unit into the active packet; and probabilistically selecting two
parental programs based on fitness.
BRIEF DESCRIPTION OF THE DRAWINGS
[0015] The foregoing and other features of the present invention
will become apparent to one skilled in the art to which the present
invention relates upon consideration of the following description
of the invention with reference to the accompanying drawings,
wherein:
[0016] FIG. 1 is a schematic representation of an example system
for use with the present invention;
[0017] FIG. 2 is a schematic representation of part of a network
for use with a system in accordance with the present invention;
[0018] FIG. 3 is a schematic representation of another example
system in accordance with the present invention;
[0019] FIG. 4 is a schematic representation of part of still
another example system in accordance with the present
invention;
[0020] FIG. 5 is a schematic representation of yet another example
system in accordance with the present invention; and
[0021] FIG. 6 is a schematic representation of still another
example system in accordance with the present invention.
DESCRIPTION OF AN EXAMPLE EMBODIMENTS
[0022] A system 10 in accordance with the present invention (FIG.
3) includes an active network packet for implementing genetically
programmed adaptation to respond to variable and unforeseen network
conditions. The active packet may be represented by a nucleus 101
with each network node 100 being represented by a cell containing
the nucleus (FIG. 3). The nucleus 101 may contain a population 111
of chromosomes (i.e., strings of functional units, etc.).
Functional Units may be predefined code units within the active
packets. A genetic network programming operation may begin with the
injection of the functional units, or basic building blocks of
genetic material, into the network. This genetic material may be
injected into each active node of the network. The genetic material
remains inactive until a particular fitness function is injected
into the network. Receipt of this particular fitness function
causes evolution. Evolution continues as long as the network
continues to operate.
[0023] The system 10 defines the interoperability requirements for
an active ad-hoc network by evolutionarily adapting the service of
the network. Networks are typically divided into fixed layers to
allow for specialization and ease of development. However,
different optimization techniques and strategies may be used within
different layers, sometimes leading to conflicting goals and lack
of optimal convergence. The goal of the system 10 is to define an
optimization service that is integrated with the network. Thus,
common optimization and fitness goals may be enabled across all
layers. The system 10 also allows the automated downward growth of
protocol stacks such that as the reliance upon a fixed
infrastructure is minimized.
[0024] The system 10 injects algorithmic information (i.e.,
executable code, etc) into the network. Active or programmable
capability optimizes this injection. While active ad-hoc network
generic adaptation may be standardized via a vehicle other than
active packets, active networking allows for convenient
implementation of algorithmic change within the network.
[0025] The system 10 provides an optimization service that is
integrated throughout the network architecture. In order to achieve
the goal of an infrastructure-less ad-hoc network, the system 10 is
highly adaptable. The adaptation framework of the system 10
minimizes reliance upon a fixed infrastructure.
[0026] The system 10 utilizes a DAHWN layering (FIG. 2) that is not
a conventional network stack. In particular, all of the components
above the Active Network Execution Environment are Active
Applications and do not require the services of other Active
Applications lower in the stack. While the Evolutionary Adaptation
Service (EAS) provided by the system 10 may be located at the top
of the stack, the EAS is available to support all of the components
in the stack. In addition, the EAS does not rely on all the stack
elements beneath it. For example, EAS does not require routing
(which may appear below it in the stack), unless it is being
remotely injected. Also, EAS is available to support services that
appear below the EAS in the stack. Specifically, a Policies block
may require the EAS to provide optimal solutions to security
problems or to evolve components that meet specified security
requirements (i.e., components with given levels of complexity,
etc.).
[0027] Another example may be complexity probes located deep within
the Active Execution Environment (lower in the stack) may use an
evolutionary complexity estimator that is provided by the EAS. The
system 10 exists within the DAHWN architecture (FIG. 2). The active
ad-hoc network genetic adaptation service of the system 10 runs as
an active application on an active node. The EAS is independent of
the underlying architecture of the DAHWN.
[0028] The Node Operating System (NOS) may run one or more
Execution Environments (EE) within a protocol stack of a DAHWN.
Multiple active applications may execute in any Execution
Environment. The protocol stack provides the architecture of an
active network overlay of protocols. This overlay scheme uses the
Active Network Encapsulation Protocol (ANEP) as a conduit for the
underlying network. The genetic adaptation system 10 in accordance
with the present invention executes alongside other active
applications and interacts with any packet managed entity to
provide optimization and adaptation services.
[0029] EAS is an active ad-hoc Evolutionary Adaptation Service. EAS
may provide mathematical optimization results and genetically
modify itself to meet a specific fitness criteria. Small-State is
an information cache that may generally be created at network nodes
11 (FIG. 1), intended for use by executable components of the same
application. Global-State is an information cache created at
network nodes 11, intended to be used by executable components of
different applications. Active Application (AA) is an active
network protocol or service that is injected into the network in
the form of active packets. The active packets are executed within
the EE. Active Network allows executable code to be injected into
the nodes of the network and allows the code to be executed at the
nodes. Active Packet is the executable code that is injected into
the nodes of an active network. Node Operating System is the active
network operating system. The supporting infrastructure on
intermediate network nodes 11 supports one or more execution
environments.
[0030] A Mutation Operation creates a single parental program
probabilistically selected from the population based on fitness. A
mutation point is randomly chosen, the subtree rooted at that point
is depleted, and a new subtree is grown there using the same random
growth process that was used to generate the initial population.
This type of asexual mutation operation is typically performed
sparingly (having a low probability during each generation of the
run).
[0031] Cross-Over is a sexual recombination operation with two
parental programs probabilistically selected from the population
based on fitness. The two parental programs are usually of
different sizes and shapes. A crossover point is randomly chosen in
the first parental program and a crossover point is randomly chosen
in the second parental program. A subtree is rooted at the
crossover point of the first, or receiving, parental program and is
deleted and replaced by the subtree from the second, or
contributing, parental program. Crossover is the predominant
operation in genetic programming (and genetic algorithms) and is
performed with a high probability.
[0032] A Reproduction Operation copies a single individual,
probabilistically selected operation based on fitness, into the
next generation of the population. A Functional Unit (FU) is an
active packet containing code that is capable of operating upon
other active packets. The Functional Unit has a well-defined input
port and output port through which active packets may flow as the
active packets are being executed. Functional Units are the
building blocks of a Chromosome. A Functional Unit may range in
complexity from very simple math operations to very complex packet
modifications upon active packets flowing through the Functional
Unit.
[0033] A chain of Functional Units has an input port and output
port. Chains of Function I/O ports form a Chromosome. Evolution
occurs by changing the ordering of the Functional Units.
[0034] A Nucleus is the evolutionary control code and the initial
set of Functional Units. Evolutionary Control Code includes
evolutionary and genetic programming mechanisms. The Evolutionary
Control Code is the particular implementation injected into active
nodes.
[0035] A Fitness Function may define the evolutionary goal. The
system 10 continuously evaluates genetic material (chromosomes) to
determine how well the genetic material meets the specified fitness
criteria. The Fitness Function may be user-defined. However, the
Fitness Function must return a relatively high value for `fit`
genetic material and a relatively low value for `less fit` genetic
material.
[0036] The above-discussed parameters may be the minimum necessary
elements for active ad-hoc network genetic adaptation. Fitness
Functions may thereby be injected into the network allowing
optimized static and algorithmic results. Such Fitness Functions
may be executed seamlessly with other Fitness Functions within the
network.
[0037] The system 10 conforms with existing standards when and
where possible. The system 10 facilitates a gradual transition to
an active and programmable networking paradigm. The system 10
performs Common In-line Optimization for introducing the use of a
common, cross-layer optimization technique. An evolutionary
algorithm is an umbrella term used to describe a computer-based
problem solving system using computational models.
[0038] The system 10 may use a variety of EVOLUTIONARY ALGORITHMS.
Some examples are GENETIC ALGORITHMS, EVOLUTIONARY PROGRAMMING,
EVOLUTION STRATEGIES CLASSIFIER SYSTEMS, and GENETIC PROGRAMMING.
These all share a common conceptual base of simulating the
evolution of individual structures via processes of SELECTION,
MUTATION, and REPRODUCTION. The processes may depend on the
perceived performance of the individual structures as defined by an
environment.
[0039] More specifically, EASs maintain a population of structures
that evolve according to rules of selection and "search operators",
or genetic operators such as recombination and mutation (FIG. 4).
Each individual in the population may receive a measure of fitness
within the environment. Reproduction receives attention on high
fitness individuals, thus exploiting the available fitness
information. Recombination and mutation perturb those individuals,
providing general heuristics for Exploration. Although simplistic
from a biologist's viewpoint, these algorithms are sufficiently
complex to provide robust and powerful adaptive search
mechanisms.
[0040] This genetic programming may start with a "primordial ooze"
of randomly-generated computer programs. The set of functions that
may appear at the internal points of a program tree may include
ordinary arithmetic functions and/or conditional operators. The set
of terminals appearing at the external points typically include the
program's external inputs (such as the independent variables X and
Y) and random constants (such as 3.2 and 0.4). The randomly created
programs typically have different sizes and shapes.
[0041] A main generational loop (FIG. 4) of a run of genetic
programming may consist of a fitness evaluation (i.e., Darwinian
selection) and genetic operations. Each individual program in the
population may be evaluated to determine how fit that individual
program is at solving the problem at hand. Programs may then be
probabilistically selected from the population based on fitness to
participate in the various genetic operations, with re-selection
allowed.
[0042] While a more fit program has a better chance of being
selected, even individuals known to be unfit are allocated some
trials in a mathematically principled way. Thus, genetic
programming is not a purely greedy hill-climbing algorithm. The
individuals in the initial random population and the offspring
produced by each genetic operation are all syntactically valid
executable programs. After many genetic operations, a program may
emerge that solves, or approximately solves, the problem at
hand.
[0043] The system 10 injects the Fitness Function onto all
reachable nodes. The Fitness Function, a user-defined function, may
read either Simple Network Management Protocol (SNMP) object values
or EE Postevents. The result of Fitness Function execution may be a
single fitness metric that is used by the Nucleus for evolutionary
control. Postevents make only those metrics accessible that are
local to the node. A SNMP interface may allow network wide metric
access.
[0044] The Fitness Function, once injected into a node, places
itself in Small-State. The Fitness Function is picked up by the
Nucleus and used to guide the evolution of the system 10.
Chromosomes may accept active packets flowing through the node and
act upon those packets. This is determined by the definition of the
Functional Units. Example actions include delaying packets,
changing packet forwarding, and measuring packet
characteristics.
[0045] Chromosome Strands may be composed of chains of Functional
Units. An individual Functional Unit may be derived from an FU
class and over-ride the function of the Functional Unit. The FU
class ensures that the Functional Unit active packet has the
properties required to chain I/O together in a single Chromosome
Strand. The Functional Unit has well-defined I/O ports through
which other active packets may flow and may execute user-defined
actions in the Functional Unit.
[0046] The goal of the system 10 is to develop in-network
self-composition of protocols and services. The system 10 follows a
close analogy with biological evolutionary techniques such as
Genetic Algorithms. Functional Units, or building blocks of code,
may be injected into the network. In addition, a Fitness Function,
defined by the user, may be injected into the network. The
Functional Units evolve to maximize the Fitness Function.
[0047] The system 10 may include an EAS prediction framework for
enforcing certain minimal requirements on the execution
environment. The EE must provide an information cache, or Small
State, to enable information exchange between active packets. The
EE may also provide an information cache, or Global State, to
enable an EAS prediction framework to communicate with a
predictively managed active application for querying the current
state of the active application. The EE must be able to store and
query both Small State and Global State, if Global State is
implemented. The EE should provide appropriate access control
mechanisms to both Small State and Global State, if Global State is
implemented.
[0048] The EE must provide an interface that enables both the
active ad-hoc network genetic adaptation values and the values of
the actual component being managed to publish their state to an
SNMP. This enables the EAS prediction framework to store the
predicted state in a well-known format and also enables legacy SNMP
tools to query the predicted state using SNMP operations.
Additionally, the system 10 may also update its current state using
SNMP, which a Logical Process will be able to query.
[0049] In a particular implementation of such an interface, a
generic SNMP agent coded as an active application may be injected
into the active nodes. The agent creates a `Global State` on an
active node with a well-known name. The agent reads information
coded in a well known format that has been written to the `Global
State` and publishes it to the SNMP. Any active application that
wishes to advertise its state uses an interface that enables it to
store its information in the well-known `Global State` in the given
format.
[0050] The SNMP agent and the active application may use special
interfaces to implement messaging between them. A Message Packet
may be the basic unit of inter-application communication. Each
message consists of a message type.
[0051] The active application should send a message of the valid
message type to the SNMP agent to perform the required operation.
On receipt of a message, the SNMP agent should attempt to perform
the requested operation. The SNMP agent then responds with an
acknowledgement message in a particular format.
[0052] The status code may have one of the following values: OK:
indicate successful operation; ERR_DUPENTRY: if for a MSG_ADD
operation, an object identifier of given name already exists; and
ERR_NOSUCHID: if for a MSG_UPDATE operation, an object identifier
of given name does not exist. The status message may be any
descriptive string explaining the nature of the failure or should
be "Success" for a successful operation.
[0053] Models injected into the system 10 may allow network state
to be predicted and efficiently propagated throughout the active
network enabling the system 10 to operate simultaneously in real
time as well as project the future state of the system. Network
state information, such as load, capacity, security, mobility,
faults, and other state information with supporting models, is
automatically available for use by the system 10 with current
values and predictive values. In one example, sample load and
processor usage prediction applications have been validated using
an Atropos Toolkit. The toolkit's distributed simulation
infrastructure takes advantage of parallel processing within the
network since computation occurs concurrently at all participating
active nodes. The example network may be queried in real time to
verify the prediction accuracy. Measures, such as rollbacks, are
taken to keep the simulation in line with actual performance.
[0054] In accordance with the present invention, a computer program
product 500 evolutionarily adapts a network (FIG. 5). The computer
program product 500 includes a first instruction 501 for
implementing a genetically programmed adaptation of one of a
plurality of nodes in response to a change of condition of the one
node of the plurality of nodes and a second instruction 502 for
injecting a functional unit into the active packet. The first
instruction 501 is executed by an active packet.
[0055] In accordance with the present invention, a method 600
adapts a network (FIG. 6). The method 600 includes the steps of:
operating 601 a plurality of nodes with active packets;
implementing 602 a genetically programmed adaptation of one of the
plurality of nodes in response to a change of condition of the one
node of the plurality of nodes; executing 603 the operating step by
the active packet; injecting 604 a functional unit into the active
packet; and probabilistically selecting 605 two parental programs
based on fitness.
[0056] In order to provide a context for the various aspects of the
present invention, the following discussion is intended to provide
a brief, general description of a suitable computing environment in
which the various aspects of the present invention may be
implemented. While the invention has been described above in the
general context of computer-executable instructions of a computer
program that runs on a computer, those skilled in the art will
recognize that the invention also may be implemented in combination
with other program modules.
[0057] Generally, program modules include routines, programs,
components, data structures, etc. that perform particular tasks or
implement particular abstract data types. Moreover, those skilled
in the art will appreciate that the inventive methods may be
practiced with other computer system configurations, including
single-processor or multiprocessor computer systems, minicomputers,
mainframe computers, as well as personal computers, hand-held
computing devices, microprocessor-based or programmable consumer
electronics, and the like. The illustrated aspects of the invention
may also be practiced in distributed computing environments where
tasks are performed by remote processing devices that are linked
through a communications argument model. However, some, if not all
aspects of the invention can be practiced on stand-alone computers.
In a distributed computing environment, program modules may be
located in both local and remote memory storage devices.
[0058] An exemplary system for implementing the various aspects of
the invention includes a conventional server computer, including a
processing unit, a system memory, and a system bus that couples
various system components including the system memory to the
processing unit. The processing unit may be any of various
commercially available processors. Dual microprocessors and other
multi-processor architectures also can be used as the processing
unit. The system bus may be any of several types of bus structure
including a memory bus or memory controller, a peripheral bus, and
a local bus using any of a variety of conventional bus
architectures. The system memory includes read only memory (ROM)
and random access memory (RAM). A basic input/output system (BIOS),
containing the basic routines that help to transfer information
between elements within the server computer, such as during
start-up, is stored in ROM.
[0059] The server computer further includes a hard disk drive, a
magnetic disk drive, e.g., to read from or write to a removable
disk, and an optical disk drive, e.g., for reading a CD-ROM disk or
to read from or write to other optical media. The hard disk drive,
magnetic disk drive, and optical disk drive are connected to the
system bus by a hard disk drive interface, a magnetic disk drive
interface, and an optical drive interface, respectively. The drives
and their associated computer-readable media provide nonvolatile
storage of data, data structures, computer-executable instructions,
etc., for the server computer. Although the description of
computer-readable media above refers to a hard disk, a removable
magnetic disk and a CD, it should be appreciated by those skilled
in the art that other types of media which are readable by a
computer, such as magnetic cassettes, flash memory cards, digital
video disks, Bernoulli cartridges, and the like, may also be used
in the exemplary operating environment, and further that any such
media may contain computer-executable instructions for performing
the methods of the present invention.
[0060] A number of program modules may be stored in the drives and
RAM, including an operating system, one or more application
programs, other program modules, and program data. A user may enter
commands and information into the server computer through a
keyboard and a pointing device, such as a mouse. Other input
devices (not shown) may include a microphone, a joystick, a game
pad, a satellite dish, a scanner, or the like. These and other
input devices are often connected to the processing unit through a
serial port interface that is coupled to the system bus, but may be
connected by other interfaces, such as a parallel port, a game port
or a universal serial bus (USB). A monitor or other type of display
device is also connected to the system bus via an interface, such
as a video adapter. In addition to the monitor, computers typically
include other peripheral output devices (not shown), such as
speaker and printers.
[0061] The server computer may operate in a networked environment
using logical connections to one or more remote computers, such as
a remote client computer. The remote computer may be a workstation,
a server computer, a router, a peer device or other common network
node, and typically includes many or all of the elements described
relative to the server computer. The logical connections include a
local area network (LAN) and a wide area network (WAN). Such
networking environments are commonplace in offices, enterprise-wide
computer networks, intranets and the internet.
[0062] When used in a LAN networking environment, the server
computer is connected to the local network through a network
interface or adapter. When used in a WAN networking environment,
the server computer typically includes a modem, or is connected to
a communications server on the LAN, or has other means for
establishing communications over the wide area network, such as the
internet. The modem, which may be internal or external, is
connected to the system bus via the serial port interface. In a
networked environment, program modules depicted relative to the
server computer, or portions thereof, may be stored in the remote
memory storage device. It will be appreciated that the network
connections shown are exemplary and other means of establishing a
communications link between the computers may be used.
[0063] In accordance with the practices of persons skilled in the
art of computer programming, the present invention has been
described with reference to acts and symbolic representations of
operations that are performed by a computer, such as the server
computer, unless otherwise indicated. Such acts and operations are
sometimes referred to as being computer-executed. It will be
appreciated that the acts and symbolically represented operations
include the manipulation by the processing unit of electrical
signals representing data bits which causes a resulting
transformation or reduction of the electrical signal
representation, and the maintenance of data bits at memory
locations in the memory system (including the system memory, hard
drive, floppy disks, and CD-ROM) to thereby reconfigure or
otherwise alter the computer system's operation, as well as other
processing of signals. The memory locations where such data bits
are maintained are physical locations that have particular
electrical, magnetic, or optical properties corresponding to the
data bits.
[0064] It will be understood that the above description of the
present invention is susceptible to various modifications, changes
and adaptations, and the same are intended to be comprehended
within the meaning and range of equivalents of the appended claims.
The presently disclosed embodiments are considered in all respects
to be illustrative, and not restrictive. The scope of the invention
is indicated by the appended claims, rather than the foregoing
description, and all changes that come within the meaning and range
of equivalence thereof are intended to be embraced therein.
* * * * *