Promptness, queueing, diskless etc. etc.
Wed, 30 Nov 94 10:30:21 -0500
Charlie aluded to the concept of "prompt", a concept which deserves more
discussion. Prompt is a bit like obscenity, I can't define it, but I
know it when I see it.
Actually, that's why KeyKOS doesn't include any obscenities... :-)
Here's a try. Norm once gave me a better definition than this:
Prompt means that the service will return to the caller without
servicing anyone else first, and that (transitively) all of the
subsidiary services on which primary service depends are likewise
prompt. The implication is that the service has bounded delay.
Certain activities are inherently prompt. e.g. Accessing a page. (The
kernel will bring it in if it is on disk. If it is invalid, the domain
keeper will be called (or a non-zero return code will be returned to
the key invocation).); Calling many kernel implemented keys.
Actually, you've hit on why I think promptness is not an adequate
notion by itself. If the page is not in core, the service will page
fault, leading some other service to be scheduled, making discussions
about the delay a bit nebulous.
If you're concerned about real time issues, several stronger contracts
may be needed, depending on your application:
nonpreempt -- service guarantees that it is prompt, and that it
will not do any operation that would make it yield to another
task before it's quanta runs out (except in the sense that it may
call another nonpreempt service that returns to it, which is not
a yield in the sense that I am concerned with.
bounded delay -- service is prompt, and invokes only a bounded
number of events that might cause it to yield, said events having
a bounded worst case delay.
Note that the 'nonpreempt' and 'bounded delay' services both require a
mechanism for pinning pages.