Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I've got an assignment to complete where I compare two operating systems of equal vintage, however my instructor hasn't really given me much of a scope for this? He has basically asked for 2000-2500 words about the technical pros and cons of each OS, but hasn't really elaborated on what he's looking for.

I've identified the kernel, filesystem, and security mechanism utilised by each OS as the three most significant parts for comparison, however I'm not sure what else I could include. I'm only a couple of weeks into the course and the essay is due in a week on Friday (4th October) so it's not going to be too in depth, but a few more points of discussion would be helpful.

FWIW, I've chosen to compare Ubuntu 10.04 to Windows 7.

share|improve this question
    
Just an Idea, so I won't make it an answer: Bootloader, perhaps? While not part of the OS itself, it is an integral part. Also, I'd suggest drivers (kernel Modules under Linux, etc), and probably user management? Maybe some general stuff, like almost everything is a file on Linux... –  polemon Sep 20 '10 at 21:14
    
Shouldn't this have a homework tag? –  Billy ONeal Sep 20 '10 at 21:47
    
@Nifle: Why get rid of the homework tag? This is homework, and I think it would be good to mark it as such so that it can be treated accordingly. –  Sasha Chedygov Sep 26 '10 at 22:35
    
@musicfreak - Homework is a meta-tag it does not mean anything on it's own. The answer should be the same with or without the tag and thus provides nothing but clutter. –  Nifle Sep 27 '10 at 10:42
    
@Nifle: I disagree. I think homework questions like these should be treated differently, and the homework tag allows us to do that. It gives us the ability to say things like "Your professor might want you to say this" and gear the answer towards the OP's class, instead of just giving a general answer that may or may not be useful to the OP's specific case. –  Sasha Chedygov Sep 27 '10 at 21:37

5 Answers 5

up vote 4 down vote accepted

There's no one good OS, it depends on your requirements. As all answers are, it depends. Bulletproof OS is more important to a bank than to a home user who just wants to browse porn, err news sites (though with web drivebys security isn't nothing to a browser either) while the ability to have a browser is deathly important to home OS, but lacking it would actually be a feature of the aforementioned bulletproof OS.

  • Scheduler, how does it deal with loads.

  • Process isolation - can a rogue process bring down another app, or the kernel (an app could casue a kernel fault in Win3.1 and MacOS pre-X). Less of an issue now that the OSes you'd see now will have this, but you mentioned vintage OS.

  • Applications available for it. In the early Linux days, this was sorely overlooked. Why have Linux when you can't run anything. Sure your OS won't crash, you can't run anything to make it crash.

  • Hardware drivers available for it. If you need to connect to a scanner and your OS can't, it's not very useful.

  • Virtual memory implementation. How efficient it is will affect your app run times.

  • How big does it scale. How much memory, how many CPUs. If you need to do big loads, this is critical.

  • Stability. Does it crash? Do you need a reboot after?

  • API/ABI stability, can you target the OS and know you can still run things 5 years from now? There's still COBOL code munging billions of dollars using code basically 30-40 years old.

  • How easy to learn? This is why we moved to GUIs, easier to figure out what to do.

  • How many other people have it? Windows didn't succeed because of quality. Everyone had it because everyone else had it. You could work on one machine, and use apps on another machine. The one guy who learned the Windows trick became tech support for all his friends.

share|improve this answer
    
1. He's talking more about internal design than use -- things like stability and number of users have little to do with the systems' design. 2. isn't nothing -> isn't anything. 3. Virtual memory is handled in the hardware (and is thus handled the same way) in pretty much every OS (at least on x86 and friends). –  Billy ONeal Sep 20 '10 at 22:10
    
@Billy ONeal, the scheduler, process isolation, scalability, stability and ease-of-use are consequences of how the system is designed. –  trolle3000 Sep 20 '10 at 22:37
    
@trolle3000: I believe I didn't say anything about those. But I would disagree on ease-of-use -- the underlying kernel implementation has little to do with ease-of-use. –  Billy ONeal Sep 21 '10 at 1:36
    
@trolle3000: To clarify: Stability has more to do with how well the system is coded, rather than how the system is designed. A system can be completely stable, yet designed extremely poorly. Stability is a measure of how often the system enters an unrecoverable state. Design is how well the system can be understood underneath by humans. –  Billy ONeal Sep 21 '10 at 1:43
    
@Billy ONeal 1: OP is comparing OS's in general, not only kernels as per the first line of his question –  trolle3000 Sep 22 '10 at 10:38

I think you could include package management and software repositories too. Linux distributions offer very different approaches, yet each of them is totally superior to what Windows can offer.

share|improve this answer
    
I'm sorry, but I strongly disagree. I've never had Windows installer and friends randomly decide to break on me like is relatively common in Unix land, because Windows installer and friends don't need to resolve dependencies or maintain databases or do any of that kind of junk. If I had enough rep I'd downvote this for being Unix FUD. –  Billy ONeal Sep 20 '10 at 22:12
    
@Billy: On the contrary, the complete lack of a standard package management facility under Windows is a major usability problem (leading to every program having its own update detection mechanism, its own way of updating automatically or not, no reliable way to obtain a list of installed program, and most importantly no single “install program foo” command, ...). For a casual user, this is one of the most obvious differences. –  Gilles Sep 20 '10 at 23:10
    
@Gilles: Okay, next time yum or apt-get decide to crap all over themselves (I have had this happen many times with both systems) after a power failure, I'll come to you and have you look at it. ;) And for an Operating Systems class, you're going to care little about the user-facing point of things anyway -- OS is about design of the underlying kernel and such, not what the user is playing with. –  Billy ONeal Sep 21 '10 at 1:38
    
@Gilles: I know there are advantages to centralized package management, but there are plenty of downsides too. One can agree to disagree on things like this -- completely slamming one system or the other without justification is nothing but FUD –  Billy ONeal Sep 21 '10 at 1:41

You might want to add User Interface -- either shell (command line) or GUI's

share|improve this answer
    
+1 -- This is a significant difference between *nix and Windows land, particularly given that significant portions of Windows' GUI subsystems are implemented at the Kernel level. –  Billy ONeal Sep 20 '10 at 22:13

If you set aside all the bundled applications and focus on the OS itself, I think you will get more credit for insight. Most users today don't see the difference.

An OS provides an environment for applications (processes) to run. The UI (shell) and the apps that might come bundled with the OS, are just that - applications. Seeing that distinction should get you some cred.

Some critical features in providing a good environment for applications to run:

  • Hardware abstraction layer - a way to deal with files, memory, displays, and devices without each process needing to know details of the hardware.

  • Process Scheduling and isolation - Let processes share and utilize the hardware in an efficient manner, without being able to interfere with each other. for example: Windows 7 finally has IO prioritization. this means that a low priority task like virus scanning your entire disk should not be able to drag your whole system down when high-priority tasks like your database service or your Crysis game no longer have to wait in-line for the disk behind the hundreds of requests made by your virus scan. Instead those processes skip right to the head of the line when they need something from the disk. If done properly, there is no reason a high priority task should be in any way impeded by a lower priority task.

  • security - this is a big topic, but focusing on the core job of an "environment to run applications" the OS is responsible to enforce security between processes, other process and system resources. The OS can access features of the processor that enforce in hardware what memory a process can access, and what privileged instructions it can execute. see Wikipedia : "protected mode". Windows only uses ring 0 and ring 3, which means that bad drivers can still stomp on the OS, but user mode process simply cannot. Also things like USB DMA could be better. USB and Firewire devices can access DMA so a malicious device can read or write to any memory they want to This is partly a hardware issue but in my view something that the OS should have control over be able to protect you from. ASLR and other technologies mitigate this but don't eliminate the risk.

There is a lot of shocking security failures in most modern OSs. In the 70's the DOD commissioned a requirements analysis for what a secure OS would like like. They came up with a bunch of things we still don't have today for example simply turning the stack upside down so buffer overflows can't overwrite the return pointer. For extra credit dive in here.

Plenty of things to compare. Don't get sidetracked by the Apps (the GNU part of GNU/Linux) if the assignment is the OS. Also to get more then a "C" I would guess you need to at least mention tradeoffs between monolithic vs microkernel architectures.

share|improve this answer

Technically, there's little difference between the systems. NT just does a better job of hiding the internal workings of the OS than does Linux (or other *nix) systems do. That's not always a good thing -- some people like that they're seeing the virtual filesystem tree (which is just the normal Unix file system layout on *nix, and is the Object Manager on NT boxes) and other such things, but that's a matter of opinion.

I'm not really familiar with Kernel design, but there are significant differences between the DACL based security system in NT versus the UNIX Permissions used in most Unixen. Filesystem wise it's going to be harder to distinguish because both systems are built on top of various B-tree variants.

You might want to talk about differences in process models, such as the behavior of fork in unix land which is difficult to replicate and slow on NT boxes (more specifically, why it's difficult and slow on NT boxes i.e. that a Unix process is more akin to an NT thread)

share|improve this answer
    
The kernels are very different. Windows from NT forward is a microkernel design. It derives more from VAX than UNIX heritage. There's also a (getting smaller) amount of baggage from the Win3.1 legacy. Modern Linux is a monolithic single image in memory (though modular on disk) –  Rich Homolka Sep 21 '10 at 16:31
    
@Rich: Which is why I said I knew little about the kernel designs. ;) –  Billy ONeal Sep 21 '10 at 21:13

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.