| OCR Text |
Show 80 Dynamic balancing does not have these problems, since it cannot distinguish between tasks generated for recovery and original tasks. All tasks are treated equally during load-balancing activities. The parent-child linking information is dynamically produced. Hence, there is no need to update these linkages when the task is reassigned. 3.3.4 Orphan tasks Rollback recovery inevitably leaves a few orphan tasks after some recovery has taken place, e.g., task 04 in Figure 22 becomes an orphan when processor B fails. The problem of orphan tasks is that a task does not know whether it is an orphan until considerable amount of system resources may have already been spent. The rollback recovery algorithm mandates orphan tasks to be aborted. Returns from orphan tasks are theoretically harmless since they are forwarded to a faulty processor and no side-effect can be induced. Nevertheless, tasks occupy memory and consume processing power. System performance may be penalized. The partial results produced by orphan tasks are in fact correct answers of their associated functions. Failure of a node does not contaminate these incomplete answers; it just breaks the linkage among them. These partial results .are usable if the regenerated parent task knows where to retrieve them, or the orphan tasks know the new address which to forward their answers. The desire to salvage partial results motivates the design of the following recovery scheme. 3.4 Splice recovery Applicative systems facilitate evaluation of a functional program by dynamically unfolding the underlying structure of the algorithm and disseminating parallel tasks to many processing nodes. At any instant, task distribution in a system represents a snapshot of the program structure. Generation of a task |