From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.5-pre1 (2020-06-20) on ip-172-31-74-118.ec2.internal X-Spam-Level: X-Spam-Status: No, score=-1.9 required=3.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.5-pre1 Date: 3 Oct 91 01:06:04 GMT From: dog.ee.lbl.gov!hellgate.utah.edu!caen!uakari.primate.wisc.edu!samsung!umi ch!umeecs!dip.eecs.umich.edu!warack@ucbvax.Berkeley.EDU (Christopher Warack) Subject: When do Ada compilers make scheduling decisions... Message-ID: <1991Oct3.010604.14825@zip.eecs.umich.edu> List-Id: General question... When do Ada compilers make scheduling decisions? Or, when are context switches possible. For sake of discussion, consider a single processor with multiple tasks. The LRM discusses blocking a task during rendezvous's and completion of task activation before beginning the first statement following the declarative block or statement following task creation. What other conditions are there? Are time slice schedulers used? When priorities are used, the LRM requires a higher priority task to run when both it and a lower priority task are waiting to execute. What if a higher priority task becomes "available" while the lower priority task is running (e.g., expiration of a delay statement). What prevents a non-blocking (no-rendezvous, no shared vars, no I/O) task from running forever. (I suppose this may be pathological, since this implies that the task does not communicate so cannot do anything useful.) Related, will a task that encounters a "non-termination" bug "hang" the whole system? How are shared variables handled? I realize that this may be compiler dependant. I'm interested in how various implementations differ, however. -- Chris -- Christopher A. Warack warack@eecs.umich.edu Graduate Dept, EECS (313) 665-4789 University of Michigan -- Christopher A. Warack warack@eecs.umich.edu Graduate Dept, EECS (313) 665-4789 University of Michigan