Operating System 101 – #1 (Definitions)

Warning: I have prepared an article for those who want to gain basic knowledge about operating systems, with the aim of highlighting the beauty of the subject. I believe that it is far from being too technical. Therefore, there will be obvious shortcomings in the points that touch on the technique. However, please point out the missing and/or incorrect points you see and let’s make the necessary corrections. We will learn about OS for a lifetime!

Bu yazı Türkçe dilinde de mevcuttur: İşletim Sistemi 101 – #1 (Tanımlar)

Human Computer

Alan Turing - 1928 (16 years old)
Alan Turing – 1928 (16 years old)

Alan Mathison Turing, the founder of Computer Science, included the statement “Can machines think? This question should begin with definitions of the ‘machine’ and ‘thinking'” in his article “Computing Machinery and Intelligence” published on October 1, 1950.^1 In his article, Turing mentioned “The Imitation Game” and explained the “Turing Test” to us. While we’re at it, let’s mention about the 2014 film “The Imitation Game”^2. It’s needless to say that to learn Computer Science, understand and recognize Alan Turing, we need more than just watching a movie.

In his article, Turing points out that the aim of digital computers is to perform tasks that were previously done by human computers. He defines human computers as “people who follow specific rules and have no authority to deviate from any details”.

NACA (NASA) Yüksek Hızlı Uçuş İstasyonu "Computer" Odası (1949)
NASA High Speed Flight Station “Computer” Room (1949)

In the 17th century, the word “Computer” referred exactly to this: “A person who performs calculations (computes)”^3. Imagine a group of people who were used for long-term calculation tasks. I guess we have seen similar scenes in the “Apollo” movies. Since there was a possibility of making mistakes, multiple groups were doing the same calculation. In fact, calculations were divided among the individuals within the same group, and the results were combined to reach the final result^4. Multithreading? We will come to that later. One more note: It is known that a significant number of women worked in these jobs in the 1800’s and beyond. Since Ada Lovelace – and maybe even before her- women have been present in the computer world. They will continue to be. If anyone claims otherwise, they can press Alt+F4 and leave.

Digital Computer

Now let’s come to the present day. Calculation tasks are now delegated to various devices. We can define computers in today’s world like this: A device that processes, stores, and displays data via various arithmetic and logical operations. As you know, it can be divided into two different units as hardware and software. In this article, I won’t go on with clichés like “it was as big as a room, had 1 MB, weighed 5 tons, Pascaline, ENIAC, etc.” You must read and examine the development process and history of the computer. Additionally, there are dozens of scientists who should be remembered. It exhausts me that these unknown heroes are less known than the types who clown around on social media. That’s why I won’t go into those areas. I could prepare a separate article about the people I learned about and respect in my own readings in the next 42 years.

Let’s not forget our esteemed professor, Prof. Dr. Aydın KÖKSAL, who gave a tremendous suggestion for the word “bilgisayar” (computer), which comes from the root of “compute (hesap)” and brought it into our language.^5 You must read Aydın Hoca to understand the adventure of the computer in Turkiye.

KKK Master Planı Projesi'nin başarıyla sonuçlanmasını kutlamak üzere Bilişim Ltd ve Aydın Köksal onuruna komutanlar yemek veriyor. - 1992 (Aydın Köksal hocanın web sitesinden alınmıştır.)
Bilişim Ltd and Aydın Köksal are being honored with a dinner hosted by commanders to celebrate the successful completion of the KKK (Land Forces Command) Master Plan Project. – 1992 (From Aydın Köksal’s website)

If we think according to this definition, I would like to ask the question “How many computers do you have at your home?” It could be 1, 3, 24, or even more than you think. Let’s give some examples:

  • The things we call desktop, laptop, and tablet are already computers.
  • Your smartphone is a computer. Just think, you can also install applications on it. It stores some data and can present it to you.
  • What about non-smartphones? At least they have a calculator and a calendar. They have reminders and alarms. Let’s put aside all of this. These things are relatively simple for these devices. They can also take your voice, digitize it, and send it somewhere else. It’s an important job, in my opinion. Is there anyone among us who can do this on their own?
  • Each of your SIM cards is a computer on its own. I’m serious.
  • Inside the machines you refer to as “computers,” there are multiple computers. Your graphics processor, your central processor, their cores, your Wi-Fi card… Each of these parts has the ability to calculate and process data. We can consider each one as a separate computer.
  • What about things like washing machines, dishwashers, and refrigerators? Don’t they follow certain situations and make decisions accordingly? When will they heat up, when will they cool down, how much will they heat and cool, how long will they work, when will they add which cleaning agent? These are important questions and they can answer all of them. Most of them also come with predefined programs. You even have the chance to edit these programs as you wish.

In short, there are many computers.

What to Program, How to Program?

Imagine. You will delegate some calculation tasks that people do to devices. You have to teach them a new world: number systems, data storage, data correlation, input acquisition, output delivery… It is a quite challenging process. Suppose you have taught them successfully. Great. What happens now?

We programmed a computer with “Yoda architecture, Death Star compatible motherboards, and Jedi RAM.” Is this how the current world is? There are dozens of different parts for a specific purpose, and hundreds of different models of these parts. However, we had just learned to communicate with a computer that was made up of certain parts coming together, and our job had just finished. Can you predict what will happen when you say, “The CPU is not sufficient, let’s add a new one or change the existing one”? It has become a separate device now, and it has no idea what to do.

Let’s give a more obvious example. Mobile applications. Actually, we need to sit down and write a separate application for all phones on the market. Otherwise, how can they work? Fortunately, we don’t have such a problem. Don’t worry, we’re gradually moving to the operating system.

Hardware Abstraction

Hardware abstraction is a set of routines that allows programs to access hardware resources through programming interfaces. I can assure you that I didn’t understand anything either.^6

To put it simply, we want to make a hardware perform a task. We give it a set of instructions and it carries out the task. However, with so many different types of hardware architectures and models. We need to use an interface, a helper in this situation. We use “translators”. Hardware abstraction understands the hardware and translates the commands we give it into a form that the hardware can understand. This way, we don’t have to know and write separate command sets for each hardware.

An example of a joystick is given in the Wikipedia article. It makes sense to me. Almost all controllers are different, but they’re also the same in many ways. We press some buttons and want to control something. Developers don’t expect different inputs for different joysticks. Nor do they have to drown in technical details of the device.

There’s another metaphor on Wikipedia. Riding a bike is also a transportation method, like driving a car. They have similar things, such as wheels, steering wheels, and seats. Thanks to hardware abstraction, we can develop our own applications around the “driving” focus.

I’m sure a whole semester is dedicated just to hardware abstraction. Maybe even more. So I’m leaving this here and moving on to the operating system.

Before moving on, I recommend reading these two articles:

What is an Operating System?

For the Operating System (OS), we can refer to it as the “maestro” responsible for sharing the resources of a computer among programs and running these programs. We can even call it sensei, Master Splinter, or Excal1bur_1337 if you wish.

The executable code sets that exist on your computer are programs. If you provide the necessary interactions – double-click, command line interface (CLI) inputs, or scheduled tasks – you can run these programs. When programs are run, they become a “process”. Let’s take VLC Media Player, a free software, as an example. You installed the program. It takes up space on your disk. Then you ran it and it became a process. This process can do the following:

  • It can read data from your disk. Without this ability, it cannot display videos on your screen or play sounds.
  • It can write some or all of its components and the data it reads to RAM. Without this ability, it cannot run. You can learn more about the “von Neumann” architecture named after John von Neumann.^7
  • It can use your CPU to process data.
  • It can use your GPU to display images on your screen.
  • It can use your network card to retrieve media information from the internet or check for its own updates.
  • It can use your sound card to output sound.

We can increase the examples. This is just the process we go through to watch a video. In today’s computers, playing a video clip while playing a game, recording the visuals and sounds of the game, broadcasting both the game visuals and the video from the webcam over the Internet, updating some applications in the background while all of these happening, or downloading some documents are all considered ordinary activities.

As we mentioned before, the task of the operating system is to “share resources among programs.” I think it makes more sense now.

Now think about any software you are using. You prepared a file and wanted to save it. Saving failed. Because your disk is full. What a nice approach. Instead of doing this, couldn’t it delete some random files and make room for itself? Meh.

Or any program, while working well on its own, may start to struggle a bit when other programs are run alongside it. It’s “lagging,” isn’t it? Since it can use these resources, why doesn’t it allocate all of them to itself?

Today’s developed programs do not directly intervene in hardware. Of course, I am excluding system software, drivers, etc. I’m talking about programs referred to as “application software” that we open and run as an ordinary user. If we could talk to the hardware directly, we would have to enter a separate software logic for each hardware we mentioned in hardware abstraction section. This is where the operating system comes in.

The operating system can be thought of as a layer between hardware and software. When the software running on your computer wants to interact with hardware, they request it from the operating system. And if the request is feasible, it is fulfilled. You know, sometimes when you try to do 1-2 things at the same time, the sound of the video you’re watching flickers, then recovers. Or I don’t know, sometimes a program starts up slower than usual. Do you think it’s related?

İşletim sisteminin katmanlı yapısı (https://en.wikipedia.org/wiki/File:Operating_system_placement.svg)
Layered architecture of operating system (https://en.wikipedia.org/wiki/File:Operating_system_placement.svg)

Fun Fact

There was no world in the past, only dust and gas clouds, etc. Then, punched cards entered our lives. Instructions were loaded onto a computer through punched cards. Computers read these holes or non-hole areas and performed the necessary operations. “You know, the computers are just 1’s and 0’s.” That’s it. This used to be our logic: hole or not.^8 Of course, if you gave any instruction incorrectly, the whole system would stop. This was because your program was flawed. For some errors, you might have to recreate (punch) the entire card. Sometimes you would notice that you forgot a hole and immediately punch it in. Sometimes you would fall into the “oh no, we accidentally punched this hole” situation and would patch that hole. The concept of “software patch” used today comes from here.^9 I’m sorry, but the original purpose of patches was to fix errors. That’s why I find things like “Turkish commentator patch” or “GTA Kurtlar Vadisi patch” funny. Since we’ve returned to the fun fact paragraph, on September 9, 1947, at 15:45, a “bug” seen in the 70th relay of the F panel of the Harvard Mark II Aiken Relay Calculator device was recorded because it caused the program to stop working. So, the first bug was really a bug.^10 It is known that Edison used this concept before, but I don’t like Edison. Nikola TESLA!!!

Almanya'da öğrenciler delikli kartları kullanarak programlama yapıyor (1970) (Bundesarchiv, B 145 Bild-F031434-0006 / Gathmann, Jens / CC-BY-SA 3.0)
Students in Germany, programming with the punched cards. – 1970 (Bundesarchiv, B 145 Bild-F031434-0006 / Gathmann, Jens / CC-BY-SA 3.0)
Harvard Mark I makinesinde çalıştırılan kodlar. Yamalara dikkat edin. - 1944 (https://commons.wikimedia.org/wiki/File:Harvard_Mark_I_program_tape.agr.jpg)
Codes that were running on the Harvard Mark I machine. See the patches. – 1944 (https://commons.wikimedia.org/wiki/File:Harvard_Mark_I_program_tape.agr.jpg)

Multiprogramming vs. Multitasking

In later times, we became able to load multiple sets of punched cards into these computers. This brought us into the “batch system” era. In this era, computers were working on “multiprogramming.” That is, one program was running, finishing, and then the next program was running. Nowadays, we use “multitasking (timesharing)” systems. All resources are shared among all processes -at least, it’s being attempted- and each process is executed for a certain percentage of a second, and then the next process is executed. This allows us to do multiple things at the same time. You can think of doing things like listening to music while sending emails, downloading something in the background while doing this, copying a file to another location, or printing a document. Although all of these things seem to be done at the same time, they are actually progressing by waiting for each other. We just don’t realize it. The software group that manages all of this process for us without us realizing it is the operating system.

I say the software group because a typical operating system is not a single software. It has different programs like the kernel, input/output modules, memory management modules, etc. Let’s give some easier examples. The operating system you install comes with software that you can use to write your notes, media players, calculators, calendars, email clients, and tools for making various settings. All of these make up the operating system. Therefore, in some sources, you can also see expressions like “the software package that the manufacturer sends you” as a definition of an operating system.

What Makes Operating System Special?

We can list some features that distinguish the operating system from other software as follows. Although the features I will write here belong only to some parts of the operating system, we can say that they are features of the operating system when we look at the general picture:

  • It intervenes with the hardware.
  • It starts working from the moment the computer is turned on and continues to work until the computer is turned off (this is a dangerous sentence, as how a computer is turned on and off is a separate issue. It would be more accurate to say that it starts working when the time and place is right). If it can’t continue to work, you won’t be able to use your computer. Windows users, do you remember the blue screen?
  • It uses most of the hardware to protect itself. While using your computer, if the operating system has a priority task, it will do it first. It won’t respond to you. In other words, it doesn’t waste time scratching its arm while the system is having a heart attack.
  • It receives requests from the user and other programs and executes them if deemed appropriate. So, in fact, you are only using the operating system. The operating system uses all the remaining applications itself.
  • Thanks to the included or later added drivers, it recognizes and makes your hardware available for use. For example, you cannot install a standard Android operating system on your personal computer. Or you cannot install Windows, which you can install on your personal computer, on a Nokia 3310. I want to emphasize the word “standard” again.

Public service announcement: Don’t use Windows.

Cenevre Havalimanı'ndaki bir Windows cihazda görülen "Blue Screen of Death (BSoD)" - 1999 (https://en.wikipedia.org/wiki/File:Windows_NT_BSOD_at_GVA_baggage_claim,_1999-10-03.jpg)
“Blue Screen of Death (BSoD)” seen on a Windows device at Geneva Airport – 1999 (https://en.wikipedia.org/wiki/File:Windows_NT_BSOD_at_GVA_baggage_claim,_1999-10-03.jpg)
Bir Linux sistemden "Kernel Panic" mesajı. (https://commons.wikimedia.org/wiki/File:Kernel-panic.jpg)
“Kernel Panic” message from a Linux system. (https://commons.wikimedia.org/wiki/File:Kernel-panic.jpg)

We can also give the following examples regarding the tasks of the operating system:

  • Running user software.
  • Allocating system resources such as CPU and RAM among software.
  • Determining the priorities and execution order of software.
  • Managing data stored in devices such as hard disk, SSD.
  • Managing workload distribution on multi-core, multi-threaded systems.
  • Managing input received from hardware devices such as keyboard, mouse, microphone, speaker, and output provided through these devices.

Conclusion

Operating systems are a separate field of expertise. The content in this article is largely incomplete and far from technical details. My advice to you is to review the resources of Operating System courses at universities, if possible, take a course on this subject. Afterwards, I believe you will start to look at a computer in a different way while using it. Although it is very superficial knowledge, I hope it will be useful to someone.

As much as possible, I will prepare articles that also examine the subtopics in this subject.

References

1 – A. M. TURING, I.—COMPUTING MACHINERY AND INTELLIGENCE, Mind, Volume LIX, Sayı 236, October 1950, Sayfa 433–460, https://doi.org/10.1093/mind/LIX.236.433

2 – The Imitation Game (2014) – https://www.imdb.com/title/tt2084970/

3 – Michael R. Swaine, Computer, https://www.britannica.com/technology/computer

4 – Computer (job description) https://en.wikipedia.org/wiki/Computer_(job_description)

5 – Prof. Dr. Aydın KÖKSAL, Yaşamöyküm, https://aydinkoksal.gen.tr/ozgecmis.html , https://aydinkoksal.gen.tr/gorseller/is-38.html

6 – Hardware Abstraction, https://en.wikipedia.org/wiki/Hardware_abstraction

7 – Von Neumann Architecture, https://en.wikipedia.org/wiki/Von_Neumann_architecture

8 – Computer Programming in the Punched Card Era, https://en.wikipedia.org/wiki/Computer_programming_in_the_punched_card_era

9 – Patch (Computing) https://en.wikipedia.org/wiki/Patch_(computing)#History

10 – The Origin of the Term Computer Bug, https://interestingengineering.com/the-origin-of-the-term-computer-bug