Outline how an operating system hides the complexity of the hardware from users and applications.


Teaching Note:

Students should be aware of a range of examples where operating systems virtualize real devices, such as drive letters, virtual memory, input devices, the Java virtual machine.

INT Issue of localization causing compatibility problems between systems in different countries.


Sample Question:


JSR Notes:


A good way to frame this assessment statement point is to remember that one of the main aims of the operating system is indeed to cut down on the complexity seen by the user, and thereby making the proceess of using the computer easier and straight-forward. One way of looking at it is that it "dumbs down" the skills and knowledge needed to operate a comptuers. ***Do note, though that this is focused on hiding the complexity of hardware only, so do GUI elements which make our lives a lot easier by hiding behind-the-scenes complexity.

So for example, the user need not know whether or not the memory that a particular application is using is real (RAM) memory or virtual memory - it's like the OS is saying "No, no, don't worry about those details, I'll handle that; you just go about what you were doing..."


(Teaching Note example 1:) Drive Letters

What is meant by "drive letters" in the teaching note is simply the C: or E: that we see representing our hard drives or other devices on a Windows computer. The hard drive (the prime hard drive of a Windows maching is usually called the "C" drive) is a very complicated piece of equipment, and the organization of its data is quite sophisticated, but all we need to know/see is it's name "C", and the name of the folders and files as represented to us in the Windows Explorer (or indeed in the Mac Finder).

Furthermore, you may see "C" and "D" and "E" drives, but they may all be on the same hard drive, or separate ones, it doesn't matter to you. All that matters to you is that you have your System files on C, your music on D and your server on E asdfasdfasdfasd.

And in fact, the physical organization of the data on the hard drive of comptuer is not as it is logically communicated to us - in a simplified, ordered way in the Finder. Such things as the File Allocation Table, all the various pointers and addresses, the fragmented nature of files, and so on, are not what we see when we open a Finder window; that complexity is all hidden from us. In fact, there are many System files theselves which are hidden from us, and we must know some Terminal tricks to show them. Even the System Library is now, by default, hidden from Mac users (though you can simply hold alt and click on the Finder Go menu to access it). All we are shown is the folders and files we are likely to use, such as applications and data files. And actually, in terms of complexity hiding and "dumbing-down", the Mac dock is about as simple, and stripped down a representation of (in this case) applications on a computer as you can get.


(Teaching Note example 2:) Virtual Memory

We have dealt with virtual memory in another earlier assessment statement. Recall that virtual memory is "virtual" in that it is not real RAM, but as far as the user can see it is RAM. So here we are talking about the memory being used to store running applications and open documents, rather than storage. But it's actually the storage device (hard drive usually) that is being used as the virtual memory.

When the real RAM starts to get full, certain parts of applications and open data documents can get shifted into a part of the hard drive which is relatively fast. Still, virtual memory will never be as fast as real RAM memory.

But the point here is that the OS hides the fact that it is the hard drive being used as (RAM) memory along with the real RAM.


(Teaching Note example 3:) Input Devices

I think what they mean here is that when you plug in any peripheral, the OS looks after it. We don't have to install and deal with drivers to work with input devices such as a mouse or joy stick; the OS has the ability to handle such input peripherals.


(Teaching Note example 4:) Java Virtual Machine

The "Java Virtual Machine" is a unique and complex way that the programming language Java uses to get around having to have a different version of an application compiled for each operating system. Rather, the higher level Java program is only "half-comiled" to a generic form called byte code. Then, via specific (software) virtual machines installed on specific computers, that byte code is further compiled to its final maching code state of 1s and 0s which can be read by the specific architecture of a specific comptuer - Windows, Mac, Linux, or whatever.

So getting to the point of this assessment statement, the fact that all of this is happening behind the scenes does not have to bother the user - it is for all intents and purposes hidden from them (once they first install Java on their machine).

Brief summary of the Java Virtual Machine Process

1. When compiling a Java program, it only compiles to a general/generic form, called byte code.

2. Then, the indivual machine (either Mac, or Windows, or Linux, etc.) uses it's Java Virtual Machine (which is actually software, not another computer) to translate the code into commands that particular machine can understand and execute.



Other Hardware Examples:

RAID - "Redundant Array of Independent Disks". A RAID is a combination of several hard drives to accomplish one of two things, or both: backup where the same data is on two different drives, and stripping, in which data is divided between two drives, so that both reading and writing take half the time.

The RAID hides the fact that you have 4, for example, hard drives (mirrored and stripped), because via your operating system, on your desktop, you just see one.

(Though, is it the RAID controller hiding the complexity or is it the OS?? Both probably.)