[Please see EquivalentFeaturesOnWindowsAndUnix when you tire of the ThreadMode]
This page is meant to collect stuff which eventually is to be refactured into OperatingSystemComparison?.
ReligiousWar? Or distraction from the current global obsession?
Please read the title carefully. We are trying to compare functionality not things we like or dislike.
A few initial points
- On this page we shouldn't try to say that one of these operating systems is generally better than the other. Let's compare features and find arguments for the importance of discriminating features.
- Windows is 2000 or XP for the purposes of this page. The comparison of Unix with Windows versions which aren't NT-based doesn't make much sense.
Windows has
- a GUI - surely the most notable difference and the one that lead Windows to desktop
- GUI and F1 help, which replace man pages
- a shorter LearningCurve, relative to Unix
- CygWin - An easily-installable set of tools that make Windows more Unixy.
- More advertising and marketing tie-ins than can fit on 2gig partition. As well as a large number of gratuitous incompatibilities with previously extant software.
-
- Please put this more constructively. Right now, it's wrong (it doesn't require a 2Gb partition, and UNIX has hardly been perfect on incompatibilities - ask anyone who went through the SunOS->Solaris transition)
- builtin spyware Explain? might not be a good term but a disabling feature based on system differences which might be in the XP version of windows is definitely not a GoodThing. Why does an operating system have to disable an operating system based on hardware configuration?
Windows has built in enterprise features:
-
- Unix has threads, but they are implemented as processes that share their parents address space and other resources. They are functionally equivalent. Not really Unix is processes first, threads second. Visa versa for Windows. I don't understand what you mean by "first" and "second" here. Although they may be implemented in a different way, Unix and Win32 threads are almost identical, give or take different abstractions for asynchronous notification.
-
- Benchmarks show that Linux has faster networking than Windows on the same hardware Got a reference? Last ones I looked at showed the reverse (because of a flaw in Linux which no doubt has been corrected, but Windows networking is pretty good now)
- IIS (Is this really built-in, or is it just pre-installed?) furthermore, is this really a feature? We replaced IIS with Apache on our MS boxes, and haven't looked back. Why? IIS is growing in popularity in comparison to Apache. See www.netcraft.com.
- COM
-
- There are many CORBA implementations for Unix COM is built in - you do not have to deploy it. CORBA is bundled with most Linux and BSD distributions, and is a fundamental part of the GNOME desktop, which is going to be shipped with Solaris and HP/UX.
Windows
doesn't have :
- following properties of named pipes:
- Named pipes can be created and used from the user inferface of the OS (Windows: Windows Explorer, Unix: shell?)
- Named pipes can be created and used by scripts using the scripting technology which is typical for the OS (Windows: Windows Scripting Host, Unix: shell, tcl, ...). (See mkpipe, mknode -p, mkfifo)
- The name of a pipe can be any path which could be the name of a normal file in the file system.
-
- Explanation why named pipes are important:
-
- There are some significant products (like database engines in case of an export/dump) that generate tons of data, and can't throw it to the stdout, they have a filename in a config somewhere and they write it sequentially to that filer. And you want to take that data and feed it to another program by using a pipe, for example (gzip, bzip, tar). Because you can't modify the source program you have to create a named pipe in the file system, and let the source program write to that pipe and the destination program can read from there (you can't use the | redirector because the source program does not write to stdout). Unless I am mistaken (and I am very curious to know if there's a solution), you effectively cannot do that on Windows, so if you have for example to export some GBs of data from a database in compressed format, you effectively have to use a temporary file in the file system thus ruining performance.
-
- In Windows, pipes live in the global namespace, under the directory \\<server-name>\pipe\. To open a pipe on the local machine, pass a filename like "\\.\pipe\my_pipe" to the CreateFile? or CreateFileEx? function. You can also open pipes on another machine and send data across the network. This is all described in the API documentation.
-
- Do I have to create a .c file and find a compiler , so that I can create a pipe ? But after I do that, can the file be used like any other by an aplication that uses fopen(...) ?
- Windows doesn't have a reasonable way to delete a file that is currently in use. This is the primary cause of the needless reboot plague. And since this one is a kernel-level limitation, there is no way to write a library that gets around it.
- Windows doesn't have a select()-like system call that can take 1000 handles, leading to lots of complicated design patterns involving many threads that are completely unnecessary on a UNIX system.
Windows suffers from :
- swapping algorithm that takes bad decisions which processes to be swapped and when and whether to be swapped at all. I've seen the bloody OS swapping completely unnecessarily (i.e. there was plenty of free memory around). What is more funny is that it refuses to let go of the enormous amount of memory it uses for caching , in order to avoid swapping, insofar that it's swapping because of caching (and probably it's doing caching on the swap file).
- Nowhere to configure these things.
-
- Some of this is configurable in Win98. I'd be amazed if it wasn't in W2k or XP
- Read Inside Windows 2000 for further details.
Windows problems:
- Security could be improved
-
- Windows NT and 2000 has an excellent security model -- much better than that of Unix. Explain. However, what Windows suffers from is a dreadful user interface to security management. In Unix you can work in an unprivileged account and easily launch programs with higher privileges. In Windows, you have to log out and log in as another user to get higher privileges. This is so inconvenient that many people work with higher privileges than necessary to avoid constant logging in and out. Windows 2000 has a "runas" command and an Explorer menu item for running programs from the command line under a different user id. However, this functionality is disabled in Explorer by default and can only be enabled by changing undocumented registry entries! Also, a lot of functionality that you'd want to run with different privileges is implemented by DLLs (e.g. control panels) or as explorer plugins and so cannot be run as another user. Also, their much-vaunted UAC dialog, which is basically gksu or kdesudo MS-style.
- Unstable environment. It completely changes every 5 years leaving lots of obsolete applications, requiring countless man-months of effort to re-port to the latest release, and an incredible amount of deployment support.
-
- 5 years! Your business doesn't change in 5 years?
-
- Interesting comment. So you agree that the business needs should drive the pace of change in a business? And not enforced OS obsolescence?
- Unstable user interface. From 2003 to 2013 Mac OS X has barely undergone through any significant GUI changes, Linux's GNOME and KDE only did one... and Windows went from Windows 98 with a fancy blue plastic-like skin (Windows XP), to a spiffy glassy GUI with tons and tons of interface overhauls (Windows Vista and 7), to making your PC look and feel like a Windows Phone smartphone/tablet (Windows 8).
Unix has (which Windows doesn't)
- robust, secure, built-in remote administration features (ssh, shell scripts) - What about terminal services? Our security manager has major concerns about terminal services (and we're a 100% Windows shop). I don't think they count as secure (yet)
- a choice of GUIs - None of which are very advanced in the respect that you'll still need to go to the command line for many things
- looong up times
-
- Windows 2000 and XP have very good figures in this area - perhaps only BSD is significantly better
-
- BSD isn't even close to the best Unix in this regard. 2000 and XP haven't even existed for the lower bound length of time I would find acceptable for a stable unix, so their figures are unknown. I have an AIX server that has been up for nearly 6 years, just for a data point.
-
- 6 years! Must be slow by todays standards? What do you use it for?
-
- May be this should go on a page UnixVsBsd??
- OS versions released by the manufacturer, rather than ad hoc OS changes performed by every application program install.
To help avoiding ThreadMess, please consider:
- Avoid writing long, signed contributions. This way people can come back in and RefactorEmotions or split comments up into more manageable pieces.
- If you are tempted to counter-argue inline, consider filling in WindowsIsAsUsableAsUnixMyth? (or some other opposing page) rather than trying to intermix the opposite opinion on this polarized page.
I disagree with the premise: I don't think I've heard many people claim Unix can do a lot more than Windows. I would say it is more a matter that Unix is more stable, flexible, and transparent than Windows. See NealStephenson's InTheBeginningWasTheCommandLine for more about trade-offs with Windows and other GUIs.
I find the arguments at the top of this page somewhat unbelievable. They either come from someone who has not used many unix systems, or is simply trolling. We're all grown ups here and we know there are horses for courses - so don't argue here about which is better. Instead,
- think about what features you want in your operating system and choose the one you need.
- If you think 'my system needs something your system has', then beg, borrow, create or steal the feature. Be our guest.
- If you think 'my system has something that your system needs' please use the space below to tell us all how to get psychic abilities.
I often hear that Unix is better for the Enterprise because it has stuff that Windows doesn't. I often get the impression that the person saying it has only used Windows 98. They often say Windows falls over easily which is also crap.
Having said that the page is supposed to be a comparison rather than a discussion. Admittedly my title could be better.
My critical comment on the start of the page was aimed at the way the initial 'Windows has' list lists things as if 'unix' (which one) didn't (for example) - 'a gui' (so X doesn't count?), gui+context-sensitive help (xman, and context sensitive help requires per-app support in both environments), a shorter LearningCurve for what (again its a horses for courses thing.), and cygwin(!!!) (this is why I thought you were trolling) - an imitation of a posix environment put there to work around the poor windows CLI, which is missing lots of the tools you would expect on a unix box (eg most of the networking support), and which adds the LearningCurve of unix to that of windows??? What's your point? Also, you then go on to arguments for a desktop OS with arguments for an enterprise OS.
If you want to do a direct comparison, fair enough; provide a table of things in the Windows world you want comparisons for and space beside each for someone to fill in a unix equivalent. And to avoid the inflammatory title, and inevitable pissing match, you could call it EquivalentFeaturesOnWindowsAndUnix.
I stand by my argument that you shouldn't, err... argue. Did that sentence make sense? ;o)
Now we're just arguing about why we should or shouldn't argue. LOL.
GUI is essential on an EnterpriseOperatingSystem IMHO (Why do you need a GUI on a server? If you have a network transparent GUI such as X, you don't need to install the extra hardware and software required for a GUI on your servers.)
Better networking support? Explain what is missing? This is exactly the stuff that I wanted to get at!
(Are you talking generally or CygWin?) BTW I didn't add the CygWin comment.
<RefactoringVsDeletionDiscussion?>
Prediction: this page is going to turn into ThreadMess before the end of the day.
It has. I started it I'm ashamed to admit. It adds nothing to wiki. Votes to delete?
For: 3
Against: 2
Don't delete, refactor. Rename this page to something less inflammatory (perhaps OperatingSystemComparison??) and organize all the facts you can find here (even if you disagree with them) on that page. Leave the opinions and discussion here for eventual deletion. Search Wiki related pages and include them as well. (Try http://c2.com/cgi/wiki?FindPage&value=Operating) With luck, and your gentle refactorings, the page will turn into a nice collection of erudite topics such as microkernels, kernel threads, scheduling algorithms, windowing systems, hardware abstraction layers, and other fun things. -- JimLittle
You would delete a lot of pages with good information on this wiki if the only basis was that it has created a long thread and isn't main topic material, it is about computing and the history thereof - a wiki topic to be sure, let the discussion continue!
Long threads can be refactored, with a lot of elbow grease. Off-topic stuff can be ignored, with the expense of eventually scaring off interesting contributors. OS flame wars, however, are harder to remove. That's why they're best held on forgetful media, such as UseNet. We all need to do everything we can to keep this place collaborative, so I'm doing my small part today: Voting for the removal of this page.
What just keeps you from ignoring it? There are other pages on this wiki of similar nature. Without voting to delete. A discussion of pros and cons of different operating systems is collaborative, it is a classical method known as Strengths/Weaknesses. When all the strengths/weaknesses are exposed, the strongest is the most likely candidate. And as far as UseNet, I don't UseIt?. And harder to remove - delete doesn't sound like a difficult method.
</RefactoringVsDeletionDiscussion?>
As a long time Windows developer with some, lesser experience with Unix, I will provide the following observations.
- Unix provides better remote management, expecially over low speed connections. Command lines stay responsive under 56 KBaud and slower links; remote GUI displays become almost unusable.
- Unix shell scripts are often an easy way to automate a repetitive task. The closest Windows equivalent often requires a Visual Basic program. Or a port of a UNIX tool, such as perl
- Windows GUIs are often more efficient for batch operations than Unix command lines. Copying or moving a set of files is tedious and mistake prone under command line FTP, but straight forward under Windows Explorer. (This depends on whether you can get the GUI to select the right set of files, and how non-fatal errors are handled. "Sorry, can't copy file 3 of 13657 because it's in use! Aborting." When it's easy, yes, it's real easy, when it's hard, sometimes you end up dragging files over one by one. That said, Unix isn't devoid of GUI file managers and FTP clients.)
- Windows program installers (InstallShield, etc.) have less room for user error than Unix archive files. Both can be equally as fatal when an error occurs.
- The Windows copy/paste buffer is extremely powerful. I don't know of a Unix equivalent. X on UNIX has a copy/paste buffer Windows copy/paste/drag/drop mediation has a lot more to it than just a text buffer. On a copy/drag, one can make a promise to deliver various standard or custom formats of data in a variety of delivery mechanisms. No data need actually be copied until the user pastes/drops, at which point the receiver can negotiate for the type (text, picture, file. etc.) and form (handle, file, stream, COM object, etc.) of the data it wants. Very very flexible. Does KDE or Gnome have a model closer to this?
- Yep, it sure does. There is a 1980s version of X11 copy/paste that does not do that, and which in fact has a strict small limit on how much text can be copied/pasted, but that has been obsolete for years (although unfortunately some apps still insist on using that one). The 1990s copy/paste, and the drag n' drop standard protocol (the latter admittedly took a long time to become standard) does exactly what you describe. See QT documentation, for instance, for clear description.
- Early Windows and MS-DOS could be managed by an informed user. Unix and Windows NT and beyond really require a dedicated system administrator.
- Unix provides a great deal of backwards compatibility. I can often take scripts and programs from 10 years ago and run them almost unmodified on new systems. Windows is always jumping to the next big thing and obsoleting its past. (Windows actually goes to a lot of trouble to retain compatibility with older apps. Windows XP should still run most 16-bit apps designed for Windows 3.x.)
I hope this can serve as a strawman for discussion and I am curious to see the viewpoints of those more Unix savvy than I.
-- WayneMack
Hmmm, last comment sometime in 2007 suggests this is a dead horse. Too bad - as a Windows jockey looking to port a unix app that used pipes as noted near the top of this I immediately learned something useful. Anyway, my contribution:
Windows has IOCPs. Not only does this make for efficient multithreaded i/o processing (the usual use), an MS extension to the concept allows the IOCP mechanism to be used "internally" for inter-thread messaging. Thus a worker thread sleeps at an IOCP that may or may not also be tied to some hardware I/O, but in any case I can post a token to it (along with quite a lot of associated information, as required) from another thread, at which point the IOCP wakes up and my selectcase switches on the token (which may be a completed read or write, or a "do this" message), does what I need the thread to do at that instant, and loops to wait at the IOCP. The ultimate semaphore or event wait because I can send it more information than just "hi, wake up", put a whole bunch of related actions in one place to share commonalities, etc.
OT someone pointed out that the architect of NT had previously designed VAX/VMS. Might make a few people give it a tiny bit more respect, assuming it's true.
See also OperatingSystemComparison? WindowsVsLinux EquivalentFeaturesOnWindowsAndUnix
CategoryOperatingSystem