From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=0.6 required=5.0 tests=BAYES_05,INVALID_DATE, MSGID_SHORT autolearn=no autolearn_force=no version=3.4.4 Path: utzoo!mnetor!uunet!lll-winken!lll-lcc!ames!mailrus!tut.cis.ohio-state.edu!ut-sally!utah-cs!utah-gr!uplherc!sp7040!obie!wsccs!wes From: wes@wsccs.UUCP (Barnacle Wes) Newsgroups: comp.lang.ada Subject: Re: INFO-ADA Digest V88 #47 Message-ID: <227@wsccs.UUCP> Date: 1 Mar 88 02:25:14 GMT References: <8802202149.AA07429@ajpo.sei.cmu.edu> Summary: What about 'background' tasks? List-Id: In article <8802202149.AA07429@ajpo.sei.cmu.edu>, PETCHER%SVDSD@eg.ti.COM writes: > Mike Linnig asks: > > My question is... are we losing something here? Is there > > a value to having multiple priorities even if we don't > > have preemptive scheduling? > > My answer is an emphatic YES. > [...] > This means, among other things, a task should not execute > indefinitely, and in fact should be designed to complete its intended > function within a predictable period of time. This is consistent with most > actual embedded applications, where a processor has certain inputs producing > data at some predictable rate, and each task has some part in processing this > data and producing the aggregate output of the system at some required rate. This is a workable, but simplistic viewpoint. The C3 systems I have worked on tended to be rather large and complicated, both in their scope and implementation. These systems typically had several background tasks to execute, and in some cases, several priorities of background tasks. To accomplish this without pre-emptive scheduling would be very difficult, perhaps impossible. At any rate, *I* wouldn't want to do it :-). Most of these systems achieved a simplicity at the low level by using features that the system gave them. For instance, on a system that has it's mass storage on a rotating drum device (OK, stop that snickering NOW!) the drum device driver is passed the address of a routine to execute when the I/O operation has completed. The driver does this by scheduling the routine in the I/O call at the time when the I/O operation will be completed. For a variety of reasons, once this routine is scheduled, it needs to execute ASAP according to the priority scheme used in the system. This would be difficult to do without using pre-emption. -- /\ - " Against Stupidity, - {backbones}! /\/\ . /\ - The Gods Themselves - utah-cs!utah-gr! / \/ \/\/ \ - Contend in Vain." - uplherc!sp7040! / U i n T e c h \ - Schiller - obie!wes