Windows NT/2K/XP vs *NIX

The ongoing debate continues!


Why the debate? Why the controversy?

UNIX is an operating system that was originally designed on a PDP-11 computer, a 16-bit mini-computer that was designed in the late 1960's by Digital Equipment Corporation (DEC). The mini-computer was designed to meet the need by small businesses and educational institutions for a medium-sized computer capable of timesharing and handling basic accounting and other needs for which an expensive mainframe computer was impractical, but a relatively inexpensive minicomputer was ideal. As such it became an ideal development platform for UNIX, ported from a system called 'UNICS' that was written in a languaged called 'B' in 1969. The additional requirement for UNIX was that it be PORTABLE, and its development coincided with that of the 'C' programming language in which nearly all of the operating system was written, an important feature for Operating System portability.
These were the days before the microprocessor, when the Intel 8080 was still being developed, as well as the Motorola 6800 and Zilog Z80. Mini-computers were the size of filing cabinets, and 500Mb disk drives had 12 platters and were housed in cabinets the size of a washing machine (and they bore an interesting resemblance...).

At that time, the PDP-11 (and other machines) had all been using proprietary operating systems, requiring that programmers (and software) specialize for a particular piece of hardware.  Obviously this caused an increase in operating cost, plus higher prices for the complete system, and the obvious compatibility problems for a single software application to run on multiple operating systems, which plagued the software industry, making it hard to sell large numbers of copies of any piece of software, making the software more expensive to the consumer. And for independent developers, it was impractical to produce programs that could run on multiple platforms. Within a few years, most PDP-11's were running 3 basic operating systems:   RT-11 (a simple single-user system with rudimentary foreground/background task capability), RSX-11 (an advanced multi-user system), and RSTS/E (a compiled-BASIC (PCode) system that allowed RT-11 and RSX-11 to run as "subsystems" within it). Also during that time, particularly in the latter half of the 1970's, the PDP-VAX was being developed, with its new VMS operating system. In parallel, Bell Labaratories was inventing the 'C' programming language (Kernighan and Richie, et. al) beginning in 1970, and along with it, the UNIX operating system.  As a direct result of this, ANSI 'C' and UNIX have always been closely related.

The intent was to invent an operating system for which a common high-level language could perform most of the tasks, but it had to be a language that was close to the assembly level.  Therefore, 'C' contains a few "PDP"-isms, such as pre-increment/decrement and post-increment/decrement, a feature that is inherent within the PDP-11's CPU instruction set.  However, 'C' was close enough to the operating system (especially with its pointers and pointer operators), and offered sufficient high level language capability, re-casting of types, and so forth to be very flexible, enough to write most of the operating system code.  Any remaining assembly code had to be tailored to a specific machine, as well as the 'C' compiler and libraries, but this became a small fraction of the total code base.  The result:  a truly portable operating system.  In addition, improvements such as tree-structured directories, and "piping" of commands through "filter" applications, were significant advantages over many other existing operating systems at that time.

However, since UNIX was originally designed in the 1970's (some have erroneously stated 1960's,but they're wrong), it was character based, with cryptic (but powerful) command line arguments, JCL's, and features.  UNIX traditionally requires a full-time staff 'C' programmer to maintain, as with other mini-computer operating systems of that time period.  As such, it has traditionally been reserved for file servers and database servers (but not desktop workstations), where it has done very well, competing against proprietary OS's like MPE/XL (HP), VMS (DEC), and OS/1 (IBM).  Eventually UNIX was installed on workstations as well, but long after MS-DOS, MAC-OS, and Windows had dominated the OS market for desktop machines. These UNIX workstations were typically the kind of "high-end" workstations that needed complex graphics software, such as CAD/CAM (which often ran an X-Windows client to take advantage of a client/server environment with a UNIX-based mainframe server doing most of the work), and the high-end workstation's CPU horsepower was necessary to run the software.  At least two GUI systems were developed, Motif and X-Windows, which added some complexity and non-portability to an otherwise portable operating system.  As well, the various "*nix ports" added their own shares of compatibility problems.  Fortunately, with the advent of LINUX (a free *nix port) and GNU (an organization for the free distribution of software), as well as 'OpenBSD' and 'FreeBSD' (my personal favorite), a reliable and stable UNIX port for 80x86 CPU's has been maintained by allowing the source and binaries to be freely distributed by anyone, and though "code forking" (multiple parallel revisions of the same software) has occured, GNU has attempted to standardize the LINUX port by releasing their own version, the "GNU Hurd". Of more worthy note is the FreeBSD, which I have installed on 2 different machines, one an 'old klunker' (read this as "substitute for an anchor") 486 DX2 66Mhz ISA-only box (with VLB I/O card but that's its only saving grace) and a PII 400Mhz machine that I recently purchased for 1/10th of what it sold for new. However, the initial results were only 'so-so' (more later).

In 1992, Windows NT 3.1 was released by Microsoft following the release of Windows 3.1, a significant upgrade to their highly successful Windows 3.0 product released in 1990.  Microsoft dared to oppose IBM's will by releasing Windows 3.0 as a "general use" operating system, compatible with a wide variety of CPU's and peripherals, instead of taking the IBM route of OS/2 and targeting PS/2 machines (and a small number of others).  During this time, Microsoft gained the lions' share of the desktop computing market for GUI, previously held by Apple, and was subsequently sued (unsuccessfully) as a result of their success.  Windows 3.1, followed by Windows NT 3.1, was an attempt to separate the "standard" from the "high end" operating systems.  However, Windows NT 3.1 was kludgy (running poorly on an 80386 CPU), required 16Mb of memory (which was a substantial expense at that time), required 100Mb of disk space (not a small investment at that time either), and wouldn't run a large number of existing 16-bit applicaitons.  In short, it was a fun toy for developers and for high-end users, but impractical for everyone else.

In late 1993 Microsoft held a conference in Anaheim California (where Bill Gates rented Disneyland for an evening for the 6000+ developers and their guests, and the Penn and Teller show was awesome!) where Microsoft announced their plans to continue 2 lines of operating systems for a few years, after which they would eventually merge into one, an NT-like operating system.  Windows '95 was announced (code-named 'Chicago') and fully supported the same 'Win32' programming interface found in NT, with some minor features removed (such as high security and certain server functions, among others) to reduce the memory footprint.  Windows NT 3.5 was released in 1995, a few months before Windows '95.  Windows NT 3.5 still kept the old 'Windows 3.x' Program Manager, whereas Windows '95 provided an improved desktop and program launcher.  Windows NT and '95 both had the ability to run a 'DOS Box' where batch files and MS-DOS commands could be typed in, and Windows '95 now allowed 32-bit "console applications" to run from the command line, even using MS-DOS appliations as 'filters', as well as Win32 console applications, just as NT had always done - thus allowing many UNIX 'character mode' applications to be compiled for 32-bit windows with few modifications, to run on either Windows 'NT or Windows '95.  Windows NT took the command interpreter one step further, offering an improved command shell 'CMD.EXE' that extended the MS-DOS commands.  And, both Windows '95 and Windows 'NT supported file names larger than "8x3".  However, Windows NT still lacked some of the features (such as multi-user timesharing) for which high-end mini-computers were still being used.

The primary design of Windows NT was a departure from MS-DOS, using the NT Kernel written mostly in 'C' (like UNIX) and with a "Hardware Abstraction Layer" (known as HAL - 2001 joke obvious), that allowed 'C' language programs to be used for the majority of device driver functionality (like UNIX), something impossible on earlier releases of Windows.  Windows NT also initially supported the OS/2 file system "HPFS", and added their new system, "NTFS", that greatly improved upon it, since NTFS was designed primarily by former engineers from Digital Equipment Corporation, who helped to design the VAX VMS operating system.  And, Microsoft did one of its first non-Intel ports of Windows NT for the DEC Alpha RISC system, and continues to support the DEC Alpha CPU with current releases of Windows NT and NT development tools.

In 1997, Microsoft released Windows NT 4.0, then the most stable version of Windows NT.  With it's "Windows '95" interface, and Microsoft's push to developers to use it for writing 32-bit applications (primarily for Windows '95, but also to run on Windows NT) Windows NT became more common on user desktops.  Its use with file servers was also replacing UNIX and Novell operating systems in many corporations, often by being bundled with file servers as a result of an aggressive marketing campaign by Microsoft to get computer manufacturers to pre-install Windows on their computers, which has ALSO caused a lot of controversy (and legal troubles for Microsoft).  Since then Microsoft has pushed their NT operating system to dominate all areas of the market, from RISC machines to desktops to palmtops to device controllers running a scaled-down version of NT called "Windows CE".  Not a surprise for a company that won the IBM contract for PC-DOS by purchasing and adapting an 8086 operating system used by a device controller.

Microsoft later released a multi-user version of Windows NT, called "Windows NT Terminal Server", that finally enabled Windows NT to compete head to head against UNIX systems that provide timesharing capability, something still needed by bank tellers, cash registers, and even those "hamburger order" machines at fast food restaurants.  A world dominated by Microsoft software seems to be their goal - and why not, isn't that what business is all about?

And, of course, more recent releases include Windows 2000 (1999) and XP (2001), both based upon the Windows NT kernel. Windowx XP could be considered the final stake in the heart for MS-DOS, as even the 'home' version uses the same Kernel as it's 'big brother' (the 'PRO' version). As earlier versions of windows, even Windows '95, '98, and ME, were all plagued with the "windows on top of DOS" paradigm that began with Windows 1.0, and was later popularized by Windows 3.0 and 3.1, XP has finally crossed the gap and produced it's 'home' version with a nearly identical kernel and identical device driver model.

Still, as a result of its popularity, as well as some bad experiences from the past, the controversy continues on, and as Microsoft continues to dominate the marketplace for operating systems in spite of it all.  Let's face it, large companies that gobble up the market scare people, and though competition exists from *NIX systems (especially FreeBSD and LINUX, which are essentially free, if you can support the OS yourself, or cheaper than a Microsoft OS if you buy LINUX from companies that package it for you and support what they sell), Microsoft still dominates the market.  Already the majority of developers, like myself, are targeting Win32 systems (like NT/2k/XP and Windows '9x/ME) and it's no surprise, as THAT is the largest chunk of customers in the marketplace.  If you want to make money, you cater to the market - and right now, it's Win32, and will probably be so for a very very long time.

 

Arguments against NT-based Operating Systems

But always with the good comes the bad. You can't get something for free, and that's entirely where the biggest problem with the Windows NT-based systems are:  As the apparent competition dwindles, the "innovation" also dwindles.  And to combat the tendency 'not to upgrade', Microsoft has proceeded in ENTIRELY the wrong direction, towards 'subscription-style' licensing, so that you would have to CONTINUE TO PAY for what you have ALREADY PURCHASED. Clearly some REAL competition needs to be inserted into the mix in order to combat this unfortunate tendency in the marketplace.

 

Arguments in favor of UNIX

So many times I have heard people argue in favor of UNIX, saying how much better it is than NT (when it is not), how much NT crashes, and so forth.  I have yet to see anything that so strongly supports UNIX that I should change operating systems.  And, that is exactly how others must see it too if UNIX IS to ever be a viable competition for Microsoft operating systems, for if UNIX was "all that better" than Microsoft's NT-based operating systems, why aren't people switching over right now, instead of upgrading to XP and eventually allowing Microsoft's marketing direction to degrade from individual purchases to a 'rental-like' subscription license?  And why aren't the computer manufacturers pre-loading UNIX operating systems on their machines in vast numbers?  After all, it costs less to load UNIX, and it generally supports the same hardware, and (as I have been told) the WINE subsystem even supports software written for Win32.  Usually, those who so proclaim the superiority of UNIX are themselves college students, and thus learn UNIX as part of their education, and can't afford to buy a Microsoft operating system or the development tools for it, and many educational institutions use UNIX on their systems, and teach UNIX programming, and have tenured professors who learned UNIX long ago and have no reason to migrate to anything else.  And after all, they teach what they know.  But nobody has, to date, offered me a reasonable argument in favor of UNIX OVER Windows NT/2k/XP.

Still, I shall state some of the reasons I have seen or heard that favor UNIX over Windows NT/2k/XP, with my comments added.

 

Arguments in favor of Windows NT/2k/XP

Now it's time to give you all my reasons as to why an existing UNIX system should be ported over to a Windows NT/2k/XP system, and why Windows-based operating systems are a better choice than UNIX OS's, for most applications.

 

Conclusion

So, it seems to me that UNIX isn't really "better" than Windows after all, especially because all of the arguments used by '*nix' advocates fall flat on their face in the bright light of reality.  Sure, it's an alternative, but Windows platforms have significant advantages to them that UNIX does not, and with most developers targeting Windows platforms, and more programmers are available for Windows platforms, and the requirement for in-house support of Windows-based file serves is significantly less than for *nix, it seems to me that Windows NT/2k/XP is THE most valid choice.
That does NOT mean that this could NOT change at any time in the future. Trends as I read them point to stagnation in technological breakthroughs by Microsoft, and a vacuum of competing OS's means that SOMETHING must eventually fill that gap.  And it's likely to be some variety UNIX - Apple must think so, they're using it for OS/X.

 

My Experience with FreeBSD

This was entirely MY experience with FreeBSD. Many of you will have different results, so please don't take what I say here too seriously.

That being said, I'd like to point out that I have actually loaded a *nix operating system on 2 different machines (and I did it intentionally) and my opinions of *nix have only changed slightly as a result. The one thing I can say about the FreeBSD system is that it is, for all practical purposes, a fully functional and reliable *nix installation, complete with documentation and (to some extent) support. What it seriously lacks is the wide "driver support" you get with a windows-based system, so if you plan on using FreeBSD, even a "generic VGA" display could give you problems, as it did with me.

When I loaded FreeBSD for the first time, I ran out of disk space. This was due to a lack of understanding of the nuances of disk drive partitioning and how to set it up so that it actually works. As it was somewhat confusing, I went through the 'F1' help during SETUP, and it informed me that I needed at least 3 'sections', one for '/', one for swap space, and one for '/usr', and recommended a 4th section for '/var'. Guessing the size requirements required SEVERAL retries of SETUP, each of which took hours before blowing up. I had copied the 1st CD ROM into an 'image' on my local FTP server, so I did the freebsd.org guys a favor by NOT transferring all of this stuff from them multiple times. I recommend THIS also...

Ultimately I ended up making an entire 3Gb hard drive into a BSD partition, because the partition manager couldn't handle having a 1Gb FAT partition on the same drive without causing a lot of WEIRD stuff to happen (namely I couldn't make a section for 'root' with the 'label' utility unless the partition was < 512Mb or the entire disk had been 'partitioned'). But this worked ok, with a config kinda like this: 512Mb for '/', 96Mb for swap, 512Mb for '/var', and the remainder of the drive (about 1.4 Gb) as '/usr'. Since SETUP puts nearly everything into the '/usr' partition that isn't "just the operating system", and temp files end up in '/var', this is probably a good configuration to use. But finding this - well, that was a bit tough, and required "all too much experimentation" to figure out.

After several tries over a 2 week period (mostly letting the thing run SETUP while I did actual work, and checked on it periodically) I finally ended up getting it to work reliably, and even managed to get X-Windows to be configured (this required some considerable hacking as the 'XF86Config' files were in several places, and the config apps used different ones than the X Windows server so I ended up making copies of the 'most recent' onto the 'least recent').

Once X Windows was running, though, I discovered a serious flaw: It is VERY VERY VERY SLOW!

So for an identical platform (486 DX2 66Mhz 32Mb RAM 'standard VGA' ISA), Windows '95 and Windows NT both LOAD FASTER, run applications faster, load HTML files faster, and respond faster and better to mouse drags and clicks than X Windows running on FreeBSD version 4.7 . In fact, I'd say it's a factor of around 10 to 1 on general performance.

Now I'm not trying to BASH FreeBSD when I say this. On the contrary, I find it a VERY useful tool in understanding *nix systems in general (which is why I set it up, so I could learn more about it by experimenting with my own *nix system, and do some basic software development work, use *nix source as sample code to understand certain processes better, and that sort of thing). But for a 'general use' operating system it has some SERIOUS drawbacks running on what I must call a 'benchmark' system (On a faster system, a PII 400 Mhz with 64Mb, XWindows performance is acceptable but not outstanding). Whereas Windows '95 and Windows NT 4.0 both had no troubles at all running on the slower platform AND delivering usable performance, XWindows running on FreeBSD 4.7 DID have a LOT of trouble and appeared to be severely hampered by its own internal housekeeping with respect to screen painting, moving and sizing windows, and even loading applications.


So I can only conclude that in this regard (the desktop GUI system), Windows-based operating systems are EASILY the winner, hands down, with respect to performance and usability.

But this does not mean that FreeBSD cannot BECOME a 'true competition' for NT-based systems.  What it lacks currently CAN be improved.  There is NO REASON why FreeBSD could NOT seriously compete with NT-based operating systems, especially with the direction that Microsoft is currently heading. Granted, Microsoft is a large corporation and devotes a LOT of its money to hiring the best and the brightest programmers, and then charges a LOT of money for the fruits of their labor, as opposed to FreeBSD which is FREE, and in essence is being written on a rather low budget by people who do so voluntarily or at minimal compensation. And therein lies the biggest problem. If FreeBSD (or any other flavor of UNIX) is to become viable, it must somehow make money for 'the best and the brightest' to devote their efforts to it.

In the mean time, there are specific things that it is lacking that need to be addressed. And once they are written, they can be maintained as 'open source' indefinitely.

Areas for FreeBSD Improvement (because I want to see it happen, that's why)

 

Related web sites

FreeBSD web site (get it if you want *nix)
SAMBA web site (for Windows networking)
MySQL Database
Unix vs NT web site
Origin of the word 'daemon' as applied to computing
History of UNIX before Berkeley
Using Interix - helpful tricks and hints for the Interix subsystem under Windows 2k/XP
UNIX Migration Guide - MSDN web page that documents a 'how to' between UNIX and Win32 - also a good reference migrating FROM Win32 to UNIX



Back to S.F.T. Inc. home page
©1998-2004 by Stewart~Frazier Tools, Inc. - all rights reserved
[ H.A.L. is to I.B.M. as V.M.S. is to W.N.T. ]
last updated: 6/02/2004