Take the 2-minute tour ×

How much hardware understanding does one need to fully comprehend "Operating System" and "Computer Architecture" courses one takes as a computer science student?

share|improve this question
To clarify, it sounds like you're asking how much hardware understanding you need to fully comprehend "Operating System" and "Computer Architecture" courses you will take as a comp sci student. Is that correct? –  Mike Caron May 14 '09 at 13:48
@yx: I think he's asking whether you need to understand hardware in order to understand stuff like operating systems and computer architecture. I'm not sure, though. It's a very cryptic question. –  Welbog May 14 '09 at 13:49
@mike that makes a lot more sense, for a second there I thought he was treating OS as hardware –  z - May 14 '09 at 13:49
add comment

6 Answers

up vote 2 down vote accepted

Two thoughts:

First, everything is going parallel. Multi-threading is one thing, multi-core is another. There are oodles of issues around caching, memory architecture, resource allocation, etc. Many of these are 'handled'' for you but the more you know about the metal the better.

Second, number representations in hardware. This as old as computer science itself, but it still trips everyone up. Not sure who said this, but it's prefect: "Mapping an infinity of numberrs onto a finite number of bits involves approximations." Understanding this and numerical analysis in general will save your bacon time and again. Serialization and endian-ness, etc.

Besides, it's fun!

share|improve this answer
add comment

At that level, the more you know the better, but the bare necessities are boolean logic design for computer architecture. Understand how do you design registers, adders, multiplexers, flip flops, etc. from basic logic units (and, or, clocks). You can probably understand operating systems starting from basic understanding of ASM, memory mapped IO, and interrupts.

EDIT: I'm not certain what you mean by "hardware", do you consider logic design to be hardware? Or were you talking about transistors? I suppose it wouldn't hurt to understand the basics of semiconductors, but architecture is abstracted above the real hardware level. I would also say that operating systems are abstracted above the architecture.

share|improve this answer
add comment

At the very basic level, you should know about Von Neumann architecture and how it maps onto real-life computers. Above that, the more the better. And not just the OS - in garbage collected & VM languages, how the heap, stack and instructions work and are executed, so you know what will perform bad and how to improve it to get the best out of the architecture.

share|improve this answer
add comment


share|improve this answer
yes, but your analogy is not completely correct. Computer architecture is about computers as (insert some telescope design field) is about telescopes. –  z - May 14 '09 at 13:53
An appropriate quote, as long as it is not interpreted the wrong way. An astronomer who knows nothing about telescopes would be unlikely to excel in astronomy. –  e.James May 14 '09 at 13:56
Exactly that's the point. If you don't know how your telescopes work, the physics behind it, its features and limitations, well you are a very poor astronomist then. –  Tamas Czinege May 14 '09 at 13:58
What about the radio folks? What about the theoreticians? What about the mathematical modeling of orbits and positions? Telescopes have nothing to do with that. –  S.Lott May 14 '09 at 14:22
@S.Lott: Even though the physics of telescopes don't control their work, the operation of telescopes informs the history of their science and the sorts of observation they can make about the world (what's a theory that can't be falsified?) I think it's a good analogy to why hardware is important for computer scientists to understand. –  mquander May 14 '09 at 14:27
show 1 more comment

It helps when you are trying to optimize for the hardware you are targeting. Take a hard drive for example, it helps to write software that takes advantage of locality to minimize seek time. If you just treat a hard drive as 'it works', and stick files and data all over the place, you will run into severe fragmentation issues and result in lower performance.

A lot of this is taken into consideration when designing an operating system since you are trying to maximize performance. So in short, learning something about it can help, and certainly can't hurt in any way.

share|improve this answer
add comment





share|improve this answer
add comment

Your Answer


