eesrajm@cc.brunel.ac.uk (Andrew J Michael) (03/01/90)
Several people have recently commented that MINIX is a teaching operating system, not a real one. So what makes a real O/S ? Is it the O/S itself, or the utilities which come with it ? Surely no-one in their right minds would buy MSDOS as an operating system; they buy it for the programs they can run on it. The same argument can be applied to MINIX; it is seen as a teaching O/S because the programs which it runs are pretty restricted in their outlook. All that MINIX needs to become a real O/S is application programs. I must also suggest (and I don't want to start a flame war) that one's view of MINIX may be tempered by which machine you are running it on. I have tried both MINIX-PC and MINIX-ST, and I regard the ST as superior because porting public-domain UNIX programs to it is pretty simple. No restrictions on length of variables or memory usage. The only real problem is 16-bit ints, but gcc removes this restriction. When I did my part-time MSc recently, virtually all the project work was done on a MINIX machine at home (admittedly my 68020, not an ST). MINIX supported enough of ACK to develop a backend for the Acorn ARM with very little trouble. MINIX kept my project diary, it sent my mail and did lots of other jobs. Finally, running TeX, it produced my dissertation and printed it. That sounds like a pretty real operating system to me. Andy Michael -- Andy Michael (eesrajm@cc.brunel.ac.uk) " Software cannot be written to 85 Hawthorne Crescent be completely free of errors." West Drayton Middlesex - Acorn Computers Ltd. UB7 9PA
bammi@curie.ces.CWRU.Edu (Jwahar R. Bammi) (03/02/90)
In article <1383@Terra.cc.brunel.ac.uk> eesrajm@cc.brunel.ac.uk (Andrew J Michael) writes:
both MINIX-PC and MINIX-ST, and I regard the ST as superior because porting
public-domain UNIX programs to it is pretty simple. No restrictions on length
of variables or memory usage. The only real problem is 16-bit ints, but gcc
removes this restriction.
i must say i agree 100% with andy. in my opinion, minix-pc is a *toy*
mainly because of the 64k segments. unfortunately, this also also
effects how code gets written for minix in general. witness the
definition of NULL, size_t (this is a worse than NULL) etc in the 1.5
header files. its even deeper than that: using zero for null pointers
all over the place (even if NULL is used), the ACK C compiler for the
St thinks that the typeof( sizeof ) is unsigned 16 bit int. Also, all
the silly segment things all over the design of the kernel (note i am
not complaining about clicks). i hope with the refree system we see
the weeding out such system dependent code.
--
--
bang: {any internet host}!dsrgsun.ces.CWRU.edu!bammi jwahar r. bammi
domain: bammi@dsrgsun.ces.CWRU.edu
GEnie: J.Bammi
jdudeck@polyslo.CalPoly.EDU (John R. Dudeck) (03/02/90)
In article <1383@Terra.cc.brunel.ac.uk> eesrajm@cc.brunel.ac.uk (Andrew J Michael) writes: >Several people have recently commented that MINIX is a teaching operating >system, not a real one. > >So what makes a real O/S ? Is it the O/S itself, or the utilities which >come with it ? I would say that what makes a real OS is the OS itself, not the utilities. After all, it is possible to set up an entire set of the Unix utilities under MS-DOS, and give a very Unix-like feel to DOS. Of course what is missing when you do this are the multiple processes of Unix. An OS's purpose is to provide a high-level interface to the underlying hardware, at the system-call level. A "standard" operating system provides a standard interface, so that there is portability of software between systems. A "real" OS is one which provides a reasonably complete mapping of the capabilities of the underlying hardware into a higher-level programming interface. In addition, there are a number of other non-hardware related services provided by a real OS, such as multiple processes. >Surely no-one in their right minds would buy MSDOS as an >operating system; they buy it for the programs they can run on it. This is true. MS-DOS lacks many of the elements that are generally considered to be part of a "reasonably complete" OS, such as multiple processes, access to a reasonable amount of memory to run programs in, etc. On the other hand, it does provide better support than Minix for some parts of the hardware, such as the range of floppy and hard disks available, and the range of video adapters. In my opinion, Minix is close to being a "real" OS. Here is what I think it still lacks: - Support for full use of available memory by programs. In the 80x86 world this means support for the large memory model. - Support for the math chip in context switches (has this been added?) - Support for the full range of hard and floppy disk types available on whatever platform it is running on. - Swapping (has this been added?). - Spooled printing. Of course there are a lot of other things that would be nice. But these are the main things that Minix lacks, which keep it from being viable as an OS used in say, a business setting. Without these, the range of applications is limited, and the frustration level is too high. -- John Dudeck "You want to read the code closely..." jdudeck@Polyslo.CalPoly.Edu -- C. Staley, in OS course, teaching ESL: 62013975 Tel: 805-545-9549 Tanenbaum's MINIX operating system.
cagney@chook.ua.oz (Andrew Cagney - aka Noid,285,5585,3362395) (03/02/90)
Oh, no no again.....
peter@ficc.uu.net (Peter da Silva) (03/02/90)
In article <25eda193.62e3@polyslo.CalPoly.EDU> jdudeck@polyslo.CalPoly.EDU (John R. Dudeck) writes: > In my opinion, Minix is close to being a "real" OS. Here is what I think > it still lacks: ... > - Spooled printing. That's a system program level sort of thing, not part of the O/S. I'm sure you could implement spooled printing for a single-system single-printer environment in a day. Hell, the following code would do just fine for many folks: ---lpr--- NEXT=`cat /usr/spool/lp/.next` if [ 0 = $# ] then cat > /usr/spool/lp/D.$NEXT set /usr/spool/lp/D.$NEXT fi echo $* > /usr/spool/lp/C.$NEXT NEXT=`expr $NEXT + 1` echo $NEXT >> /usr/spool/lp/.next ---lpq--- ls /usr/spool/lp | while read X do echo "$X\t`cat /usr/spool/lp/$X`" done ---lpd--- touch /usr/spool/lp/.run while [ -f /usr/spool/lp/.run do ls /usr/spool/lp/C.* | while read X do FILES=`cat /usr/spool/lp/$X` cat > /dev/lp << ! ****************************************************************************** $FILES ****************************************************************************** \f ! for FILE in $FILES do cat $FILE > /dev/lp echo \f >/dev/lp done rm -f $X `echo $X | sed 's/C/D/'` done sleep 1 done -- _--_|\ Peter da Silva. +1 713 274 5180. <peter@ficc.uu.net>. / \ \_.--._/ Xenix Support -- it's not just a job, it's an adventure! v "Have you hugged your wolf today?" `-_-'
overby@plains.UUCP (Glen Overby) (03/03/90)
In article <1383@Terra.cc.brunel.ac.uk> eesrajm@cc.brunel.ac.uk (Andrew J Michael) writes: >Several people have recently commented that MINIX is a teaching operating >system, not a real one. >So what makes a real O/S ? Is it the O/S itself, or the utilities which >come with it ? Both. The kernel alone isn't of much use; you need to surround it with good tools. Some people have faulted Minix for only using 64K segments. I think there are very good reasons for doing this on 8088s: there is much less of a chance of programs running over each other if they do not touch the segment registers. The compilers are easier to write, too. Minix on 80386s will run 32-bit segments, so you can have your GNUisms and other memory-hungry programs. I haven't seen a real Unix that allows huge model programs on an 8088 or 80286. The problems of device compatability we have encountered with Minix are no different than what any other multitasking operating system (i.e. one that does not rely soley on the ROM BIOS for it's I/O) has encountered. I think there are two things left to make Minix an extremely usable system: (1) the ability to swap, thus allowing iddle programs to be shoved out of memory, allowing larger programs to use available memory. (2) the bottleneck in the filesystem and, to a lesser extent, the memory manager will have to be dealt with. The problem right now is that one process can quite effectively take over the system by keeping the filesystem busy. We've already seen one attempted solution to this: a "multitasking" filesystem. It was a bit ugly. I think a nicer solution will be to implement threads (aka lightweight processes, and probably a few other synonyms). Then it will be possible to have multiple threads of execution servicing requests in all of the servers and devices. I doubt Minix will ever become a serious alternative for businesses, but it should make a good a personal (or "hacker", if you will) operating system. -- Glen Overby <overby@plains.nodak.edu> uunet!plains!overby (UUCP) overby@plains (Bitnet)
ast@cs.vu.nl (Andy Tanenbaum) (03/05/90)
In article <3696@plains.UUCP> overby@plains.nodak.edu (Glen Overby) writes: >I think there are two things left to make Minix an extremely usable system: >(1) the ability to swap >(2) the bottleneck in the filesystem ... I think that problem (1) is only really an issue on 8088 systems and very small 80x86 ones. With memory prices dropping all the time, having 1M or more on an 80286 or 80386 is hardly uncommon these days. With 1M of program memory it is very rare to get so many processes active that it fills up and would have to swap. Thus putting in swapping for the benefit of the 8088 only seems like a fairly low priority item. If you have 640K and no RAM disk, with MINIX eating up about 140K, you still have 500K for programs. You have to run a fair amount of stuff in the background to fill that up, and with 2 or 3 background jobs on an 8088, the performance won't be so great. As to (2), the only difference the single-threadedness makes is some loss of performance if you have two or more I/O bound jobs running at once. For a CPU bound job (e.g., the compiler, compress, nroff), you won't gain that much. If the foreground job is an editor, and is mostly idle, I very much doubt whether you would notice the gain, but the change is very complicated and introduces all kinds of possibilities for race conditions deadlocks and the like. I don't think it is worth it. A couple of thoughts on toy-ness. Original, MINIX was clearly a toy. It had the following characteristics: - Was aimed at an 8088 with 2 floppy disks - very few utilities - editor that could only handle files to 40K It has clearly evolved over the years, in no small part due to the collective efforts of the people in Netland. It is fair to currently characterize it as: - Aimed at 80286 or 80386 with lots of memory running in protected mode - Works with most hard disks - Soon to be available on the Atari, Amiga, and Macintosh; SPARC later - About 175 utilities - Editors include ed, ex, vi, and a mini-emacs, in addition to mined - Over 225 library routines - ANSI C compiler now running, will be available within 6 months - POSIX compatibility probably in a year or so - Pascal compiler available from UniPress and Transmediair - RS232 supported, kermit and zmodem available (uucp?) - Up to 3 users can run on the same machine - text processing with a somewhat lobotomized nroff - Distributed computing via Ethernet was in 1.3, hope to get it back in 1.5 While it is clearly nowhere near BSD 4.3 or System V, I think that running MINIX on a 2M PC/AT all by yourself is not that much worse that sharing a PDP-11/45 with 8 other people, and perhaps even a bit better. I think that if you compare MINIX 1.5 and its utilities to what you get if you buy MS-DOS in a box from Microsoft, it is not a toy at all. There is only one real technical limitation, but one that the PDP-11 also had: the 64K + 64K address limit. It is clearly getting to be a nuisance, but I am very hesitant to hack in segments just for the 286. On a 386, with Bruce's code, you can run 32 bits. Thus I prefer to keep the simple architecture of a linear address space. Note that the 64K property is not inherent to MINIX. On the 68000s, programs can be as big as memory. The 64K comes from the brain-damaged 8088 archtitecture, and going to multiple segments seems to be the wrong thing to do now with the future of even low-end machines clearly being the 386(SX) chips. A single, linear address space is so much simpler. I see MINIX-ST as the prototype. The most conspicuous thing lacking is a lot of applications software. There is kind of a vicious circle operating here: with a small user base, companies don't even consider making software for MINIX, and without software, the user base remains small. One thing that the newsgroup could do is look around for public domain software available in source form in C, and try porting it to MINIX. There is a huge amount of PD software around, most of it awful, but even if only 1% is good, that is still a great deal. Perhaps we need a mechanism to allow people who do a lot of work writing or porting some major utility to be able to sell it for a modest price (preferably with source). This might provide some incentive. Would the MINIX Centre in England be a suitable mechanism (Andy Michael-- any comments?)? Andy Tanenbaum (ast@cs.vu.nl)
peter@ficc.uu.net (Peter da Silva) (03/06/90)
I feel compelled to pop this in... In article <5741@star.cs.vu.nl> ast@cs.vu.nl (Andy Tanenbaum) writes: > While it is clearly nowhere near BSD 4.3 or System V... Thank god! > There is only one real technical limitation, but one that the PDP-11 also > had: the 64K + 64K address limit. It is clearly getting to be a nuisance, > but I am very hesitant to hack in segments just for the 286. Good for you. Make no compromises with terrorist architecture! I might just get a 386SX machine just to run MINIX, even without VM. In the meantime, how about shared libraries? That'd cut the overhead problem down a bunch. Is anyone working on it? -- _--_|\ Peter da Silva. +1 713 274 5180. <peter@ficc.uu.net>. / \ \_.--._/ Xenix Support -- it's not just a job, it's an adventure! v "Have you hugged your wolf today?" `-_-'
stailey@iris613.gsfc.nasa.gov (Ken Stailey) (03/07/90)
In article <3612QZxds13@ficc.uu.net> peter@ficc.uu.net (Peter da Silva) writes: >In the meantime, how about shared libraries? That'd cut the overhead problem What about shared text? How many copies of "sh" are usually being run at once? INET stailey@iris613.gsfc.nasa.gov UUCP {backbone}!dftsrv!iris613!stailey
kjh@pollux.usc.edu (Kenneth J. Hendrickson) (03/12/90)
In article <25eda193.62e3@polyslo.CalPoly.EDU> jdudeck@polyslo.CalPoly.EDU (John R. Dudeck) writes:
%In my opinion, Minix is close to being a "real" OS. Here is what I think
%it still lacks:
% - Support for full use of available memory by programs. In the 80x86 world
% this means support for the large memory model.
% - Support for the math chip in context switches (has this been added?)
% - Support for the full range of hard and floppy disk types available
% on whatever platform it is running on.
% - Swapping (has this been added?).
% - Spooled printing.
How about virtual memory, so a large address space can be supported?
Ken Hendrickson N8DGN kjh@usc.edu ...!uunet!usc!pollux!kjh
gert@targon.UUCP (Gert Kanis) (03/16/90)
In article eesrajm@cc.brunel.ac.uk (Andrew J Michael) writes: >I have tried >both MINIX-PC and MINIX-ST, and I regard the ST as superior because porting >public-domain UNIX programs to it is pretty simple. No restrictions on length >of variables or memory usage. The only real problem is 16-bit ints, but gcc >removes this restriction. ^^^^^^^^^^^^^^^^^^^^^^^^^^^ > >Andy Michael Hi there, I for one don't see how 16 bit ints could be a REAL problem..... As you undoubtly know: short = at least 16 bit int = at least 16 bit long = at least 32 bit The real length of an int depends on the architecture (the compiler should know about this :-/). Nevertheless NO portable code should rely on ints being longer than 16 bit (use longs instead). What's the problem? Gert Kanis. +-----------------------------------------------------------------+ | No more jokes they | Gert Kanis, ASW CBS SWP | | take to much space. | Nixdorf Computer BV, Postbus 29 | |----------------------| 4130 EA Vianen, Netherlands. | | I do not represent | E-mail : ... nluug.nl!targon!gert | | anyone elses opinion.| or {..uunet!mcsun!}hp4nl!targon!gert | +-----------------------------------------------------------------+
HBO043%DJUKFA11.BITNET@cunyvm.cuny.edu (Christoph van Wuellen) (03/20/90)
(Concerning 16-bit ints) Well, the problem simply is that there is much software which makes illegal assumptions on the size of int's and which you don't want either to reject or to fix. C.v.W.