Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 15 Jan 1999 23:55:35 +0000 (GMT)
From:      Terry Lambert <tlambert@primenet.com>
To:        dillon@apollo.backplane.com (Matthew Dillon)
Cc:        hackers@FreeBSD.ORG
Subject:   Re: Path to SMP
Message-ID:  <199901152355.QAA21837@usr04.primenet.com>
In-Reply-To: <199901150456.UAA29086@apollo.backplane.com> from "Matthew Dillon" at Jan 14, 99 08:56:53 pm

next in thread | previous in thread | raw e-mail | index | archive | help
>     Is anyone currently working on the next big step in the SMP
>     puzzle?  That is, implementing kernel threads with preemptive
>     scheduling?
> 
>     The idea being that one then has the ability to run 
>     preemptable kernel threads in parallel on SMP-capable
>     boxes because the code must assume preemption in the
>     same manner on both uni and multi cpu systems.
> 
>     Once implemented, we would begin to migrate functionality
>     from non-preemptive threads to preemptive threads from
>     the outside-in, and parallel SMP operation in supervisor
>     mode migrates along with it.  

Jason Evans has started work on an async call based mechanism.

The functional decomposition is into flags for each system call
to tell the trap code whether the call will:

(A)	Never block
(B)	Sometimes block
(C)	Always block

The kernel work moves the kernel stack into a call context structure,
which includes a pointer to the VM for the process making the call.

Effectively, this make all entries into the kernel seperately
schedulable, and allows a process to enter the kernel.

The use of the type-of-call flags is an optimization, allowing the
use of a "fake" (static, user space) call context structure pointer
for calls in category (A), or (B), in the case that they run to
completion instead of blocking.

The mechanism necessitates the addition of a multiplexed system call
that accepts the commands ACG_WAIT (Async Call Gate Wait) and
ACG_CANCEL.  This is similar to the SVID III aiowait(RT), aiocancel(RT)
mechanism, and is also similar to the "aio" mechanisms in both
UnixWare and Solaris, semantically.  It's also like the POSIX
stuff, only with the ability to do all calls, not just some of them.

The mechanism should provide an SMP scalable basis for cooperative
user and kernel space thread scheduling which fully obeys POSIX
semantics.

This sidesteps or resolves many of the issues for decomposition,
as pointed out in:

	Scheduling and Load Balancing in Parallel and Distributed
	Systems

	Behrooz A. Shirazi, Ali R Hurson, and Krisna M. Kavi
	IEEE Computer Society Press
	ISBN 0-8186-6587-4

					Terry Lambert
					terry@lambert.org
---
Any opinions in this posting are my own and not those of my present
or previous employers.


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199901152355.QAA21837>