Path: utzoo!censor!geac!torsqnt!news-server.csri.toronto.edu!bonnie.concordia.ca!uunet!samsung!rex!wuarchive!zaphod.mps.ohio-state.edu!rpi!batcomputer!munnari.oz.au!yoyo.aarnet.edu.au!sirius.ucs.adelaide.edu.au!hydra!francis From: francis@cs.ua.oz.au (Francis Vaughan) Newsgroups: comp.os.misc Subject: Re: What constitutes a good OS? Message-ID: <2271@sirius.ucs.adelaide.edu.au> Date: 18 Jan 91 07:05:14 GMT References: <5233@auspex.auspex.com> <41679@nigel.ee.udel.edu> <5258@auspex.auspex.com> <41772@nigel.ee.udel.edu> Sender: news@ucs.adelaide.edu.au Reply-To: francis@cs.adelaide.edu.au Organization: Adelaide Univerity, Computer Science Lines: 55 Nntp-Posting-Host: hydra.ua.oz.au Hmm, just to be a stir the mud a bit..... Most of the comments I've seen so far seem to be asking not so much "What constitutes a good OS? " but rather what constitutes a good OS that looks like the OS's that we are used to? Much of this discussion seems to assume that OS means "something a lot like what we use UNIX/VMS etc for" and begs the question as to what an OS is. A nice meta level definition we use a lot, is to define to OS as a virtual machine. No different in concept to the way a microcoded processor presents the user with a virtual machine (at a different level). So what is an OS? Does it include the file system? The record managment system? The window manager? The shells? The network manager? The compliers? DB Query language? Try ansering all of these questions with a yes/no with the OS's you are familiar with. Try Unix, VMS, Mulics, PICK, Burroughs, Macintosh, MS-DOS. It is hard to get a definite yes no for each one, but perhaps revealing to address the questions anyway. Should your definition of OS include the kernel? (this gets involved in the discussion about how much of the above list gets to be in the kernel.) Look at Mach and Chorus. ( Mach 3.0 at least ) You could happily build a VMS emulator on these kernels and never be able to tell the difference at the user level. Yet both of these are used as Unix platforms (I am writing this on an Encore Multimax running Mach, looks a lot like Unix to me unless I use the extra features). An implicit assumption has been that we want files. The argument has been what sort of access to files are wanted, not to question why files at all. Files as byte streams, files as structured records, files that support the programs I am writing. People seem to want files into which arbitary data structures can be placed. Our work in persistent systems presents the user with a flat persistent space in which programs can run. This is distributed across peers on a network. Nobody has any concept of a file, or indeed a querey language. Structures are simply placed into the space by the program with no need to worry whether they are persistent of ephemeral, such issues are orthogonal to the programmers task. Other programs access these structures as needed in the same space. Programmers are also freed of the need to reason about the consistency of data, as program state is also part of the persistent space and the underlying stability mechanisms guarantee that a program will never see an inconsistent data space (even though the program may have to be resumed from an intermediate state if failure occurs in part of the system). Of course there is much left unsaid here, but we ARE building an OS. Just a little different. Just like to stir things up a bit :-) Francis Vaughan.