Advertisment

Inside your OS

author-image
PCQ Bureau
New Update

Have you ever wondered what really goes on behind all the
windows on your desktop? Whether you’re using Win 98 or NT, Linux or just plain old
DOS, the operating system forms the crucial link between you and your computer. In this
article, we’ll explore how this complex piece of software works.

Advertisment

The operating system (OS) sits between your hardware and
the apps on your machine. Whenever you open a file in Word, for instance, the operating
system is responsible for locating the file on your hard disk and supplying it to Word. If
you’re playing a music file, the OS sends it to the sound card, which in turn plays
the music on your speakers. Whenever you’re playing a game, it’s the OS that is
pushing the graphics on to the display card. In short, almost everything you do on your
system is controlled by the operating system.

The kernel

kernel.JPG (13602 bytes) align="right" hspace="5" vspace="5">At the heart of an
operating system lies the kernel. This part of the OS works like a manager of your system
resources. It controls the various devices attached to your computer, supervises the
programs running on your system, and allocates system memory among these programs.
It’s also responsible for managing the files stored on your disk drives.

Advertisment

The kernel is segregated into several subsystems including
input/output, process management, and the file subsystem. The input/output subsystem is
responsible for communicating with the devices attached to your computer. The process
management subsystem handles the apps running on your computer. It allocates memory to
your programs, sees to their communication requirements, and handles multi-tasking and
multi-threading between the programs. The file subsystem manages the files stored on your
system. It’s responsible for all permanent storage including your hard disk, floppy
disks, CD-ROM drives, and so on.

Another major component of an operating system is its user
interface, which may be graphical or text based. GUIs first originated at the Xerox PARC
Labs and since then have been adopted by almost all operating systems. The Windows OSs are
well-known for their GUIs; Linux and other Unixes usually come with the X Window System,
and even real-time operating systems like QNX come with some really neat GUIs. Since the
GUI is a highly complex piece of code and covering it is a task unto itself, we’ll
not undertake that here.

Booting up

Advertisment

Before we take a closer look at each of these components,
let’s see how an operating system starts itself. This is a systematic procedure,
which is best explained in a step-by-step manner.

  • When the system is switched on, a program called the BIOS
    (Basic Input/Output System) activates itself. This program is permanently stored on a ROM
    chip in your computer and is responsible for coordinating all the hardware components on
    your computer.
  • The BIOS looks for a program, a bootstrap loader, loads it
    into memory and executes it. This program usually sits on the hard disk that contains the
    operating system. The bootstrap loader locates the operating system’s kernel and
    executes it.
  • Advertisment
  • Upon starting, the kernel initializes the operating system
    services, and finally proceeds to activate the graphical user interface.
  • Now that our operating system has booted, let’s see
    how each of its more important subsystems do their work.

    The input/output subsystem

    Advertisment

    All peripheral devices attached to your system communicate
    with running applications through the I/O subsystem of your OS. When you’re typing a
    letter in a word processor, the keystrokes travel from your keyboard to the I/O subsystem
    and then to your word processor. While downloading a file from the Net, the modem is
    actually sending all its data to this I/O subsystem.

    A device driver is a part of the I/O subsystem which
    actually communicates with a device. Each device has its own device driver. For example,
    your video card has its own device driver, so does your sound card and your modem. Right
    down from your floppy drive all the way up to your faster-than-lightning 3D accelerator
    card, all devices on your system need their respective device drivers to be able to do
    their work.

    Whenever an app needs to communicate with a device, it
    sends a request to the operating system. The operating system in turn passes this request
    to the appropriate device driver. The device driver converts the request into machine
    language instructions directly understandable by the device. It then sends these
    instructions to the device. If the device returns some data, it passes it back to the OS.
    The OS then returns this data back to the app.

    Advertisment

    Let’s take a simple example to illustrate this. Say,
    you want to play an MP3 file on your brand-new sound card. The MP3 player decodes this
    file converting it into a sound signal, which it sends to the operating system. The OS in
    turn sends this signal down to the sound card’s device driver. This device driver
    knows how to handle the signal and tells the sound card to play it on your speakers.
    It’s that simple!

    Some operating systems like Unix use special device drivers
    for accessing system memory. Yes, that’s right, these operating systems don’t
    access your oodles of RAM directly, opting instead to let device drivers do all the work.

    The process subsystem

    Advertisment

    Arguably, the most important component of an operating
    system, the process subsystem manages all the apps that you run on your computer. In
    operating system parlance, a program that is running on your system is known as a process.
    When you double-click the Quake II icon on your Windows desktop, the OS first locates the
    program file quake2.exe on your hard disk. It then proceeds to load the file into memory
    and pass control of it to the process subsystem.

    The process subsystem is responsible for running this
    process along with all the other processes that are already executing. In other words, it
    has to multi-task all these processes. To do this, the process subsystem first creates a
    context of the process, which stores the address of the process the status of all its
    variables and lots of other related data.

    That done, another part of the process subsystem, the
    process scheduler, kicks in. The scheduler goes through all the processes on the system,
    running each one for a small amount of time, known as a time slice. Upon expiry of this
    time slice, the scheduler saves the current state of the running process into its context
    and switches to the next process on its list. This is how an operating system generally
    does its multi-tasking.

    The process subsystem is also responsible for protecting
    the running processes from each other. No, they don’t generally go attacking each
    other, but sometimes a process may accidentally try to write into memory belonging to
    another process. If such a thing is allowed to happen the system would stop working.
    Incidentally, this is what happens with many buggy applications.

    When you drag and drop a file from your desktop onto the
    printer icon, you are engaging in a very high level of inter-process communication.
    Whenever two processes need to talk to each other, the process subsystem manages the
    conversation. Many different methods of such communication are available, including
    signals, semaphores and sockets. The Windows operating system use the rather popular
    object linking and embedding (OLE) protocol, which allows you to drag and drop objects
    between running apps.

    Last, the process subsystem controls your system’s
    memory, allocating it to processes, freeing up unused memory, and managing virtual memory.
    Virtual memory is a technique of tricking processes into thinking that they have more
    memory than actually exists on the system. Imagine for a moment that you’re playing
    Unreal and you land up in a very complex level. Unreal requests the operating system for
    more memory to process the associated information, which is not available. Instead of
    returning an error, the process subsystem moves another app out of memory and gives Unreal
    its memory.

    The file subsystem

    Every time you open a file in Word, the file subsystem
    looks through your hard disk, locates your document and sends it to Word. Thus the file
    subsystem is responsible for organizing files kept on your hard disk, on your CDs, and all
    the other permanent storage devices that you use.

    A file system is a particular way of organizing files on a
    storage device. Compact disks use the ISO 9660 file system; Windows series of operating
    systems use the FAT16, FAT32 and the NTFS file systems; Linux uses the Ext2 file system.
    Any modern operating system usually implements support for all these file systems, along
    with supporting its own file systems.

    The file subsystem coordinates with the I/O subsystem to do
    its job. That is, it cannot work with the various storage devices on its own. As
    you’ve already seen, the I/O subsystem is responsible for talking to these devices.
    Therefore, the file system sends its requests to the I/O subsystem, which does the actual
    communication with the various storage devices.

    By now, you should be generally familiar with the essential
    parts of an operating system and how they work. Do remember that operating system design
    is an area of specialization in computer science, and makes for fascinating study. There
    are several good books available that discuss operating systems in detail. If you want to
    learn more about this topic, I’d suggest you head for your local computer bookstore.

    Advertisment

    Stay connected with us through our social media channels for the latest updates and news!

    Follow us: