Go up to 5 Implementation Go forward to 5.2 Connection Servers |
When the Maple kernel connected to the user interface calls
dist[initialize]
, it forks an dist.Scheduler process on the
local machine, typically by a call of
java dist.Scheduler local /tmp/maple.in.pid /tmp/maple.out.pid
where the file paths denoted by the command arguments refer to some files or
named pipes (an argument '-
' would denote the standard input
respectively standard output stream of the process).
The scheduler process thus runs in mode "local" and reads the configuration file dist.systems in which all system-specific information about each class of machine is stored. The scheduler receives from the Maple kernel the sequence of machines to be connected to the session. It spawns a process on the corresponding machine respectively contacts a server on that machine for spawning the process (see the next subsection). Subsequently the local scheduler waits for a connection request of the remote instance.
The remote process is an instance of dist.Scheduler running in mode "remote", typically created by a call of
java dist.Scheduler remote machine port
where machine is the domain name of the host on which the local scheduler is waiting on machine port port for a connection request of the remote instance.
Furthermore, during session startup, each remote process is informed about each other. If a remote process needs to communicate with another such process, a "peer" connection between remote processes is dynamically established.
After a connection between local and remote scheduler has been established, the local instance forwards to the remote instance the command string that the remote instance uses to fork the external application process, typically
maple -q -v
It also sends the string that is used to initialize the process, typically
`dist/isclient` := true: read `path/dist.maple`:
This invokes a server loop on the Maple kernel that is ready to receive task descriptions from the scheduler process, execute the denoted tasks, and return the results of these tasks. In the context of Maple, tasks are Maple expressions to be evaluated; they can be transmitted in any external format that Maple can convert to its internal form (currently either readable Maple syntax or Maple's .m file format may be used).