Date: Tue, 29 Apr 1997 10:03:07 +0300 (EEST) From: Narvi <narvi@haldjas.folklore.ee> To: Michael Hancock <michaelh@cet.co.jp> Cc: FreeBSD-SMP@FreeBSD.org Subject: Re: SMP Message-ID: <Pine.BSF.3.95.970429090508.21427D-100000@haldjas.folklore.ee> In-Reply-To: <Pine.SV4.3.95.970429115554.5813A-100000@parkplace.cet.co.jp>
next in thread | previous in thread | raw e-mail | index | archive | help
On Tue, 29 Apr 1997, Michael Hancock wrote: > On Mon, 28 Apr 1997, Narvi wrote: > > > Couldn't we divide the kernel (and anything "provided" by it into) two (at > > least initially): > > > > 1) client - accepts syscalls, translates, etc. and passes the result on to > > 2 > > 2) kernel server - does all the low level stuff > > We want SMP. I take you didn't read it all carefully enough (especially the part you snipped). It would be SMP. Initially there would be two locks (= at most two processors in the kernel). In the progress of further threading the kernel the number would grow. As already said, both of the "layers" of the kernel would be threaded and there could be n (def. n=number of processors in the system) processors in the kernel, distributed between the two in whatever manner is needed on the moment. The "upper layer" of kernel also would not care in most cases what it was that the lower did. Lets take something simple, like fork: 1) process calls fork 2) we wait until we can get the syscall_entry lock (the process just sleeps). 3) we are in the syscall now: a) check whetever know syscall - return error if not b) call make_syscall_worker_thread(syscall_nr, params) c) release lock, sleep until someone wants to make another syscall 4) the syscall_worker thread (the current one, at any time there may be several) does what is needed (acquires locks, calls the "lower layer") and then returns, unblocking the process. Obviously eventually there could even be more than one syscall thread creating syscall_worker threads. I don't see how any part of it is not SMP. Sander > > Mike Hancock > >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.3.95.970429090508.21427D-100000>