390 likes | 405 Views
Explore the dimensions of mobility in mobile agent programming, from moving between servers and contexts to properties of agent execution environments like network addresses and persistence. Delve into challenges like intermittent real-time and volatile persistence to better understand state management and goal-driven execution.
E N D
Dimensions of mobility • Moving between different execution servers (processes, hosts) • Moving in time • Moving with the user (execution server) • Moving between contexts
Properties of agent execution environments • Static network (fixed host network address) • Roaming network (dyn. host netw. address) • Reliable real-time (stationary server computer) • Intermittent real-time (laptop, iPhone) • True persistence (Hard-disc, NV-RAM) • Volatile persistence (battery RAM)
Properties of agent execution environments Dynamic network address Intermittent realtime Volatile persistence Static network address Reliable realtime True persistence Dynamic network address Intermittent realtime True persistence
Properties of agent execution environments Dynamic Cell phones Early wearables Network address Laptops Intermittent Real-time Servers Static Persistence Volatile
Dynamic network address • Difficult to find a particular host • Needs registration at a well-known name • LAN: local discovery techniques (eg Jini) • WAN: remote interaction (eg SIP) • Network Address Translation (NAT) imposes similar problem • IPv4 → IPv6 : needed but costly
Intermittent real-time • If the agent is suspended externally, eg by power management, it may not “see” the suspension. • Can the agent control power mgmt when it needs to? • Small devices (mobile phones) may be suspended without warning.
Volatile persistence • How much of the present state must be saved? • To where can it be saved? • How to (re)establish state after reanimation? • How can the saved state be found? • Time (how long was the agent asleep?)
Z z Planned discontinuity (1) 2. Set timer 3. Sleep 1. Save state 4. Wake up 5. Restore state
Planned discontinuity (2) 3. External event 2. Terminate 1. Save state 4. Restart 5. Restore state
Planned discontinuity (3) 1. Negotiate hosting 3. Terminate 2. Save state 6. Restore state 5. Restart 4. Transfer identity and state
Mobile code (1) Initial execution environment Next execution environment 1. Locate exec. env. 2. Negotiate hosting 3. Transfer identity and state 5. Continue 4. Terminate
Mobile code (2) Initial execution environment Next execution environment 1. Locate exec. env. 2. Negotiate hosting 3. Transfer identity and state 6. Acknowledge 5. Continue 7. Terminate
What do we mean by “state”? • Memory and cpu configuration of process • Values of active variables (including call stack) and the execution point • A classifiable subset of the true state: switch (myState) { case 0: /* state 0 */ break; case 1: /* state 1 */ break; // etc... }
State (cont’d) • For the programmer, state and code are often the same concept • Mobile code (e.g. Java) may not be able to transfer the execution point • This breaks the code-state relationship
y==1 State (cont’d) START y==2 START y = y*2 Migrate? Yes y = y*2 No z = y Migrate? z==2 No Variables evolve while code point is reset z = y z==4
Goal-driven execution • The task can be expressed as a sequence of discrete steps • The accomplishment of each step can be tested • What to do next is computable
Goal-driven execution (cont’d) Task: Deliver a message (to a user) The message is executable and must run on the recipient’s current host.
Goal-driven execution while (true) do if (the current host is the user host) then execute the message exit else locate the user host move to user host endif done
Goal-driven execution • Gets complicated quite fast, e.g. remember failures, responses, a dialogue... • State must be ”knitted” into the task resolution structure • Goal stack approach
Goal stack interpreter • Useful for intermittent real-time (wearable devices, power management) • The goal stack is maintained as a data structure • The goal on top of the stack is either replaced by a sequence of subgoals, or executed as an idempotent unit until it succeeds
Goal stack interpreter Execute goal-code Goal expansion Establish host of Ralph Y Fail? Move to Ralph’s host Execute message code Deliver message to Ralph N Pop stack N Empty stack? Move commanded by external events has small impact on top-most goal. Y Establish host of Ralph Stop Move to Ralph’s host Execute message code
Goal stack interpreter Execute goal-code Pop Establish host of Ralph Y Fail? Move to Ralph’s host Move to Ralph’s host Execute message code Execute message code N Pop stack N Empty stack? Current goal Y Current goal Stop
Layers of abstraction Task Transport Discovery Communication
Layers of abstraction Task Code for identifying and approaching the goal. Transport Discovery Communication
Layers of abstraction Code for moving the agent between places of execution. Task Code for identifying and approaching the goal. Transport Discovery Communication
Layers of abstraction Code for moving the agent between places of execution. Task Code for identifying and approaching the goal. Transport Discovery Methods for finding (the addresses) to resources. Communication
Layers of abstraction Code for moving the agent between places of execution. Task Code for identifying and approaching the goal. Transport Discovery Methods for finding (the addresses) to resources. Sending the bits of the agent to another place. Communication
Agent enabling middleware • Discovery mechanisms (execution hosts, other agents, negotiation partners ...) • Addressing namespaces (IP, URLs, SIP, RMI) • Communication means (netw. stack) • Protocol (language and semantics)
Game of Tag for agents • Discover execution environments • Query properties of the exec. env. • Locate other agents • Negotiate for status (being ‘it’ or not) • Transaction (reliably transferring ‘it’ between players) • Multiple roles and tasks dep. on being ‘it’.
TAG player outline Acquire state of game Decide what to do Execute choice
TAG player outline Locate all Bailiffs and players YES Am I it? NO NO YES NO YES Is there a player here? Is the ’it’ player here? Tag a player Move to a Bailiff with players Move or wait according to strategy Move to another Bailiff
TAG player outline Locate all Bailiffs and players YES Am I it? NO NO YES NO YES Is there a player here? Is the ’it’ player here? Tag a player Move to a Bailiff with players Move or wait according to strategy Move to another Bailiff State information must be updated
TAG player outline Locate all Bailiffs and players YES Am I it? NO NO YES NO YES Is there a player here? Is the ’it’ player here? Tag a player Move to a Bailiff with players Move or wait according to strategy Move to another Bailiff Seek to be lonely Seek company Act randomly
TAG player outline Seek to be lonely Seek company Act randomly
TAG player outline Seek to be lonely Seek company Act randomly
TAG player outline Seek to be lonely Seek company Act randomly
TAG player outline • The lonely strategy • increases the chance that the it player goes to another Bailiff • makes the player faster • needs as many Bailiffs as there are players, but no more • with fewer Bailiffs it approaches the company strategy • The company strategy • increases the chance that the it player tags another player • needs fewer Bailiffs • makes the player slower