[comp.os.minix] Minix as a teaching OS

jk0@sun.soe.clarkson.edu (Jason Coughlin) (03/09/89)

	Minix is a wonderful OS for an Operating Systems because it
gives you the entire picture of how the components of an operating
system fit together (Thanks Andy!!).  However, part of an OS course will
involve changing the scheduler, MM, or FS and Minix has no statistical
functions to tell you what your new code does. 
	Does anyone have any such software that can be used?

	Tanenbaum's book is probably the clearest book ever written on
the subject of OS's (Again, THANKS ANDY!!).  However, we've found that
the code in the chapters dealing with things that Minix doesn't have
(monitors, etc) is a litle too conceptual.  We are considering the use
of SmallTalk or Scheme which can be used to implement schedulers,
monitors, etc quite easily as real code which can be experimented with. 
Does anyone have any opinions or ideas?	

--
Jason Coughlin
( jk0@clutx.clarkson.edu , jk0@clutx )

khearn@polyslo.CalPoly.EDU (Bug Hunter) (03/10/89)

In article <2630@sun.soe.clarkson.edu> jk0@sun.soe.clarkson.edu (Jason Coughlin) writes:
>
>	Minix is a wonderful OS for an Operating Systems because it
>gives you the entire picture of how the components of an operating
>system fit together (Thanks Andy!!).  However, part of an OS course will
>involve changing the scheduler, MM, or FS and Minix has no statistical
>functions to tell you what your new code does. 
>	Does anyone have any such software that can be used?
>
I am just starting on a project to add system activity reporting to
   MINIX. I will attempt to provide as much of the functionality as
   the SysV 'sar' routines as is possible. I'll probably add a few 
   MINIX specific statistics as well. I expect to have it finished 
   by June of 1989 (I *hope* so, as that's when I'm graduating!). 
   When I get it done, I'd be more than willing to give it to anyone 
   who wants it. (Andy: would this be something you'd like to add to 
   the standard MINIX distribution? if so, are there any specific 
   requirements that I need to keep in mind?).

I would appreciate some input from MINIX users. What statistics about
   the kernel, fs, mm, or io tasks would you all like kept and
   reported? I'm still in the design stage, so now is the time to let
   me know what you want.

Keith

-- 
Keith Hearn                   \    
khearn@polyslo.calpoly.edu     \   If you know what you're doing,
Cal Poly, San Luis Obispo       \  
(805) 541-2147 or (805) 756-7180 \      You aren't learning anything.

chaynes@iuvax.cs.indiana.edu (03/16/89)

/* Written  2:34 pm  Mar  8, 1989 by jk0@sun.soe.clarkson.edu in iuvax:comp.os.minix */
/* ---------- "Minix as a teaching OS" ---------- */

	Minix is a wonderful OS for an Operating Systems because it
gives you the entire picture of how the components of an operating
system fit together (Thanks Andy!!).  However, part of an OS course will
involve changing the scheduler, MM, or FS and Minix has no statistical
functions to tell you what your new code does. 
	Does anyone have any such software that can be used?

	Tanenbaum's book is probably the clearest book ever written on
the subject of OS's (Again, THANKS ANDY!!).  However, we've found that
the code in the chapters dealing with things that Minix doesn't have
(monitors, etc) is a litle too conceptual.  We are considering the use
of SmallTalk or Scheme which can be used to implement schedulers,
monitors, etc quite easily as real code which can be experimented with. 
Does anyone have any opinions or ideas?	

--
Jason Coughlin
( jk0@clutx.clarkson.edu , jk0@clutx )
/* End of text from iuvax:comp.os.minix */

chaynes@iuvax.cs.indiana.edu (Chris Haynes) (03/30/89)

	    Tanenbaum's book is probably the clearest book ever written on
    the subject of OS's (Again, THANKS ANDY!!).  However, we've found that
    the code in the chapters dealing with things that Minix doesn't have
    (monitors, etc) is a litle too conceptual.  We are considering the use
    of SmallTalk or Scheme which can be used to implement schedulers,
    monitors, etc quite easily as real code which can be experimented with. 
    Does anyone have any opinions or ideas?	

    --
    Jason Coughlin
    ( jk0@clutx.clarkson.edu , jk0@clutx )

I've switched to Tanenbaum's book because it is the best way I've
seen to provide the software engineering experience of modifying a
large, well designed, system.  If this experience is provided in other
courses, there are several other good operating systems texts to
choose from, with the possibility of using laboratory environments that
are better than MINIX for studying process synchronization problems.

Until recently I used a laboratory environment based on Scheme with an
abstraction of timed preemption called engines [1].  I supplied the
class with a basic process scheduler which provided fork, block,
unblock, and semaphore operations, among others, and hid the details
of the engine mechanism.  (I will email this system, with basic
documentation, on request.)  This proved to be a very good environment
for solving classic synchronization problems using semaphores and for
projects implementing higher level synchronization mechanisms such as
monitors, message passing, remote procedure call, etc.  (Of course
this environment does not provide the realistic view of modern
operating system design and implementation offered by MINIX.)

Chris Haynes
Computer Science Dept.
Indiana University
Bloomington, IN 47405

chaynes@iuvax.cs.indiana.edu

[1] Christopher T. Haynes and Daniel P. Friedman, "Abstracting timed
    preemption with engines," COMPUTER LANGUAGES, Vol. 12, No. 2 (1987),
    109--121.