kcw | journal | 2000 << Previous Page | Next Page >>

Over at the Motley Fool there is an article called "Expectations for MacOS X" by Investosaurus. The gist of the article is that there are four common myths about operating systems and the author goes on to show that these myths don't pertain to the various flavors of Unix, one of which MacOS X is based on. The problem I have about the article is that the myths do apply to Unix, just in a different way than to microcomputer operating systems.

Myth 1: If you run too many applications, you can "overload" the OS and it will crash. Investosaurus goes on to say that Windows and MacOS 9 don't have memory protection, which Unix has in the form of a Memory Management Unit (MMU) usually implemented in hardware. In his words: "UNIX systems rarely crash and it will be nice to bring the desktop to parity with this."

At least he added that last sentence, because you can overload a Unix system. It's called thrashing, a case when there are too many applications running, the OS can't keep up and is constantly context switching, resulting in the whole system practically stopping in its tracks. Granted, it takes a lot of processes to bring a Unix system to its knees, but keep in mind that most Unix programs are small and fast. A whole class of students trying to compile their Spice designs at the same time can have the same effect with less processes.

Myth 2: Be careful about which program you run, you can crash the OS if you run the wrong one. Investosaurus points to a well-defined API and a separate kernel as reasons why that can't happen in Unix. Again, he has a good point but he's sidestepping the issue. The kernel is not the only way to crash an OS, just the best and most effective way to do so. I've seen bad programs mess up a Unix machine enough that you have to reboot because you can't get a console session to kill the application. Sure, the OS is still running, but you can't do anything with it. It's not easy to do and Unix is very resistant to bad applications, but it can still be done.

Myth 3: If you don't have enough memory, your applications won't run, or will run slowly. Investosaurus points to the awesome Unix Virtual Memory system which is quite fast and efficient and makes good use of less RAM than other operating systems. And it works well because Unix is built on small applications that each take very little memory. Even big applications can be partitioned efficiently so that they don't slow down much.

But lets take a look at really big applications. I just can't imagine a 64 MB Unix machine efficiently processing a 100 MB Photoshop file, or running any Enterprise application like a database or an order processing system. Every OS breaks and slows down if you throw enough big things at it. I don't like someone saying that these are myths because Unix is resistant to them. It's all a matter of scale. The more powerful the tools, the more likely you'll scale up your usage until the tool is doing it's maximum.

Myth 4: An OS has to be big to provide all the most useful features. Investosaurus says that the Unix kernel is small (which it is, but not many people today would call a bare kernel an OS). Most Unix distributions come on one or several CDs, and a full install can take several hundred MBs of space. True, you get a lot of applications that Windows and the Mac OS don't provide out of the box. But a comparable Unix installation will be smaller.

Investosaurus then goes on to comment on how big a Netscape or Internet Explorer install is on Windows. Let's tie this back to the last paragraph. One reason that Windows and Mac OS programs are bigger than their corresponding Unix equivalents is graphics. GUI programs need to define windows and draw routines and a host of other things that CLI programs don't need. I've written GUI programs and the GUI space overhead is huge. Either the application has to do all that stuff itself (which makes the application big) or it uses some rather extensive system libraries (which makes the OS big).

Unix doesn't have good high-level GUI APIs. Everything is too low level. Even with X-windows, the graphic libraries make you do a lot of work. This does tend to make everything take less space overall, but it's harder to program. You can look at Netscape on Unix which I doubt is that big, versus on Windows or the Mac, where Netscape tries to do everything itself, not leveraging the OS facilities. Netscape is a poor example to use; heck, cross-platform applications are poor examples because they tend to be big in some OSs and smaller in others. Compare a good web browser for Unix versus one for the Mac versus one for Windows. For the Mac I can say that iCab is small, fast, and has comparable features to Netscape because it leverages the underlying OS facilities better. On the Windows side I hear that Opera is small, fast, and full-featured. I'm sure there's something similar on Unix.

Let me finish by saying that Windows, the Mac OS, and Unix were created for different purposes. Unix was designed to be a robust research OS that allowed lots of people to run misbehaving programs on the same expensive piece of hardware. The Mac OS was designed for ease of use computing on a rather limited machine. Windows was designed to give Microsoft leverage to promote their other products. They all have their strengths and weaknesses and none of them is perfect for everyone. I didn't like the tone of the article and so that's why I wrote this little piece. I'm sure I'm not totally correct, but I think I'm reasonably close.

Copyright (c) 2000 Kevin C. Wong
Page Created: August 18, 2004
Page Last Updated: August 18, 2004