top | previous | next

Mobile Agents sound like [fill in technology here]

  • Mobility has a long history in computing.

  • Nice history of mobility buried in Uwe Georg Wilhelm's thesis: Section 2.3.1 is very good, and brief too!

    An excerpt (emphasis added, references removed):

    "Code mobility is not a new concept. It has its origins in the 1960s where the Job Control Language (JCL) was used in the optimization of networked computers, enabling mini-computers to submit batch jobs to mainframes using a remote entry system (RES). Another direct approach to code mobility is the rsh (remote shell) command that was introduced by 4.2BSD UNIX in 1984. It allows a user to send a shell script to a remote machine where it will be executed with access to all the local resources of the remote machine, such as peripherals (e.g., a printer) or data on the local disk of the remote machine.

    • What about RPC?

      Client can call the basic services of the provider by sending message requesting services. Message passing.

    • What about SQL?

      Client can send query (request) to database, where it is run, and results are returned. The code is not compiled.

    • Postscript / postscript printer ... html / browser

    • Process migration?

      Moving a running system level process from one machine to another. Why?

      "This was mostly done with the goal to improve system efficiency by providing load balancing capabilities, but also to allow a dynamic reconfiguration of the system so that a process can be moved to another machine if its current host has some scheduled down-time."

    • Object migration

      "A more fine-grained approach to similar problems [as process migration] is studied in the context of object migration, which enables the mobility of language level objects that can be relocated from one address space to another."

    • Java applets?

    • The perl hook

      "A major obstacle for truly mobile code that can potentially be executed everywhere, is the heterogeneity of the possible execution environments (hardware, operating system, and installed software). This has led to the development of scripting languages that were conceived to overcome these problems, such as Perl, Tcl, or Python. These scripting languages are executed in the context of a runtime system that interprets the commands of the scripting language. Since the runtime system itself is software, it can be ported to any suitable hardware platform, which can then execute mobile code of the corresponding scripting language, thus providing a homogeneous execution environment for the programs coded in the scripting language. All of these scripting languages have to some extent been augmented with mobile code facilities (agentPerl [Pur98], agentTcl [Gra95], Rover [Rus98], Ara [PS97])."

  • Very good collection papers in Mobility: Processes, Computers, and Agents (1999), Dejan S. Milojicic, et al (Eds.) Explains the Linkage between process migration, mobile computing, and mobile agents. Amazon link

    This book divides mobility into:

    • Code
    • Code + Data
    • Code + Data + State
    • Code + Data + State + Authority (agent)