Layers Of Abstraction
All modern Windows PCs are structured by using numerous layers of abstraction. A layer of abstraction can be roughly explained as a way to translate details of a specific functionality. As you’d expect, an Intel processor sitting on your desk has no way of running an operating system. There is no interface, there is no hardware connecting the processor to other components, and there is nothing translating the high-level programming languages used to code an operating system into low-level 1s and 0s understood by the processor.
That is where layers of abstraction come in. There are five basic layers. All of them are important, and although they are listed here from the lowest to the highest level, the terms "lowest" and "highest" should not be considered an implication that some layers are more important than others.
Hardware is simply the physical electronics in your PC. Hardware usually cannot accomplish any tasks by itself, because without at least some form of firmware, there is nothing telling the hardware what it needs to do.
Hardware is important for determining what basic operations are possible, however. For example, there are many hardware connections on a motherboard which allow different pieces of hardware to transmit data between each other. If any of those hardware lines were cut off, then the computer would not be able to operate properly. And as you’d expect, a PC cannot perform any function which its hardware does not support. For example, you cannot have wireless on your PC without having a piece of hardware on your PC which is capable of transmitting and receiving a wireless signal.
Firmware is a relative of software, but unlike software, it is written as a low-level language and incorporated directly into a piece of hardware through the use of on-board memory, such as a ROM or flash memory. Firmware is different from software because it is essential to determine how a device operates. For example, when a hard drive receives a command from the higher levels, it needs to know what to do with that command. If that data is not available, then the hard drive will do nothing. This is different from software. A piece of software may be critical for accomplishing a specific task, but it is not critical to the operation of the PC’s hardware.
Firmware is a layer of abstraction, but it is common to find situations where firmware does not work with higher layers of abstraction. For example, a TV remote control has firmware that determines what happens when you press a button, but most remote controls don’t have an operating system capable of running specific applications or a kernel that decides how to load applications into the remote’s memory.
The assembly language is the code that is understood by a specific piece of hardware. It typically consists of extremely simple instructions which are determined by the manufacturer of the hardware. These simple instructions are different from one piece of hardware to another, so there must be some way of translating the commands sent from an operating system into specific commands that a given piece of hardware can understand.
That is where the assembler comes in. The assembler takes the high-level instructions sent from the kernel and translates it into the assembly language which is understandable by the hardware. At the lowest levels of a processor, for example, this code is the object code that most people have seen in pop culture at one point or another – a string of 0s and 1s.
Deep down inside every operating system there exists a kernel. The kernel is the piece of software that exists between the operating system and the firmware and hardware of your computer. The kernel is an incredibly important part of any operating system, because it is effectively responsible for translating tasks that the user asks the operating system to complete, into information that the assembler can use.
The Windows kernel is also responsible for deciding how hardware resources should be allocated. Let’s say, for example, you load up a few browser windows, Microsoft word, and a game of Minesweeper. The kernel decides which programs should be given to which processor core and which programs take priority when the processor executes code. The kernel is also responsible for allocating memory, and in the case that the available memory is less than the memory demanded from all programs currently running, the kernel decides which programs take priority. Finally, the kernel manages devices such as hard drives and even keyboards, and maintains a list of which devices are currently available for use. If the kernel does not have information about what a device is, the device can’t be used.
The Operating System
The Operating System is what you’re using currently. It is the basic user interface. It provides an interface filled with easily understandable commands, which are then translated by the kernel and the assembler into the data that the hardware can make use of. Without the operating system, it would be nearly impossible to get anything done, because commanding the computer to perform tasks would require intimate knowledge of a programming language that the kernel can understand. Also, because you’d be performing tasks at a very low level, the concept of software would become unrecognizable.
Beyond providing a user interface, the operating system also is important because it provides the basic services needed for programming applications. For example, the Windows operating system provides a number of basic services commonly used by applications, such as a file system which determines how data is written to and read from the hard drive. Because this is included, individual applications do not need to deal with this detail, which would be difficult to implement in any individual application.
This is a very basic review of how a PC is structured and how the various pieces of hardware, firmware, and software work together to allow you to perform tasks like browsing the Internet. The topic is in fact incredibly complex, which is why it is covered by the academic field of Computer Science. Since it is an academic field, there is plenty of research available for fleshing out the details. Wikipedia is as good of a place as any to start, as even the summaries provided on that website take some time to understand.