Unix Functionality Vs Windows Functionality Discussion

[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

Windows has
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)
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)
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 :
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 suffers from :
Some of this is configurable in Win98. I'd be amazed if it wasn't in W2k or XP


Windows problems:

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.
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?
Unix has (which Windows doesn't)
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??



To help avoiding ThreadMess, please consider:



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,

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.

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


EditText of this page (last edited August 3, 2013) or FindPage with title or text search