Re: Threads

[ Available lists | Index of freebsd-arch | Month of Nov 1999 | Week of 29 Nov 1999 | Raw email | View thread | Wrap long lines | Reply | Tag ]
From
Matthew Dillon <dillon@apollo.backplane.com>
Date
29 Nov 1999 08:22:32
Subject
Re: Threads
Message-ID
199911291621.IAA06301@apollo.backplane.com

Replies

[ Hide this part ]
 
:> > blocked in the kernel, whereas with scheduler activations (SA), that
:> > doesn't happen under normal circumstances.
:>
:> No, under SA KSE's block. and another KSE is generated to act as a
:> replacement. it is used to run the activation that is passed to the
:> scheduler, and this the next thread the process runs.
:
:That's not how I read the paper. I think we all might be on the 'same
:page', but I think we're all using different terminology.
:
:How's about we define what a KSE is, a SA is, and come up with some
:other term for a userland 'thread'?
:
:It seems that Julian is using the same term for a userland thread and a
:context that can go into the userland as a KSE, but I'm not sure.
:
:Assuming for a moment that this is the case, then is a SA a 'kernel

The terminology I have been using, which I thought was the same as
Julian's but may not be, is:

Thread

Two entities. A kernel structure 'Thread' and also a similarly
named but independant user structure within the UTS.

KSE

A kernel scheduleable entity. I was using this to mean the
contextual information (such as a kernel stack) required for
the kernel to be able to run a thread. Not required for
runnability, only required to actually run the thread and
also held over of the thread blocks while in the kernel.

Process

Our good old process.

I think I actually misspoke earlier. Runnability in the kernel scheduler
is governed by 'Thread', not 'KSE' with my idea. Only currently running
contexts require a KSE. i.e. you might have 10 runnable Threads linked
into the kernel's scheduler but if you have a two-cpu system, only 2 of
those 10 will actually be running at any given moment and require KSE's.

With my system we change the kernel scheduling entity from a 'Process'
to a 'Thread' and a Thread can then optionally (dynamically) be assigned
a KSE as required to actually run. The KSE is a kernel abstraction and
essentially *invisible* to user mode. The Thread is a kernel abstraction
that is visible to user mode.

With Julian's idea the kernel scheduling entity remains a 'Process',
KSE's are special cases within that process, and Threads appear to
be entirely userland entities.

-Matt





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



Elapsed time: 0.291 seconds