Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!iuvax!chaynes From: chaynes@iuvax.cs.indiana.edu (Chris Haynes) Newsgroups: comp.os.minix Subject: Re: Minix as a teaching OS Message-ID: <19039@iuvax.cs.indiana.edu> Date: 29 Mar 89 22:10:20 GMT Sender: chaynes@iuvax.cs.indiana.edu Lines: 42 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.