SeriesOperating Systems1 / 16

Introduction to Operating Systems

Module 1 of CS 6200 - Graduate Introduction to Operating Systems @ Georgia Tech.

What is an Operating System?#

Overview#

An operating system (OS) is a piece of software which abstracts and arbitrates the underlying hardware of a computing system.

The OS is responsible for directing operational resources, enforcing working policies, and mitigating the difficulty of complex tasks.

Role within Computing System#

A computer system refers to a combination of hardware and software components which collaboratively accomplish some computing-related purpose. Common components include…

computing-system-organization

The OS is the software component which connects user applications (top of figure) to hardware components (bottom of figure) via abstraction and management. It is responsible for hiding hardware complexity, providing resource management to higher-level applications, and providing isolation + protection relative to applications.

OS Examples#

Operating systems can be broadly grouped by their platform - for example, this class will consider deskstop and embedded systems. The primary operating systems include…

In this class, we will focus on Linux and its various design considerations.

Operating Systems: A Closer Look#

Design and Functionality#

Operating systems are designed around abstractions, mechanisms, and policies. For example…

A few key design principles guide the creation of operating systems:

Protection Boundary#

Computer platforms distinguish between at least two modes, defining the user-kernel protection boundary:

user-kernel

Operating systems export a system call interface for applications to perform operations interacting with system resources. Example system calls include open (file), send (socket), and malloc (memory). System calls are requested by user processes to pass control to the operating system, which then performs the desired task and returns data / control back to the user process.

system-call-overview

User/Kernel transitions are necessary whenever the application requires system calls. However, they are not cheap - the transition often implies non-negligible time overhead (for the OS to perform transition-related operations), and may also result in a cold cache.

Most operating systems share system call functionality, but may have different commands / implementation styles.

OS-system-calls

Organization and Architecture#

Operating systems may be further characterized by their general organization. A Monolithic OS is organized such that every possible process required by the user-space or hardware is pre-built into the operating system. The term “monolithic” is an adjective describing a singular large, block-like structure.

Conversely, a Modular OS provides basic built-in services, but integrates with specialized modules installed on top of the base operating system. Any module must follow a specific interface in order to be compatible with the operating system.

Finally, a Microkernel is designed such that only the most basic services are supported by the operating system. All other software components / services are run at the user-level. Microkernel operating systems are typically very specific to the underlying hardware, and have a frequent need for user/kernel transitions.

Example Architectures#

See below for the Linux architecture

linux-architecture

… as well as the macOS architecture.

macOS-architecture

(all images obtained from Georgia Tech GIOS course materials)

License

CC BY-NC-SA 4.0 This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Related Posts