Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 27 Nov 1999 23:39:08 -0500
From:      "Daniel M. Eischen" <eischen@vigrid.com>
To:        Julian Elischer <julian@whistle.com>
Cc:        arch@freebsd.org
Subject:   Re: Threads stuff
Message-ID:  <3840B1EC.4614AAF0@vigrid.com>
References:  <Pine.BSF.4.10.9911271542410.544-100000@current1.whistle.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Julian Elischer wrote:
> 
> > I've put a diagram up on my web page that tries to incorporate
> > some of these ideas.  I haven't included the queue-ing, because
> > that seems basically agreed upon.
> [...]
> > I'm just going from what Daniel said about libc_r having
> > to get the time of day and set the interval timer in
> > order to do a context switch, which can probably be
> > done in one system call.  Either the context can be
> > saved in userland, in which case the scheduler returns
> > normally, and does a longjmp or the equivalent,
> > or the thread could be resumed as part of the
> > system call.
> >
> 
> I don't know what Danthiks but this has alot more involvement or the
> kernel and boundary crossing than I was envisionning.

I think it's basically right.  If you saw the diagram at different
stages, it would be easier to see.

  o A thread blocks in kernel, the KSE is saved, a new KSE is allocated,
    and an upcall is made to the scheduler with a unique KSE ID provided
    to identify the now blocked thread.

  o Scheduler receives notification of a thread blocking, tags the
    currently running thread with the KSE ID, chooses a new thread
    to run, switches to the new thread, and makes a system call to
    schedule a signal/upcall when the new threads quantum expires.

  o A KSE is woken up in the kernel.

  o Scheduler receives notification of a thread unblocking (finishing?)
    in the kernel.

  o At the request of the scheduler, the kernel schedules a timeout for
    the new quantum and resumes the now unblocked thread.

> I will try make  aset of diagrams that outline the state of various
> objects related to a thread at various stages..

How about an animated GIF or MOV? ;-)

Dan Eischen
eischen@vigrid.com




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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3840B1EC.4614AAF0>