[comp.os.mach] How is mutex_* implemented, and what about ISIS ?

tage@staff.cs.uit.no (Tage Stabell-Kuloe) (01/25/91)

0) While I wait for the sources - how is mutex_lock and mutex_unlock 
	implemented in c-threads ?
1) To what extent does ISIS use the mechanisms provides by MACH ?


-- 
////      Tage Stabell-Kuloe            |e-mail   : tage@staff.cs.uit.no  ////
///Dept. of Computer Science, University|Official : postmaster@cs.uit.no  ///
//of Tromsoe, N-9000 TROMSOE, NORWAY    |Phone/Fax: +47-83-44053/44580    //
/      "'oe' is '\o{}' in TeX"          |#include : <disclaimer.std>      /

ken@gvax.cs.cornell.edu (Ken Birman) (01/25/91)

In article <1991Jan25.083046.17960@mack.uit.no> tage@staff.cs.uit.no (Tage Stabell-Kuloe) writes:
> ... question for the Mach people to answer, followed by: 
>1) To what extent does ISIS use the mechanisms provides by MACH ?
>

Under Mach, ISIS maps all its operations into the cthreads equivalents; in
fact, our interface is based on Eric Cooper's.  A consequence is that ISIS
allows you to mix direct calls to the native threads routines and calls
to the ISIS routines -- a plus in applications that need to mix code from
several sources.

If you have been following ISIS, you probably are aware that we are now
starting a redesign/reimplementation activity to arrive at a lightweight
port-groups mechanism for systems like Chorus, Mach, Ameoba, etc., with the
rest of ISIS presented as a set of toolkits that talk to this lower-level
facility.  We are doing this mostly for performance and to simplify our
system.  But, multithreading is also an issue.  In this new system, ISIS
won't have its own private threads package at all.  Under Mach, users will
will just see the normal threads primitives.  However, ISIS will need to make 
stylized use of mutex locks, since this is how one controls event orderings
under Mach and Chorus.

One of our goals is to make better use of pthreads (parallel version of
cthreads).  Currently you can do this in ISIS, but it is a bit clumsy: you
need to be very aware of parallelism and use an ISIS macro called 
ISIS_THREAD_LEAVE/ISIS_THREAD_ENTER to release or re-acquire the ISIS mutex.
The new system will be designed to exploit multiple threads from the outset
and will have some constructs, like causal domains, to make this quite a
bit easier for the user.

When our interface specifications document comes out, we'll post a pointer.

Ken