From: cis.ohio-state.edu!news.sei.cmu.edu!jbg@uunet.uu.net (John Goodenough)
Subject: Re: Ada delay
Date: 21 Sep 92 13:43:28 GMT [thread overview]
Message-ID: <1992Sep21.134328.27816@sei.cmu.edu> (raw)
In article <1992Sep19.175645.10076@intrepid.com>, gary@intrepid.com (Gary Funck
) writes:
|> - The Ada language specifies that a task delay must be *no less than*
|> than the requested time delay. An implementation can meet the
|> letter of law, by processing delay requests, only at language
|> defined preemption points. Most "modern" Ada runtimes support
|> task preemption at arbitrary ppints in the execution of a task;
|> some older ones only checked when an Ada program performed a
|> tasking operation, leading to tryly unbounded delays.
The "letter of the law" reads slightly differently these days. AI-00032,
approved in March 1987, says:
If an implementation supports more than one priority level, or
interrupts, then it must also support a preemptive scheduling policy.
In particular, the AI goes on to make clear that if a task is executing when a
task with a higher priority becomes executable because a delay has expired,
execution of the lower priority task must cease immediately so execution of
the higher priority task can continue. The AI references 9.8(4) and says:
Expiration of a delay means a task is eligible for execution. If an
implementation determines that a delay has expired for a high priority
task, then that task must be scheduled for execution. If the physical
processor and other processing resources needed to execute the higher
priority task are currently being used by a task of lower priority,
execution of the lower priority task must be suspended.
If preemptive scheduling is not feasible in a particular implementation,
then the implementation should not provide multiple priority levels (see
AI-00045) or support interrupts.
(Note: the phrase "could sensibly be executed" [in 9.8(4)] refers to
situations in which the high priority task can actually make use of the
processor and other resources being used by the lower priority task. In
some distributed processing situations, a high priority task may not be
able to execute on some processors. Preemption is only required for
processing resources the high priority task can use.)
John B. Goodenough Goodenough@sei.cmu.edu
Software Engineering Institute 412-268-6391
next reply other threads:[~1992-09-21 13:43 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
1992-09-21 13:43 John Goodenough [this message]
-- strict thread matches above, loose matches on Subject: below --
1992-09-21 2:40 Ada delay H.Shrikumar{shri@ncst.in}
1992-09-19 17:56 Gary Funck
1992-09-18 9:05 Guangxing Li
1992-09-18 1:11 mcsun!uknet!yorkohm!minster!ken
1992-09-17 17:45 Bob Kitzberger
1992-09-17 15:04 Jorge Luis Diaz-Herrera
1992-09-17 14:26 cis.ohio-state.edu!news.sei.cmu.edu!firth
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox