1 03/31/83  Absentee facility
  2 
  3 
  4 A facility for requesting absentee processes is available to users.
  5 A user can request that a process be created that executes commands
  6 from a segment and places its output into a segment.
  7 
  8 
  9 To request an absentee computation, one first constructs an absentee
 10 control segment that is similar in syntax to an exec_com segment.  The
 11 absentee process (when it is created for the user) reads from this
 12 control segment.  The suffix of the control segment must be ".absin".
 13 Then the command enter_abs_request (ear) requests that an absentee
 14 process be created on behalf of the user.  The output of this absentee
 15 process goes into an absentee output segment.  The name of this output
 16 segment can be specified in the ear command.  If the name is not
 17 specified, then the pathname of the control segment is used, except
 18 that its suffix is .absout.  The user can delay the creation of the
 19 absentee process until after a specified time by means of the -time
 20 control argument to the ear command.  If this option is not selected,
 21 at an arbitrary time in the future an absentee process is created for
 22 the requestor.  Type "help enter_abs_request" or "help ear" for
 23 further discussion of this command.
 24 
 25 
 26 The resulting process is identical to an interactive process except
 27 that:
 28 1) read operations from user_input are done from the absentee
 29    input segment.
 30 2) write operations to user_output are directed to the absentee
 31    output segment.
 32 3) special condition handlers are established for record_quota_overflow
 33    and cput.
 34 4) any error intercepted by the standard unclaimed signal handler,
 35    except for command_error and command_question, logs out the
 36    absentee process.
 37 
 38 
 39 Two other commands are installed as part of the absentee facility--
 40 1) list_abs_requests (lar)--a command that gives the user information
 41    on the requests for absentee processes that the user has made.
 42    Type "help list_abs_requests" or "help lar" for more information.
 43 2) cancel_abs_request (car)--a command that can be used to delete a
 44    request for an absentee process.  For further details, type "help
 45    cancel_abs_request" or "help car".
 46 
 47 
 48 Examples:
 49 Suppose that a user wants to request an absentee computation to
 50 perform an offline compilation.  The user creates a control segment
 51 called absentee_pl1.absin containing:
 52 
 53      cwd current
 54      pl1 x -table -source -symbols
 55      dp -dl x.list
 56      logout
 57 
 58 
 59 The command line--
 60 
 61      enter_abs_request absentee_pl1.absin
 62 
 63 causes an absentee process to be created (some time in the future)
 64 that:
 65 1) sets the working directory to a directory named current
 66    inferior to the user's default working directory.
 67 2) compiles a pl1 program named x.pl1 with three control arguments
 68 3) dprints one copy of the list segment.
 69 4) logs out.
 70 
 71 The output of these tasks appears in the same directory as
 72 absentee_pl1.absin in a segment called absentee_pl1.absout.
 73 
 74 
 75 Notes:
 76 1)  The enter_abs_request command checks for the existence of the
 77     absentee control segment and refuses the request if it is not
 78     present.
 79 2)  An absentee process can be requested only for the Person_id and
 80     Project_id of the user submitting the request.
 81 3)  The facility is designed so that more than one absentee process
 82     can run at one time. The user should take care, when submitting
 83     several requests that use the same control segment, that the output
 84     of each request is directed to a different output segment (see
 85     enter_abs_request -output_file).
 86 4)  There can be both an interactive and an absentee process for the
 87     same user at the same time.
 88 5)  The who command denotes absentee users by placing an asterisk
 89     directly after person.project, for example "Green.Multics*".
 90 
 91 
 92 6)  The cancel_abs_request command can cancel a request for an absentee
 93     process that is already logged in.
 94 7)  The user can ask operations to bump or to cancel an absentee
 95     process.  The difference is as follows.  Bumping destroys the
 96     absentee process but allows the computation to begin again.
 97     Cancelling an absentee process prevents it from ever being
 98     restarted.  This distinction is relevant only if the absentee
 99     computation was declared to be restartable via the -restart
100     (-rt) control argument of the ear command.  The user who
101     contacts operations to destroy an absentee process should be sure
102     to specify which function is wanted.
103 8)  The new_proc command is an undefined command in an absentee
104     process.  It results in the termination of the absentee process.
105 
106 
107 9)  For an absentee process to end properly, logout should be the last
108     command encountered in the absentee control segment. If this
109     condition is not met, an error message (indicating that the input
110     is exhausted) is printed.
111 10) The absentee control segment should not be edited or its bit count
112     changed during the course of the absentee process. This action
113     causes unpredictable results.
114 11) Since the syntax of the absentee control segment is the same as an
115     exec_com segment, the user should be aware of a few deviations.
116     Certain exec_com requests are ignored in an absentee environment.
117     Currently these are:
118        1) &attach
119        2) &detach
120        3) &command_line
121        4) &ready
122 
123 
124     The reasons for these differences are--
125        1 & 2) Input is already attached to the absentee input segment.
126        3) In an absentee process, command lines cannot be distinguished
127           from input lines.
128        4) Unlike exec_com, control of the ready message can be
129           achieved only by the ready_on and ready_off commands.  All
130           other control requests work normally.
131 12) The absentee facility provides a number of priority queues.
132     The absentee commands (ear, lar, car) have a -queue control
133     argument that allows the user to specify the particular queue
134     desired.  There are four queues.  Site administrators can control
135     the default queue used to submit requests when -queue isn't given
136     to ear, pl1_abs, etc.; the cost of using each queue; scheduling
137     parameters for absentee processes in each queue; and the lowest
138     priority queue serviced on each shift.
139 
140 
141 13) The answering service enforces a limit stop (defined by the
142     installation) on the cpu time that can be used by an absentee
143     process.  A user is able to specify a per-job time limit less than
144     or equal to this maximum.  Specification of a time limit causes a
145     cpu timer to be established in the absentee process. Resetting all
146     cpu timers makes the limit ineffective.
147 14) A user cannot convert his interactive process to an absentee
148     process, nor his absentee process to an interactive one.
149 15) If a record quota overflow occurs during the execution of an
150     absentee process, in some cases the end of the absentee output
151     segment can be overwritten with a short message.
152 
153 
154 16) In an absentee process, cu_$set_cl_intermediary is invoked to set
155     the procedure called by the standard unclaimed signal handler after
156     outputting diagnostics.  Thus, after getting a signalled error
157     (except command_error or command_question), the standard
158     unclaimed signal handler passes control to a procedure equivalent
159     to logout.
160 17) An argument is passed to start_up.ec to indicate which type of
161     process is being created. Type "help start_up.ec" for further
162     details.
163 
164 
165 18) A resetread on user_input results in the termination of the
166     absentee process. Procedures currently performing a resetread when
167     handling errors include the following:
168        basic
169        debug
170        edm
171        qedx