Pages

Sunday, April 7, 2024

Insights on Operating Systems Theory & Design

Operating systems are the backbone of how we interact with computers. When computers were in their infancy, users interacted with the computer through switches and complex programming commands; the development of the OS has made computers accessible and essential to everyday users. Understanding how the OS operates is an integral part of the educational journey for anyone entering the world of IT. This post will provide a basic overview of the most crucial elements and concepts that underlie the functional operation of an operating system.

In the most straightforward analysis, the operating system is the face of a computer. Most PCs run Microsoft Windows, Apple's computers run Mac OS X, servers (and sometimes home computers) often use a Unix-based OS such as a distribution of Linux or BSD; even our smaller devices will have their own operating system (our smartphones will typically carry iOS or Android, while "smart" devices such as our cars or televisions may utilize special-use embedded OSes). We use the OS most frequently via a graphical user interface, though more seasoned or specialized users may use a command line interface. In a more granular sense, operating systems allocate the resources and work as a central "control program" for our devices: it can help to ensure that the device's processing power is being used efficiently and does so by managing the applications that users run within the OS. A summary of the essential functions of an OS can be seen below:


Programs in execution within an OS are typically called "processes," and supervision of processes is a major function of any OS. It is the job of the OS to schedule processes correctly to ensure the quickest and most efficient execution for the user, keeping the computer's available resources in consideration. Whenever a process is initiated, it enters a cycle where it waits to be scheduled (detailed below). Outside of user processes, there are system processes (often referred to as daemons) that assist with these duties, as well as managing input & output (I/O) and file systems. One of the operating system's foremost objectives is to maintain awareness of where every process is within its respective cycle, and also to be cognizant of which processes are permitted to share information with each other. There is often a hierarchy of access levels to protect users and ensure that not all applications always have administrative access to a system.

As briefly alluded to earlier, one of the primary functions of an OS is to manage how the memory of a device is used. The onboard physical memory of a computer is limited, and given the number of processes that could be running within an OS at any given time, this management can quickly become challenging to handle. A concept that seeks to solve this issue is virtual memory, which separates logical (or perceived) memory from the actual, physical memory resources available in a system. For instance, parts of a process may only be loaded into memory exactly when needed, allowing more processes to be run at a given time if all of them are not in physical memory. Virtual memory will enable programmers not to be as restricted by a computer's finite physical memory. A selection of virtual memory management methods is summarized below:

An operating system also manages I/O, meaning that it is able to take input from users (via a keyboard or mouse, etc.) and output it to the display, to the disk, or another output device. One way that I/O manifests is by creating files on the physical hard disk of your computer. For example, I am writing this blog post in a Microsoft Word document (inputting the data through my keyboard), which I have been periodically saving to my hard drive (outputting to a file). An OS also manages your file system, which allows for your files to be accessible not as abstract pieces of data on a disk but instead as easily organized and navigable files.

An operating system also needs to provide protection and security to the user – both from themselves (to ensure that users do not inadvertently overwhelm a device's resources or make fatal changes to system files) and from unauthorized users who seek to harm a system. An important principle that guides OS design is the principle of least privilege, where users and processes are only given exactly enough access to the system to perform their necessary tasks. OSes use what is referred to as an access matrix for system protection: an abstract view of different system objects and their respective domains (or the specific resources that an object can access; shown below). Taking the management of resources discussed earlier in this post alongside a well-designed access matrix and the principle of least privilege, an OS can provide a secure system to the user.

Virtually everything we do on a computer is through an operating system. With this considered, a fuller understanding of how an OS works brings a fuller understanding of computers in general. This knowledge can aid any IT student regardless of their choice of vocation. Those in the IT field should have a working knowledge of several different operating systems, but it would not be enough just to know how to navigate within these systems; we must understand why different OSes use various approaches and how they accomplish specific tasks.

For a real-world example, my current goal is to focus on networking as I work towards my IT degree, to hopefully procure employment as a network administrator or something similar after I graduate college. Different places of employment are going to use various operating systems. For instance, I should not restrict myself to knowledge of, say, Windows Server; I should also ensure that I am comfortable with various Linux and BSD distributions as well, in addition to proprietary systems such as Solaris. Additionally, a better understanding of the differences between these OSes and how they operate will be crucial to my position as an administrator of the server computers and devices on the network I am working with. As a more particular example, knowing how OSes manage memory can help me better manage the network and possibly even iron out inefficiencies wherever possible. Altogether, a deeper understanding of operating systems is a deeper understanding of the science of computing in general.


No comments:

Post a Comment