comp.lang.ada
 help / color / mirror / Atom feed
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

             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