Path: sparky!uunet!mcsun!sun4nl!star.cs.vu.nl!...@cs.vu.nl
From: a...@cs.vu.nl (Andy Tanenbaum)
Newsgroups: comp.os.minix
Subject: LINUX is obsolete
Message-ID: <12595@star.cs.vu.nl>
Date: 29 Jan 92 12:12:50 GMT
Sender: n...@cs.vu.nl
Organization: Fac. Wiskunde & Informatica, Vrije Universiteit, Amsterdam
Lines: 76


I was in the U.S. for a couple of weeks, so I haven't commented much on
LINUX (not that I would have said much had I been around), but for what 
it is worth, I have a couple of comments now.

As most of you know, for me MINIX is a hobby, something that I do in the
evening when I get bored writing books and there are no major wars,
revolutions, or senate hearings being televised live on CNN.  My real
job is a professor and researcher in the area of operating systems.

As a result of my occupation, I think I know a bit about where operating
are going in the next decade or so.  Two aspects stand out:

1. MICROKERNEL VS MONOLITHIC SYSTEM
   Most older operating systems are monolithic, that is, the whole operating
   system is a single a.out file that runs in 'kernel mode.'  This binary
   contains the process management, memory management, file system and the
   rest. Examples of such systems are UNIX, MS-DOS, VMS, MVS, OS/360, 
   MULTICS, and many more.

   The alternative is a microkernel-based system, in which most of the OS
   runs as separate processes, mostly outside the kernel.  They communicate
   by message passing.  The kernel's job is to handle the message passing,
   interrupt handling, low-level process management, and possibly the I/O.
   Examples of this design are the RC4000, Amoeba, Chorus, Mach, and the
   not-yet-released Windows/NT.

   While I could go into a long story here about the relative merits of the
   two designs, suffice it to say that among the people who actually design
   operating systems, the debate is essentially over.  Microkernels have won.
   The only real argument for monolithic systems was performance, and there
   is now enough evidence showing that microkernel systems can be just as
   fast as monolithic systems (e.g., Rick Rashid has published papers comparing
   Mach 3.0 to monolithic systems) that it is now all over but the shoutin`.

   MINIX is a microkernel-based system.  The file system and memory management
   are separate processes, running outside the kernel.  The I/O drivers are
   also separate processes (in the kernel, but only because the brain-dead
   nature of the Intel CPUs makes that difficult to do otherwise).  LINUX is
   a monolithic style system.  This is a giant step back into the 1970s.
   That is like taking an existing, working C program and rewriting it in
   BASIC.  To me, writing a monolithic system in 1991 is a truly poor idea.


2. PORTABILITY
   Once upon a time there was the 4004 CPU.  When it grew up it became an
   8008.  Then it underwent plastic surgery and became the 8080.  It begat
   the 8086, which begat the 8088, which begat the 80286, which begat the
   80386, which begat the 80486, and so on unto the N-th generation.  In
   the meantime, RISC chips happened, and some of them are running at over
   100 MIPS.  Speeds of 200 MIPS and more are likely in the coming years.
   These things are not going to suddenly vanish.  What is going to happen
   is that they will gradually take over from the 80x86 line.  They will
   run old MS-DOS programs by interpreting the 80386 in software.  (I even
   wrote my own IBM PC simulator in C, which you can get by FTP from
   ftp.cs.vu.nl =  192.31.231.42 in dir minix/simulator.)  I think it is a
   gross error to design an OS for any specific architecture, since that is
   not going to be around all that long.

   MINIX was designed to be reasonably portable, and has been ported from the
   Intel line to the 680x0 (Atari, Amiga, Macintosh), SPARC, and NS32016.
   LINUX is tied fairly closely to the 80x86.  Not the way to go.

Don`t get me wrong, I am not unhappy with LINUX.  It will get all the people
who want to turn MINIX in BSD UNIX off my back.  But in all honesty, I would
suggest that people who want a **MODERN** "free" OS look around for a 
microkernel-based, portable OS, like maybe GNU or something like that.


Andy Tanenbaum (a...@cs.vu.nl)


P.S. Just as a random aside, Amoeba has a UNIX emulator (running in user
space), but it is far from complete.  If there are any people who would
like to work on that, please let me know.  To run Amoeba you need a few 386s,
one of which needs 16M, and all of which need the WD Ethernet card.

Path: sparky!uunet!mcsun!fuug!news.funet.fi!hydra!klaava!torvalds
From: torva...@klaava.Helsinki.FI (Linus Benedict Torvalds)
Newsgroups: comp.os.minix
Subject: Re: LINUX is obsolete
Message-ID: <1992Jan29.231426.20469@klaava.Helsinki.FI>
Date: 29 Jan 92 23:14:26 GMT
References: <12595@star.cs.vu.nl>
Organization: University of Helsinki
Lines: 91

Well, with a subject like this, I'm afraid I'll have to reply. 
Apologies to minix-users who have heard enough about linux anyway.  I'd
like to be able to just "ignore the bait", but ...  Time for some
serious flamefesting!

In article <1...@star.cs.vu.nl> a...@cs.vu.nl (Andy Tanenbaum) writes:
>
>I was in the U.S. for a couple of weeks, so I haven't commented much on
>LINUX (not that I would have said much had I been around), but for what 
>it is worth, I have a couple of comments now.
>
>As most of you know, for me MINIX is a hobby, something that I do in the
>evening when I get bored writing books and there are no major wars,
>revolutions, or senate hearings being televised live on CNN.  My real
>job is a professor and researcher in the area of operating systems.

You use this as an excuse for the limitations of minix? Sorry, but you
loose: I've got more excuses than you have, and linux still beats the
pants of minix in almost all areas.  Not to mention the fact that most
of the good code for PC minix seems to have been written by Bruce Evans. 

Re 1: you doing minix as a hobby - look at who makes money off minix,
and who gives linux out for free.  Then talk about hobbies.  Make minix
freely available, and one of my biggest gripes with it will disappear. 
Linux has very much been a hobby (but a serious one: the best type) for
me: I get no money for it, and it's not even part of any of my studies
in the university.  I've done it all on my own time, and on my own
machine. 

Re 2: your job is being a professor and researcher: That's one hell of a
good excuse for some of the brain-damages of minix. I can only hope (and
assume) that Amoeba doesn't suck like minix does.

>1. MICROKERNEL VS MONOLITHIC SYSTEM

True, linux is monolithic, and I agree that microkernels are nicer. With
a less argumentative subject, I'd probably have agreed with most of what
you said. From a theoretical (and aesthetical) standpoint linux looses.
If the GNU kernel had been ready last spring, I'd not have bothered to
even start my project: the fact is that it wasn't and still isn't. Linux
wins heavily on points of being available now.

>   MINIX is a microkernel-based system. [deleted, but not so that you
> miss the point ]  LINUX is a monolithic style system.

If this was the only criterion for the "goodness" of a kernel, you'd be
right.  What you don't mention is that minix doesn't do the micro-kernel
thing very well, and has problems with real multitasking (in the
kernel).  If I had made an OS that had problems with a multithreading
filesystem, I wouldn't be so fast to condemn others: in fact, I'd do my
damndest to make others forget about the fiasco.

[ yes, I know there are multithreading hacks for minix, but they are
hacks, and bruce evans tells me there are lots of race conditions ]

>2. PORTABILITY

"Portability is for people who cannot write new programs"
		-me, right now (with tongue in cheek)

The fact is that linux is more portable than minix.  What? I hear you
say.  It's true - but not in the sense that ast means: I made linux as
conformant to standards as I knew how (without having any POSIX standard
in front of me).  Porting things to linux is generally /much/ easier
than porting them to minix.

I agree that portability is a good thing: but only where it actually has
some meaning.  There is no idea in trying to make an operating system
overly portable: adhering to a portable API is good enough.  The very
/idea/ of an operating system is to use the hardware features, and hide
them behind a layer of high-level calls.  That is exactly what linux
does: it just uses a bigger subset of the 386 features than other
kernels seem to do.  Of course this makes the kernel proper unportable,
but it also makes for a /much/ simpler design.  An acceptable trade-off,
and one that made linux possible in the first place.

I also agree that linux takes the non-portability to an extreme: I got
my 386 last January, and linux was partly a project to teach me about
it.  Many things should have been done more portably if it would have
been a real project.  I'm not making overly many excuses about it
though: it was a design decision, and last april when I started the
thing, I didn't think anybody would actually want to use it.  I'm happy
to report I was wrong, and as my source is freely available, anybody is
free to try to port it, even though it won't be easy. 

		Linus

PS. I apologise for sometimes sounding too harsh: minix is nice enough
if you have nothing else. Amoeba might be nice if you have 5-10 spare
386's lying around, but I certainly don't. I don't usually get into
flames, but I'm touchy when it comes to linux :)

Path: sparky!uunet!mcsun!sun4nl!star.cs.vu.nl!ast
From: a...@cs.vu.nl (Andy Tanenbaum)
Newsgroups: comp.os.minix
Subject: Re: LINUX is obsolete
Message-ID: <12615@star.cs.vu.nl>
Date: 30 Jan 92 13:44:34 GMT
References: <12595@star.cs.vu.nl> <1992Jan29.231426.20469@klaava.Helsinki.FI>
Sender: n...@cs.vu.nl
Organization: Fac. Wiskunde & Informatica, Vrije Universiteit, Amsterdam
Lines: 64

In article <1992Jan29.231426.20...@klaava.Helsinki.FI> torva...@klaava.Helsinki.FI
(Linus Benedict Torvalds) writes:
>You use this [being a professor] as an excuse for the limitations of minix? 

The limitations of MINIX relate at least partly to my being a professor:
An explicit design goal was to make it run on cheap hardware so students
could afford it.  In particular, for years it ran on a regular 4.77 MHZ PC
with no hard disk.  You could do everything here including modify and recompile
the system.  Just for the record, as of about 1 year ago, there were two
versions, one for the PC (360K diskettes) and one for the 286/386 (1.2M).
The PC version was outselling the 286/386 version by 2 to 1.  I don't have
figures, but my guess is that the fraction of the 60 million existing PCs that
are 386/486 machines as opposed to 8088/286/680x0 etc is small.  Among students
it is even smaller. Making software free, but only for folks with enough money
to buy first class hardware is an interesting concept.
Of course 5 years from now that will be different, but 5 years from now 
everyone will be running free GNU on their 200 MIPS, 64M SPARCstation-5.

>Re 2: your job is being a professor and researcher: That's one hell of a
>good excuse for some of the brain-damages of minix. I can only hope (and
>assume) that Amoeba doesn't suck like minix does.
Amoeba was not designed to run on an 8088 with no hard disk.


>If this was the only criterion for the "goodness" of a kernel, you'd be
>right.  What you don't mention is that minix doesn't do the micro-kernel
>thing very well, and has problems with real multitasking (in the
>kernel).  If I had made an OS that had problems with a multithreading
>filesystem, I wouldn't be so fast to condemn others: in fact, I'd do my
>damndest to make others forget about the fiasco.

A multithreaded file system is only a performance hack.  When there is only
one job active, the normal case on a small PC, it buys you nothing and adds
complexity to the code.  On machines fast enough to support multiple users,
you probably have enough buffer cache to insure a hit cache hit rate, in
which case multithreading also buys you nothing.  It is only a win when there
are multiple processes actually doing real disk I/O.  Whether it is worth
making the system more complicated for this case is at least debatable.

I still maintain the point that designing a monolithic kernel in 1991 is
a fundamental error.  Be thankful you are not my student.  You would not
get a high grade for such a design :-)


>The fact is that linux is more portable than minix.  What? I hear you
>say.  It's true - but not in the sense that ast means: I made linux as
>conformant to standards as I knew how (without having any POSIX standard
>in front of me).  Porting things to linux is generally /much/ easier
>than porting them to minix.

MINIX was designed before POSIX, and is now being (slowly) POSIXized as 
everyone who follows this newsgroup knows.  Everyone agrees that user-level 
standards are a good idea.  As an aside, I congratulate you for being able 
to write a POSIX-conformant system without having the POSIX standard in front 
of you. I find it difficult enough after studying the standard at great length.

My point is that writing a new operating system that is closely tied to any
particular piece of hardware, especially a weird one like the Intel line,
is basically wrong.  An OS itself should be easily portable to new hardware
platforms.  When OS/360 was written in assembler for the IBM 360
25 years ago, they probably could be excused.  When MS-DOS was written
specifically for the 8088 ten years ago, this was less than brilliant, as
IBM and Microsoft now only too painfully realize. Writing a new OS only for the
386 in 1991 gets you your second 'F' for this term.  But if you do real well
on the final exam, you can still pass the course.


Prof. Andrew S. Tanenbaum (a...@cs.vu.nl)

Path: sparky!uunet!mcsun!news.funet.fi!hydra!klaava!torvalds
From: torva...@klaava.Helsinki.FI (Linus Benedict Torvalds)
Newsgroups: comp.os.minix
Subject: Apologies (was Re: LINUX is obsolete)
Message-ID: <1992Jan30.153816.1901@klaava.Helsinki.FI>
Date: 30 Jan 92 15:38:16 GMT
References: <12595@star.cs.vu.nl> <1992Jan29.231426.20469@klaava.Helsinki.FI>
Organization: University of Helsinki
Lines: 12

In article <1992Jan29.231426.20...@klaava.Helsinki.FI> I wrote:
>Well, with a subject like this, I'm afraid I'll have to reply.

And reply I did, with complete abandon, and no thought for good taste
and netiquette.  Apologies to ast, and thanks to John Nall for a friendy
"that's not how it's done"-letter.  I over-reacted, and am now composing
a (much less acerbic) personal letter to ast.  Hope nobody was turned
away from linux due to it being (a) possibly obsolete (I still think
that's not the case, although some of the criticisms are valid) and (b)
written by a hothead :-)

		Linus "my first, and hopefully last flamefest" Torvalds

Path: sparky!uunet!mcsun!fuug!news.funet.fi!hydra!klaava!torvalds
From: torva...@klaava.Helsinki.FI (Linus Benedict Torvalds)
Newsgroups: comp.os.minix
Subject: Re: LINUX is obsolete
Message-ID: <1992Jan31.103323.29629@klaava.Helsinki.FI>
Date: 31 Jan 92 10:33:23 GMT
References: <12595@star.cs.vu.nl> <1992Jan29.231426.20469@klaava.Helsinki.FI>
<12615@star.cs.vu.nl>
Organization: University of Helsinki
Lines: 68

In article <1...@star.cs.vu.nl> a...@cs.vu.nl (Andy Tanenbaum) writes:
>The limitations of MINIX relate at least partly to my being a professor:
>An explicit design goal was to make it run on cheap hardware so students
>could afford it.

All right: a real technical point, and one that made some of my comments
inexcusable.  But at the same time you shoot yourself in the foot a bit:
now you admit that some of the errors of minix were that it was too
portable: including machines that weren't really designed to run unix. 
That assumption lead to the fact that minix now cannot easily be
extended to have things like paging, even for machines that would
support it.  Yes, minix is portable, but you can rewrite that as
"doesn't use any features", and still be right.

>A multithreaded file system is only a performance hack.

Not true.  It's a performance hack /on a microkernel/, but it's an
automatic feature when you write a monolithic kernel - one area where
microkernels don't work too well (as I pointed out in my personal mail
to ast).  When writing a unix the "obsolete" way, you automatically get
a multithreaded kernel: every process does it's own job, and you don't
have to make ugly things like message queues to make it work
efficiently. 

Besides, there are people who would consider "only a performance hack"
vital: unless you have a cray-3, I'd guess everybody gets tired of
waiting on the computer all the time. I know I did with minix (and yes,
I do with linux too, but it's /much/ better).

>I still maintain the point that designing a monolithic kernel in 1991 is
>a fundamental error.  Be thankful you are not my student.  You would not
>get a high grade for such a design :-)

Well, I probably won't get too good grades even without you: I had an
argument (completely unrelated - not even pertaining to OS's) with the
person here at the university that teaches OS design.  I wonder when
I'll learn :)

>My point is that writing a new operating system that is closely tied to any
>particular piece of hardware, especially a weird one like the Intel line,
>is basically wrong.

But /my/ point is that the operating system /isn't/ tied to any
processor line: UNIX runs on most real processors in existence.  Yes,
the /implementation/ is hardware-specific, but there's a HUGE
difference.  You mention OS/360 and MS-DOG as examples of bad designs
as they were hardware-dependent, and I agree.  But there's a big
difference between these and linux: linux API is portable (not due to my
clever design, but due to the fact that I decided to go for a fairly-
well-thought-out and tested OS: unix.)

If you write programs for linux today, you shouldn't have too many
surprises when you just recompile them for Hurd in the 21st century.  As
has been noted (not only by me), the linux kernel is a miniscule part of
a complete system: Full sources for linux currently runs to about 200kB
compressed - full sources to a somewhat complete developement system is
at least 10MB compressed (and easily much, much more). And all of that
source is portable, except for this tiny kernel that you can (provably:
I did it) re-write totally from scratch in less than a year without
having /any/ prior knowledge.

In fact the /whole/ linux kernel is much smaller than the 386-dependent
things in mach: i386.tar.Z for the current version of mach is well over
800kB compressed (823391 bytes according to nic.funet.fi).  Admittedly,
mach is "somewhat" bigger and has more features, but that should still
tell you something. 

		Linus

Path: sparky!uunet!europa.asd.contel.com!darwin.sura.net!ukma!hri.com!noc.near.net!
wpi.WPI.EDU!wintermute!entropy
From: entr...@wintermute.WPI.EDU (Lawrence C. Foard)
Newsgroups: comp.os.minix
Subject: Re: LINUX is obsolete
Message-ID: <1992Feb5.145630.759@wpi.WPI.EDU>
Date: 5 Feb 92 14:56:30 GMT
References: <12595@star.cs.vu.nl>
Sender: n...@wpi.WPI.EDU (News)
Organization: Worcester Polytechnic Institute
Lines: 33
Nntp-Posting-Host: wintermute.wpi.edu

In article <1...@star.cs.vu.nl> a...@cs.vu.nl (Andy Tanenbaum) writes:
>Don`t get me wrong, I am not unhappy with LINUX.  It will get all the people
>who want to turn MINIX in BSD UNIX off my back.  But in all honesty, I would
>suggest that people who want a **MODERN** "free" OS look around for a 
>microkernel-based, portable OS, like maybe GNU or something like that.

I believe you have some valid points, although I am not sure that a
microkernel is necessarily better. It might make more sense to allow some
combination of the two. As part of the IPC code I'm writting for Linux I am
going to include code that will allow device drivers and file systems to run
as user processes. These will be significantly slower though, and I believe it
would be a mistake to move everything outside the kernel (TCP/IP will be
internal).

Actually my main problem with OS theorists is that they have never tested
there ideas! None of these ideas (with a partial exception for MACH) has ever
seen the light of day. 32 bit home computers have been available for almost a
decade and Linus was the first person to ever write a working OS for them
that can be used without paying AT&T $100,000. A piece of software in hand is
worth ten pieces of vaporware, OS theorists are quick to jump all over an OS
but they are unwilling to ever provide an alternative. 

The general consensus that Micro kernels is the way to go means nothing when
a real application has never even run on one.

The release of Linux is allowing me to try some ideas I've been wanting to
experment with for years, but I have never had the opportunity to work with
source code for a functioning OS. 
-- 
Disclaimer: Opinions are based on logic rather than biblical "fact".   ------
Hackers do it for fun.  | First they came for the drug users, I said   \    /
"Profesionals" do it for money. | nothing, then they came for hackers,  \  /
Managers have others do it for them. | I said nothing... STOP W.O.D.     \/ 

Path: sparky!uunet!mcsun!sun4nl!star.cs.vu.nl!ast
From: a...@cs.vu.nl (Andy Tanenbaum)
Newsgroups: comp.os.minix
Subject: Re: LINUX is obsolete
Message-ID: <12747@star.cs.vu.nl>
Date: 5 Feb 92 23:33:23 GMT
References: <12595@star.cs.vu.nl> <1992Feb5.145630.759@wpi.WPI.EDU>
Sender: n...@cs.vu.nl
Organization: Fac. Wiskunde & Informatica, Vrije Universiteit, Amsterdam
Lines: 21

In article <1992Feb5.145630....@wpi.WPI.EDU> entr...@wintermute.WPI.EDU
(Lawrence C. Foard) writes:
>Actually my main problem with OS theorists is that they have never tested
>there ideas! 
I'm mortally insulted.  I AM NOT A THEORIST.  Ask anybody who was at our
department meeting yesterday (in joke).

Actually, these ideas have been very well tested in practice.  OSF is betting
its whole business on a microkernel (Mach 3.0).  USL is betting its business
on another one (Chorus).  Both of these run lots of software, and both have
been extensively compared to monolithic systems.  Amoeba has been fully
implemented and tested for a number of applications.  QNX is a microkernel
based system, and someone just told me the installed base is 200,000 systems.
Microkernels are not a pipe dream.  They represent proven technology.

The Mach guys wrote a paper called "UNIX as an application program."
It was by Golub et al., in the Summer 1990 USENIX conference.  The Chorus
people also have a technical report on microkernel performance, and I 
coauthored another paper on the subject, which I mentioned yesterday
(Dec. 1991 Computing Systems).  Check them out.

Andy Tanenbaum (a...@cs.vu.nl)

Path: sparky!uunet!mcsun!uknet!edcastle!aiai!richard
From: rich...@aiai.ed.ac.uk (Richard Tobin)
Newsgroups: comp.os.minix
Subject: Re: LINUX is obsolete
Message-ID: <6121@skye.ed.ac.uk>
Date: 4 Feb 92 14:46:49 GMT
References: <12595@star.cs.vu.nl> <1992Jan29.231426.20469@klaava.Helsinki.FI>
<12615@star.cs.vu.nl>
Reply-To: rich...@aiai.UUCP (Richard Tobin)
Organization: AIAI, University of Edinburgh, Scotland
Lines: 35

In article <1...@star.cs.vu.nl> a...@cs.vu.nl (Andy Tanenbaum) writes:
>A multithreaded file system is only a performance hack.  When there is only
>one job active, the normal case on a small PC, it buys you nothing 

I find the single-threaded file system a serious pain when using
Minix.  I often want to do something else while reading files from the
(excruciatingly slow) floppy disk.  I rather like to play rogue while
waiting for large C or Lisp compilations.  I look to look at files in
one editor buffer while compiling in another.

(The problem would be somewhat less if the file system stuck to
serving files and didn't interact with terminal i/o.)

Of course, in basic Minix with no virtual consoles and no chance of
running emacs, this isn't much of a problem.  But to most people
that's a failure, not an advantage.  It just isn't the case that on
single-user machines there's no use for more than one active process;
the idea only has any plausibility because so many people are used to
poor machines with poor operating systems.

As to portability, Minix only wins because of its limited ambitions.
If you wanted a full-featured Unix with paging, job-control, a window
system and so on, would it be quicker to start from basic Minix and
add the features, or to start from Linux and fix the 386-specific
bits?  I don't think it's fair to criticise Linux when its aims are so
different from Minix's.  If you want a system for pedagogical use,
Minix is the answer.  But if what you want is an environment as much
like (say) a Sun as possible on your home computer, it has some
deficiencies.

-- Richard
-- 
Richard Tobin,
AI Applications Institute,                                R.To...@ed.ac.uk
Edinburgh University.

Path: sparky!uunet!mcsun!sun4nl!star.cs.vu.nl!ast
From: a...@cs.vu.nl (Andy Tanenbaum)
Newsgroups: comp.os.minix
Subject: Re: LINUX is obsolete
Message-ID: <12696@star.cs.vu.nl>
Date: 5 Feb 92 14:48:48 GMT
References: <1992Jan29.231426.20469@klaava.Helsinki.FI> <12615@star.cs.vu.nl>
<6121@skye.ed.ac.uk>
Sender: n...@cs.vu.nl
Organization: Fac. Wiskunde & Informatica, Vrije Universiteit, Amsterdam
Lines: 14

In article <6...@skye.ed.ac.uk> rich...@aiai.UUCP (Richard Tobin) writes:
>If you wanted a full-featured Unix with paging, job-control, a window
>system and so on, would it be quicker to start from basic Minix and
>add the features, or to start from Linux and fix the 386-specific
>bits?  

Another option that seems to be totally forgotten here is buy UNIX or a
clone.  If you just want to USE the system, instead of hacking on its
internals, you don't need source code.  Coherent is only $99, and there
are various true UNIX systems with more features for more money.  For the
true hacker, not having source code is fatal, but for people who just
want a UNIX system, there are many alternatives (albeit not free).

Andy Tanenbaum (a...@cs.vul.nl)