Re: LINUX is obsolete
[Prev][Next][Index][Thread]
Re: LINUX is obsolete
-
Subject: Re: LINUX is obsolete
-
From: kevin@nuchat.sccsi.com (Kevin Brown)
-
Date: Fri, 31 Jan 1992 07:43:47 GMT
-
Organization: Where???
Sorry, but I just can't resist this thread...:-)
In article <12615@star.cs.vu.nl> ast@cs.vu.nl (Andy Tanenbaum) writes:
>In article <1992Jan29.231426.20469@klaava.Helsinki.FI> torvalds@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.
And an explicit design goal of Linux was to take advantage of the special
features of the 386 architecture. So what exactly is your point? Different
design goals get you different designs. You ought to know that.
>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.
I find it very interesting that you claim here that Minix was designed
primarily for cheap hardware (in particular, the IBM PC/XT with no hard
disk) and yet elsewhere have also mentioned the virtues of being portable
across hardware platforms. Well, if you insist on designing the thing
with the lowest common denominator as your basis, that's fine, but of
course the end result will be less than pretty unless designed *very*
carefully.
>Making software free, but only for folks with enough money
>to buy first class hardware is an interesting concept.
Except that Linux was designed more for the purposes of the designer than
anything else. If I were writing an OS, I'd design it to suit myself, too.
It's just that Linus was nice enough to share his code with the rest of us.
>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.
Maybe. But by then, the 386/486 will probably be where the PC is now:
everyone will have one and they'll be dirt cheap. The timing will be
about right. In which case Linux will fit right in, wouldn't you say?
>>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.
Here's a question for you: as a general rule, when you go to design an
operating system, do you design it for specific capabilities and then run
it on whatever hardware will do the job, or do you design it with the
hardware as a target and fit the capabilities to the hardware? With respect
to Minix, it seems you did the latter, but I don't know whether or not you
did that with Amoeba.
>>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.
Bull. A multithreaded file system has a completely different design than
a single-threaded file system and has different design criteria than a
single-threaded file system.
>When there is only one job active, the normal case on a small PC, it buys
>you nothing and adds complexity to the code.
If there is only going to be one job active anyway then *why bother with
multitasking at all*????
If you're going to implement multitasking, then don't do a halfway job
of it. On the other hand, if you're going to assume that there will be
only one job active anyway, then don't bother with multitasking (after
all, it *does* complicate things :-).
>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.
Maybe. Multiple users means multiple things being done simultaneously. I
wouldn't bet on the buffer cache buying you so much that multithreading
makes no difference. It's one thing if the users are doing something
simple, like editing a file. It's another thing if they're compiling,
reading news, or other things that touch lots of different files.
>It is only a win when there are multiple processes actually doing real disk
>I/O.
Which happens a *lot* when you're running multiple users. Or when you're
a machine hooked up to the net and handling news traffic.
>Whether it is worth making the system more complicated for this case is
>at least debatable.
Oh, come on. How tough is it to implement a multi-threaded file system?
All you need is a decent *buffered* (preferably infinitely so)
message-passing system and a way to save your current state when you send
out a request to the device driver(s) to perform some work (and obviously
some way to restore that state). Minix has the second via the setjmp()/
longjmp() mechanism, but lacks the former in a serious way.
>I still maintain the point that designing a monolithic kernel in 1991 is
>a fundamental error.
Not if you're trying to implement the system call semantics of Unix in a
reasonably simple and elegant way.
>Be thankful you are not my student. You would not
>get a high grade for such a design :-)
Why not? What's this big thing against monolithic kernels? There are
certain classes of problems for which a monolithic kernel is a more
appropriate design than a microkernel architecture. I think implementing
Unix semantics with a minimum of fuss is one such problem.
Unless you can suggest an elegant way to terminate a system call upon
receipt of a signal from within a microkernel OS?
>>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.
Weird as the Intel line may be, it's *the* most popular line, by several
times. So it's not like it's *that* big a loss. And Intel hardware is
at least relatively cheap to come by, regardless of what your students
might tell you (why do you think they all own PCs?)...
>An OS itself should be easily portable to new hardware
>platforms.
As long as you don't sacrifice too much in the way of performance or
architectural elegance in order to gain this. Unfortunately, that's
*exactly* what happened with Minix: in attempting to implement it on
hardware of the lowest caliber, you ended up having to make design
decisions with respect to the architecture and implementation that have
made vintage Minix unusable as anything more than a personal toy operating
system. For example: why didn't you implement a system call server as
a layer between the file system and user programs? My guess: you didn't
have enough memory on the target machine to do it.
Put another way: you hit your original goal right on target, and are to
be applauded for that. But in doing so, you missed a lot of other
targets that wouldn't have been hard to hit as well, with some
consideration of them. I think. But I wasn't there when you were making
the decisions, so it's real hard for me to say for sure. I'm speaking
from hindsight, but you had the tough problem of figuring out what to do
without such benefit.
Now, *modified* Minix is usable. Add a bigger buffer cache. Modify it
so that it can take advantage of 386 protected mode. Fix the tty driver
so that it will give you multiple consoles. Fix the rs232 driver to deal
with DCD/DTR and do the right thing when carrier goes away. Fix the pipes
so that read and write requests don't fail just because they happen to be
bigger than the size of a physical pipe. Add shared text segments so you
maximize the use of your RAM. Fix the scheduler so that it deals with
character I/O bound processes in a reasonable way.
>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.
Yeah, right. Just what hardware do you think they'd like to port DOS to,
anyway? I can't think of any. I don't think IBM or Microsoft are
regretting *that* particular aspect of DOS. Rather, they're probably
regretting the fact that it was written for the address space provided
by the 8088.
MS-DOS isn't less than brilliant because it was written for one machine
architecture. It's less than brilliant because it doesn't do anything
well, *regardless* of its portability or lack thereof.
>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.
He made his code freely redistributable. *You* didn't even do that. Just
for that move alone, he scores points in my book. Of course, the
distribution technology available to him is much better than what was
available when you did Minix, so it's hard to fault you for that...
But I must admit, Minix is still one hell of a bargain, and I would never
hesitate to recommend it to anyone who wants to learn something about Unix
and operating systems in general. As a working operating system (i.e.,
one intended for a multi-user environment), however, I'd hesitate to
recommend it, except that there really aren't any good alternatives
(except Linux, of course, at least tentatively. I can't say for sure,
since I haven't checked out Linux yet), since it doesn't have the performance
capabilities that a working operating system needs.
>Prof. Andrew S. Tanenbaum (ast@cs.vu.nl)
Kevin Brown
Newsgroups: comp.os.minix