What they Are, What they Do and How they Do It

The computer is made by physical hardware, i.e. CPU, HDD, Memory, Graphics Card, Printer, Keyboard, Mouse, Network Interface Card and numerous other devices which can be connected via USB ports , Firewire, PCIe, PCI, etc..

Therefore, the programmer, when it’s developing a program has to know the characteristics of all the equipment with which it will operate, so that its program can interact with all the computer devices. The program should include other small programs that allow the computer to understand a keyboard, a mouse and a printer, at least. As already mentioned above, the computer is completely ignorant, was born this way, so you need to teach it anything that you want it to do.

But which keyboard, which mouse, which printer?

The programmer should ask this to his client before doing the program. Learn about the brands and models of all equipment with which his program will interact in his customer computer. Then he must contact the manufacturers of such equipment for the report on the set of instructions and commands for each device, so that he can build the programs to interact with them.

So, when it develops a program is to a certain computer with certain devices?

As described yes, it is. And when he wants to extend the same program to another computer, he has to add the same small programs for its devices, in order to have the same interactivity with them. If he wants his program to be a global one, then he needs to know all kinds of devices and have the small programs to interact with them. And he has to be constantly updating with additional new devices to interact with.

But this way, the developer loses more time with this type of question than with the program itself?

Indeed it would be, if what we have been saying were true. Let’s say that it would be a giant task impossible for a single programmer. The case would be even worse if we realize that interaction with these devices requires to sense when they request or are requested by the CPU itself, i.e. they must be listening who knocks at the door, know how to open it and how the visitor is headed.

This is one of the functions of OS: I/O (Input/ Output) device management.

It’s a task that the OS does in silence and in an anonymous way that we don’t even realize, presenting to the programmer abstract devices which he addresses without having to be bothered with all the aspects related with the way the real physical devices operate. Thus, developers can devote themselves to his true goal, the program and its specific purpose.

Computer devices manufacturers have agreements with OS developers, according to whom they produce the small programs for their devices and for each specific OS, so that it can recognize and interact with their devices.

These small programs are called Drivers, one name that must be familiar to almost all those who are reading this. The printer driver, gamepad driver, keyboard driver, etc.

How good is to link to the computer that elaborated Gamepad that we bought for better playing that game which we like so much, and realize that a few moments later the gamepad has all its buttons working and prepared to be configured to interact with that game. The game does even know the name of the gamepad and its characteristics. And its developer didn’t even know about the existence of such gamepad when he developed the game.

How good is to link to the computer that elaborated Gamepad that we bought for better playing that game which we like so much, and realize that a few moments later the gamepad has all its buttons working and prepared to be configured to interact with that game. The game does even know the name of the gamepad and its characteristics. And its developer didn’t even know about the existence of such gamepad when he developed the game.

What we have just described is typical of a plug and play device. This kind of device, when is connected to the computer notifies the OS about the necessary references for the OS to identify it and manage to find in their files or alternatively, on line, the drivers that teach it to deal with this new device. Sometimes these devices do even bring inside them, in a little flash memory, those drivers.

The latest OS no longer ask the user to insert the CD/DVD with the device driver. They assume the task to find it, because before they use it, they want to be sure of its authenticity. Important security issues are concerned, because those small programs will run in the exclusive part of the OS, the kernel. There are recent histories of computers infected by viruses that were in device drivers and thus penetrated into the OS kernel, getting access to the entire computer.

We will do our analysis mainly on the scope of PC (Personal Computer) OS, whose development is currently raising their CPU to the level of large machines CPU and their OS to evolutions for servers of great complexity distributed systems.

The OS that currently hold almost all the PC market are:

  • UNIX, together with their versions of Linux and Mac OS X and
  • Windows.

Curiously these two OS with the necessary evolutions also have a significant presence, although not as dominant, in professional systems.

The Operating Systems (we will denote it by OS) are an interface between the Hardware, the Software and the User.

Let’s break down this statement. The major functions of an OS are:

  • I/O devices Management, that show abstract devices to the user.
  • File management, the abstraction with which the user deals when he wants something from the Hard disk (we will denote it by HDD).
  • User management, ensuring that each user only accesses allowed files.
  • Processes management of, the designation given to a program when executing.
  • Address spaces definition, each process having its own space in memory.
  • The provision of graphic or command interfaces, which allow the user to easily perform complex tasks.

I/O Devices Management

This function has already been defined in the introduction. About the way OS is informed each time one of these devices wants to interact with a program, we’ll talk later when dealing with OS’s organization.

OS provide the user with an abstraction of any device, ready to be used by the developer through the simple use of the provided abstraction, no matter how they work, what brand or model they are, etc.

File Management

OS is also a user-friendly interface to the developer when dealing with HD. Try to imagine if the developer had to mention the CHS (Cylinder, Head and Sector) where a specific given data is in the HDD. It would be an impossible task, because he wouldn’t know how to deal with the HDD controller, whose complexity we already know from our journey through HDD world.

For this task the OS created the concept of file, the abstraction that you have to know about the HD when developing. Image, video, sound, text, program, etc., everything is in HDD as files. And files are arranged in archives similar to those humans use to store their documents.

The developer only has to specify the path to the desired file. The building, the room, the rack, the shelf, the briefcase, the separator where the document is and its name. Or rather, the root directory and the subdirectories mesh which represent the abstraction just described and finally the name of the file.

To organize data on HDD, OS uses File Systems, from whose we can mention a few, such as UFS (Unix), FAT (MS-DOS and Windows 9x), NTFS (Windows NT), HFS + (Mac OS X) and ext4 (Linux). File systems are what OS (referred in brackets after each of the file systems shown) use to organize and manage the files on HD. The complexity of file systems has evolved according to the capacity of HD, security issues and disaster recovery keeping its consistency.

In the last Chapter we examined how the HD is logically organized. We did even travel the path to a file on HD with the help of a hexadecimal editor.

OS and HDD

Certainly the great majority of those who are reading this work have already heard about DOS systems.

MS-DOS was the first OS sold separate from a machine, thus allowing any common citizen of the world to buy a machine assembled by anyone and work with it, without relying on proprietary preconceived solutions.

It is certainly the most well-known derivative from DOS systems, for it gave vent to people’s imagination, thus triggering the evolution of information to what we know today.

MS-DOS stands for Microsoft Disc Operating System and results of an evolution of one of the many DOS (Disc Operating System) existing, which Microsoft bought and modified at the request of IBM for its line of personal computers, IBM PC. For a decade (the 80’s) it was the OS for all IBM PC compatible computers and is the OS which introduced the FAT (File Allocation Table) file system, still in use for some devices, readable and interpretable by many OS.

We introduced DOS to draw attention to the designation of Disc Operating System, because the first OS were just that, systems to operate the HDD. The only interface it had was the command line, aka Shell and it was through its set of commands that developers and users accessed files in HDD to be able to work with them.

Therefore, dealing with HDD was always a task of OS.

When we refer a File System, we must realize the enormous complexity that represents its management, now possibly having more than 2 TB of information to index, ensure consistency, security, recovery and others.

Nevertheless, how easy it is to move one file from one directory to another through a graphical interface that the OS gives us. Just select it with the mouse and drag it from the source directory to the destination directory. And how much work of re-indexing and other is behind this simple gesture. As we have seen before.