From: mamisra@pollux.usc.edu (Manavendra Misra)
Newsgroups: comp.os.research
Subject: Summary of responses to OS class suggestions request.
Date: 26 Jan 1993 21:09:30 GMT
Organization: University of Southern California, Los Angeles, CA
NNTP-Posting-Host: ftp.cse.ucsc.edu
Originator: osr@ftp


A few days ago I had posted an inquiry about what Operating Systems
were available out there that I could use for an Operating Systems
Class at the Colorado School of Mines.  I got some very helpful
responses and I thought they might be useful to other people, so I'm
going ahead and reposting them.

Peter Danzig at USC suggested that I look into Nachos from Berkeley.
I've gone ahead and decided to use Nachos--an instructional OS
developed at Berkeley by Tom Anderson, Wayne Christopher, Stephen
Procter (and others?).  It's available by anonymous ftp from
ftp.cs.berkeley.edu in /ucb/pub.  Tom's email address is
tea@cs.berkeley.edu.  The only problem is that I have to port it to an
RS6000 environment.  Has anyone used Nachos in the RS6000 environment
(or in any environment)?  I'd certainly like to get feedback about
what I should and should not be doing.

Thanks again to everyone who responded!

Manav.

PS. I believe I have got permission to repost these articles.  If I've
goofed up, please forgive me.

*****************************************************************************

Manavendra Misra
Stratton Hall 406
Dept of Mathematical and Computer Sciences
Colorado School of Mines
Golden, CO 80401

Ph. (303)-273-3873

email: mmisra@mines.colorado.edu

*****************************************************************************




Return-Path: sjc@cs.purdue.edu
From: "Steve Chapin" <sjc@cs.purdue.edu>
Dr-Seuss-Quote: I will not eat them here or there,
		I will not eat them anywhere!
		I do not like green eggs and ham,
		I do not like them, Sam-I-am.

Manav,

I've TA'ed the OS class here at Purdue (and taught classes some) 9
times, so I think I can give you some decent advice :-)

I suggest a hands-on approach.  As you guessed, being able to actually
look at the code, compile it, and run it on a box makes the class much
more interesting.

There are several packages out there that should adapt well to use in
the classroom.  I know of three off the top of my head:

o Xinu:  developed at Purdue by Doug Comer, and others (including me).
It's designed to be small, and layered, so that the code is succint
and easily understandable.  It is intended for education, and is a
"conventional" operating system.  Xinu runs on the IBM PC, Sun-3,
sparc, LSI, MIPS, Macintosh, and VAX architectures.  (Obviously, this
is the one with which I'm most familiar.)

o Minix:  developed by Andy Tanenbaum.  It is a (mostly)
Unix-lookalike (from the outside) based on message passing.  I believe
Minix runs on PC-based machines.

o (Some ignorance; I can't remember the name):  I believe some
professors at SUNY-Buffalo developed an OS simulator specifically for
the classroom/lab situation.  I'll see if I can track the info down (I
have it somewhere).

...
sc
--


Return-Path: reiher@FICUS.CS.UCLA.EDU
From: reiher@FICUS.CS.UCLA.EDU (Peter Reiher)

In article <1jmq2tINN876@darkstar.UCSC.EDU> you write:
....

You probably want to get hold of Tannenbaum's operating system textbook.
(I believe it's called "Modern Operating Systems", but I wouldn't swear
to it.)  He wrote a very minimal Unix-style operating system called
Minix that is discussed in the book.  For minimal costs (media and
shipping, I believe), you can get hold of Minix.  In the past, I think
they've even sold copies of the book that include a floppy with Minix
on it, and they may still.  In addition to having an actual, readily
available operating system to work with, Tannenbaum is an excellent
text book writer.

-- 
		Peter Reiher
		reiher@wells.cs.ucla.edu


================


Return-Path: sanjiv@redbird.umsl.edu
From: sanjiv@redbird.umsl.edu (Sanjiv K. Bhatia)

In comp.os.research you write:

...

Well, you can use OSP which is an Operating Systems Simulator.  It is available
via anonymous ftp from cs.sunysb.edu and is an excellent tool for OS
instruction.  There is a book that goes with it and is published by
Addison-Wesley.  It is not very well written but the authors of OSP provide
excellent support.  I have been very happy with it despite the shortcomings of
the book and will recommend it to anyone.

Sanjiv
-- 
Sanjiv K. Bhatia		Department of Mathematics & Computer Science
sanjiv@redbird.umsl.edu		University of Missouri -- St. Louis
voice: (314)-553-6520		8001 Natural Bridge Road
fax  : (314)-553-5415		St. Louis, MO 63121-4499

==============

Return-Path: johnsonm@stolaf.edu
From: johnsonm@stolaf.edu (Michael K Johnson)


One possibility is to use minix, as there is a matching textbook and
it comes with complete source code.  Unfortunately, the source code is
not that great, and is harder to modify than that of several other
choices.

Another choice is to use Linux.  Linux is a free unix clone that is
well written and works extremely well.  The downside is that there is
little documentation finished on it yet, because it has been in beta
test, and features have changed a bit to be as good as possible.
However, it is pretty stable, and documentation is now being written.
If this option interests you, I can get you more info -- just mail me.

If you have not decided on a textbook, BTW, I would suggest Stallings'
_Operating Systems_ if you want to teach an in-depth course, and
perhaps Tanenbaum if you don't want to get quite as in-depth.  Mail me
on this, too, if you have any questions.

michaelkjohnson
johnsonm@stolaf.edu

==============

Return-Path: daniels@walleye.cse.ogi.edu
From: daniels@walleye.cse.ogi.edu (Scott David Daniels)

Consider teaching from Andrew Tannenbaum's book "Operating
Systems -- Design and Implementation".  I taught a course
using that and "Operating System Concepts -- Third Edition"
by A. Silberschatz, J. Peterson, and P. Galvin.  You can use
Minix (a unix-like OS) and have them hack a "real" OS.  The
students were split on whether Tannenbaum was great (concrete
thinkers, I suspect) and Silberschatz was useless or vice
versa (theory-based learning).  The mix was great, usually
one or the other had a clear explanation.  About a third of
the minix book is minix source (well-commented and built for
real program source).

-Scott David Daniels
daniels@cse.ogi.edu

============


Return-Path: neilsen@a.cs.okstate.edu
Cc: neilsen@a.cs.okstate.edu
From: Mitch Neilsen <neilsen@a.cs.okstate.edu>


Hello Manav,

I have been involved with teaching both graduate and undergraduate
operating systems courses for several years now. I will try to
address your questions in turn:

> Hi!  I am teaching a course on Operating Systems at the Colorado School
....

May I ask, which text are you using? I am currently using Tanenbaum's
new text entitled "Modern Operating Systems", which is very good.

Projects: I generally assign students in the undergraduate course
3 programming problems:

(1) A process synchronization problem, such as the dining philosophers
    problem, to be solved using UNIX SysV semaphores. So they have to
    learn about: fork(), semop(), semctl(), etc. system calls. The
    problem I assigned last fall was the Japanese Bathroom Problem.
    I can send you all the details and working solutions for SysV UNIX.

(2) The next major section is on memory management, so I had them
    write C code to simulate a swapping system using the standard
    algorithms: first fit, next fit, etc. In addition, the swapper
    is to do compaction if there is not enough space left in any
    one of the holes and compaction will help. 

(3) The last project I assign them is to write some client-server
    code, such as a simple file server. Last semester, for a change
    of pace, I had them write a semaphore server, run the server
    in the background and have a client request for semaphore
    operations.

Public UNIX: There are currently two major free UNIX products - 386BSD
and Linux. However, for teaching a class (or even for a nice implementation
course) I would recommend MINIX. This is a layered UNIX OS written by
Tanenbaum and distributed through Prentice-Hall. The cost is around $160,
but that includes a site license, so students can make copies. Tanenbaum
also has a text on Minix, I think an updated text is due out soon.
MINIX will run on most IBM compatible machines, even with 80286 processors.
However, Linux, for example, requires at least a 386 with about 4MB of
memory, more if you want to run X, but it is very nice. I have Linux
running on a 486-33 with an SMC Elite 16 ethernet card connected to
the network and it works very well.

I hope this helps, if you have other questions or if you would like the
complete problem sets with solutions, let me know.

Cheers,

Mitch Neilsen
Asst. Professor
Computer Science Dept.
219 Math Sciences
Oklahoma State University
Stillwater, OK  74078

E-mail: neilsen@a.cs.okstate.edu
Phone: (405) 744-5670  (if it rings more than 3 times, I'm not in...)


===========


Return-Path: yodaiken@chelm.cs.umass.edu
From: yodaiken@chelm.cs.umass.edu (victor yodaiken)

In article <1jmq2tINN876@darkstar.UCSC.EDU> you write:
....

for an introductory course, use Minix or Xinu, two unix variants that
have been the subject of books, run on cheap PC's and have freely available
source code. For a medium level course I'd use Linux or 386BSD, there are
newsgroups for both of these modern UNIX variatns that come with source, but
no books as of yet --- for 386BSD there is the McKissik book on 
Berkelely unix. For an advanced course, we are goning to try to use
Plan-9 which can be obtained free of charge from Bell Labs.

=================

Return-Path: hartley@emily.emba.uvm.edu
From: hartley@emily.emba.uvm.edu (Stephen J. Hartley)

  Sounds like what you want is Tanenbaum's MINIX.  The source code for
this UNIX-look-alike is in the book and also available from Prentice-Hall
for a number of machines.

=====================

Return-Path: jhowatt@eeyore.stcloud.msus.edu
From: jhowatt@eeyore.stcloud.msus.edu (Jim Howatt)


I'm currently teaching a 2 quarter sequence in software engineering.
I'm using "Operating Systems Concepts, 3rd ed" by Silberschatz, et al.
(It's a good text, especially if you use "Operating Systems, 2nd ed" by
Deitel as an alternate source of material).

For the lab part of the course, I ordered the Minix operating system for
PCs.  It's a full-up, Unix-like OS that comes with all the source code.
For projects, I'm having the students modify scheduling algorithms, 
memory algorithms, and the like.  The students are impressed that they
can actually modify and run a real OS on real hardware.  Tanenbaum structured
the OS code as a teaching tool, so it's very readable and maintainable
(subscribe to Comp.os.minix for more info).

Hope this helps.

Jim 

+-----------------------------------+---------------------------------------+
| James W. (Jim) Howatt             |  139 Engineering and Computing Center |
| Department of Computer Science    |  St. Cloud State University           |
| jhowatt@eeyore.StCloud.MSUS.edu   |  St. Cloud, MN 56301-4498             |
+-----------------------------------+---------------------------------------+

===============

Return-Path: wu@cs.ukans.edu

Hi!

Knowing that your need suggestion on the projects for OS course, I think you
might be interested in what we have in our OS course. One of the projects we
have is to write a program to simulate the Dinning Philosopher problem. There
can be two types. One is with UNIX pipe, with 5 process simulating 5 philosoph-
ers and communicating with pipes (not 1-1). The other is with UNIX socket, with
5 processes on 5 different machines simulating 5 persons.

If you are interested, I can send you my source code to you.

--Hao

=============

Return-Path: acmrlb@gsusgi2.gsu.edu
From: acmrlb@gsusgi2.gsu.edu (Ronald L. Bolin)

Here at GSU our operating system course is based on OSP. Students are 
able to write particular modules for the OS, compile their modules
and fine tune performance. OSP is Operating System Projects, and is
published by Addison-Wesley. Authors Michael Kifer & Scott A. Smolka.

You do not get the entire source to OSP, but do get a good manual
and some templates. Students write and link their code and run OSP
on a UNIX box under simulation.

Ron 


-- 
Ron Bolin					BellSouth Telecommunications
Georgia State Univ			        acmrlb@gsusgi2.gsu.edu
BellSouth Tele					rlb@bsts03.bss.com
Voice						404-529-3945

============


Return-Path: peterd@pjd.dev.cdx.mot.com
From: Peter Desnoyers <peterd@merlin.dev.cdx.mot.com>

In comp.os.research you write:

....

Students like being given a complex system and modifying parts of it,
rather than writing everything from scratch - besides being a lot
closer to the real world, it lets them do far more interesting things.
If you got some of the sources below, for instance, you could quite
conceivably have students change virtual memory strategies or file
system layouts in a single problem set or lab assignment. If you're
going to do something like that, make sure you have a way of debugging
the kernel.

>  Also, do you know if I could get a copy of the source code 
>for Unix somewhere.

Your choices include:

Linux - a UNIX (POSIX? anyway, SYSV-ish) look-alike written by a crazy
Scandinavian. Seems to be a good system.

386BSD - real Berkeley Unix (NET/2 release + code to replace the
AT&T-contaminated modules left out of NET/2)

[the above two available off the net, from Austin Code Works, and
various CD-ROMs]

BSD/386 from BSDI - $1000, similar to 386BSD but professional and with
support. Possibly not available due to court injunction???

"Real" UNIX, with AT&T license and everything - If your institution
has a source licence, I'm still not sure I'd risk the legal hassles of
showing it to your entire class.

Minix - by Andrew Tannenbaum - not free but cheap, and comes with a
textbook. (book + OS is maybe $80) For either BSD you could use
Quarterman, Karels, et al. for a text; for Linux you could use Bach,
but the only reason there's a resemblance is because Linus (the author
of Linux...) used Bach as a reference in writing it.

Xinu - book by Douglas Comer. Check the back of the book for ordering
info on the software. I know nothing about this OS or book, but
Comer's book on TCP/IP implementation was excellent.

***

My personal suggestion would be to stick with something like Minix or
Xinu, rather than trying to comprehend any fraction of the code of a
non-pedagogical system. If you're going to use examples from a real
OS, they should be examples - e.g. one or two files from the VM
system; a file from the file system, etc. If there was a book on it,
Linux might actually be a good pedagogical system, because it's been
mostly written by one person in a short period of time and should have
a lot more coherency than most "real" systems; however, it hasn't
gotten to that state yet.

				Peter Desnoyers

[ok to repost this if you wish]
-- 

==============

Return-Path: wood@ida.org
From: wood@ida.org (Jonathan Wood)



See the newsgroup comp.os.linux for free unix OS, a variant of minux.

Here is an info sheet I got from that group:

>From ardoin@dmsoproto.ida.org Tue Jan 19 14:20:46 1993
Return-Path: <ardoin@dmsoproto.ida.org>
Received: from omni.ida.org by csed-62.noname (4.1/SMI-4.0)
	id AA06430; Tue, 19 Jan 93 14:20:43 EST
Received: from dmsoproto.ida.org. by omni.ida.org (4.1/SMI-4.1)
	id AA14332; Tue, 19 Jan 93 14:20:41 EST
Received: by dmsoproto.ida.org. (4.1/SMI-4.1)
	id AA22791; Tue, 19 Jan 93 14:23:07 EST
Date: Tue, 19 Jan 93 14:23:07 EST
From: ardoin@dmsoproto.ida.org (Cy Ardoin)
Message-Id: <9301191923.AA22791@dmsoproto.ida.org.>
To: wood@ida.org
Subject: Info sheet
Status: RO

LINUX INFORMATION SHEET
(last updated July 16, 1992 by Jim Winstead Jr.
                                jwinstea@jarthur.Claremont.EDU)

1.      WHAT IS LINUX 0.96

        LINUX 0.96 is a freely distributable UNIX clone.  It
        implements a subset of System V and POSIX functionality.
        LINUX has been written from scratch, and therefore does not
        contain any AT&T or MINIX code -- not in the kernel, the
        compiler, the utilities, or the libraries.  For this reason it
        can be made available with complete source code by anonymous
        FTP.  LINUX runs only on 386/486 AT-bus machines; porting to
        non-Intel architectures is likely to be difficult, because the
        kernel makes extensive use of 386 memory management and task
        primitives.

        Version 0.96 is still a beta release, but it already provides
        much of the functionality of a System V.3 kernel.  For
        example, various users have been able to port programs such as
        bison and flex without having to modify code at all.  Another
        indication of its maturity is that it is now possible to do
        LINUX kernel development using LINUX itself and
        freely-available programming tools.

2.      LINUX features

        - System call compatible with a (large) subset of System V and
          POSIX
        - Full multiprogramming (multiple programs can run at once)
        - Memory paging with copy-on-write
        - Demand loading of executables
        - Page sharing of executables
        - Virtual memory: swapping to disk when out of RAM
        - POSIX job control
        - virtual consoles
        - pty's
        - some 387-emulation
        - ANSI compliant C compiler (gcc)
        - runs most, if not all, of the GNU utilities, including
          bison, flex, Emacs, gdb, bc, info, etc.
        - Over 200 library procedures (atoi, fork, malloc, read, stdio, etc.)
        - Currently 6 national keyboards: Finnish, US, German, French,
          British, and Danish
        - Full source code (in C) for the OS is freely distributable
        - Full source code of the tools can be gotten from many
          anonymous ftp sites around the world
        - Runs in protected mode on 386 and above
        - Support for extended memory up to 16M on 386 and above
        - RS-232 serial line support with terminal emulation, kermit, 
          zmodem, etc.
        - Supports the real time clock

3.      HARDWARE REQUIRED

        - A 386 or 486 machine with an AT-bus.  (EISA will probably
          work, also, but you will need an AT-bus hard disk
          controller.)  Both DX and SX processors will work.
        - A hard disk implementing the standard AT hard disk interface
          -- for example, an IDE drive.  In addition, some SCSI
          adapters are supported for access to SCSI devices.
        - A high-density disk drive -- either 5.25" (1.2MB) or 3.5" (1.44MB).
        - At least 2 megabytes of RAM.  (LINUX will boot in 2 Mb.  To
          use gcc 4 MB is a good idea.)
        - Any video card of the following: Hercules, CGA, EGA, VGA

        In addition, LINUX supports:
                - up to four serial line
                - a real time clock 

4.      PARTIAL LIST OF UTILITIES INCLUDED IN OR AVAILABLE FOR LINUX 0.96

        - The MTOOLS package (reading/writing to DOS filesystems)
        - The complete GNU filetools (ls, cat, cp, mv, ...)
        - The GNU C and C++ compiler with GNU assembler, linker, ar, ...
        - bison
        - flex
        - rcs
        - GNU make and pmake (BSD 4.3 Reno/BSD 4.4 make)
        - kermit
        - GNU Emacs, as well as MicroEMACS
        - Elvis, and other vi clones
        - less (or more)
        - mkfs
        - fsck
        - mount/umount
        - TeX, dvips
        - X (and lots of X apps)
        - and lots more...

5.      LINUX BINARIES

        The LINUX binaries and sources are available at several
        different anonymous FTP sites. The biggest are:

                banjo.concert.net:/pub/Linux
                tsx-11.mit.edu:/pub/linux
                nic.funet.fi:/pub/OS/Linux

6.      LEGAL STATUS OF LINUX

        Although LINUX is supplied with the complete source code, it is
        copyrighted software.  Unlike MINIX, however, it is available
        for free, provided you obey to the rules specified in the
        LINUX copyright.

        Linux is copyrighted by Linus Torvalds, but the copyright are
        identical to the GNU copyleft:  get a copy of the copyleft at
        your nearest ftp-archive..

7.      NEWS ABOUT LINUX

        There is one newgroup devoted to Linux discussions:
                comp.os.linux.

        Additionally, there are a couple of mailing-lists:

                linux-activists-request@niksula.hut.fi is the original
                mailing-list, and it now supports channels (most
                notably the GCC and X channels).

                linux-standards-request@concert.net is the Linux
                Standards lists, devoted to discussions of standards
                for Linux, such as device names, and file and
                directory names.

                linux-man-request@stolaf.edu is devoted to the Linux
                Document project, which is in the process of
                collecting man pages, writing installation guides,
                usage guides, and numerous other documents.

                linux-serial-request@stoloaf.edu is devoted to the
                discussion of serial port-related issues under Linux,
                including performance.

        There is also a a newsgroup service for users unable to access
        comp.os.linux, (what is the address for this service?)

        For the current status of LINUX:
                finger torvalds@kruuna.helsinki.fi

8.      FUTURE PLANS

        Work is underway on LINUX version 1.0, which will close some
        of the gaps in the present implementation.  Various people are
        currently working on:

                - additional filesystems (DOS, extended, ISO9660)
                - STREAMS 
                - interprocess communication
                - IEEE POSIX P1003.1 / P1003.2 compatibility
                - more complete SCSI support

        If you want to help, read comp.os.linux, and subscribe to the
        appropriate Linux mailing lists and/or channels.
-- 
                                    +    Jim Winstead Jr. (CSci '95)
                                    |            Harvey Mudd College
                                    | jwinstea@jarthur.Claremont.EDU
                                    + This is all my words.  Honest!




Jon Wood (703) 845-6632
Institute for Defense Analyses

===============

Return-Path: goldfish@cpage0.sbi.com
From: goldfish@cpage0.sbi.com (P. Goldsmith)

I have never taught a complete course, however, you might consider linux as
an alternative to minix for your examples.  It is free, and almost all your
students will be able to take it home and run it.  Also, after the course is
over, they will have a running UNIX system at home.


-- 
	Paul Goldsmith	<goldfish@sbi.com>	      w	212-783-7733
	(shredding elf)	<goldfish@ozrout.uucp>	      h	212-727-9345
	( Shirley MacLaine told me there would be LIFETIMES like this)
		... so many managers ... so little time ...