Study Guide for CS401: Operating Systems

This study guide will help you get ready for the final exam. It discusses the key topics in each unit, walks through the learning outcomes, and lists important vocabulary terms. It is not meant to replace the course materials!

Unit 1: Introduction to Operating Systems

1a. Explain what an operating system does and how it is used

  • What is a computer operating system (OS) and what does it do in general?
  • What particular functions does a computer operating system (OS) do?
  • Describe some common types of computer operating systems. Explain how they differ.
  • Define open source.
  • Define an application (app).
  • Summarize the history of computer operating systems.

A computer operating system (OS) is a type of abstract virtual machine that handles diverse computer hardware. The computer operating system serves as a platform that exchanges computer information or computer code between your computer's hardware and the applications running on it. A specific, universal, operating system standard does not exist: the computer operating system is basically whatever the vendor ships and updates.

The computer operating systems basically coordinates and manages computer information. It settles conflicting requests, facilitates and manages machine facilities, prevents errors and improper use, serves as a file system, and operates a windowing system where the graphical user interface (GUI) presents data in a window format to the user interface (UI).

The operating system does many, many things simultaneously, and that is it's real value. To give us some appreciation of those many, many things an OS does pretty much all at the same time, the below list is not exhaustive, but provides an idea of some of the many things and operating systems does more, or less, simultaneously:

  • I/O (input/output) management
  • Software standard library management
  • CPU (central processing unit) scheduling
  • Multitasking
  • Multiprogramming
  • Address translation
  • Dual mode operation
  • Simplify applications
  • Fault containment, recovery, tolerance
  • Multimedia
  • Internet browser
  • Communications/email
  • Loading the object code
  • Full coordination and protection
  • Manage interactions between different users
  • Application by application crash, not entire environment
  • Multiplex programs running simultaneously
  • Multiplex and protect hardware resources
    • CPU
    • Memory
    • I/O devices
      • Disks
      • Printers
      • Optical drives
      • Flash drives, etc.
  • Good debugging info allowed/provided
  • Full coordination and protection of multiple apps from one another

Two popular proprietary operating systems are the Microsoft Windows operating system family (Windows 10, XP, and Vista), and the Apple suite of operating systems (Catalina, Mojave, and Sierra).

UNIX is an open-source operating system that is deployed all over the world in personal and commercial systems. It is free, non-proprietary, and open-to-all which means that any user is able to see and change the source code as they would like.

Linux, a popular open source operating system, is a close relative to Unix. Several versions of Linux exist. Open source means that the source code is free and open. This means that users have the permission to reuse, revise, remix and redistribute it. In practical terms this means computer programmers are free to fix bugs, improve functions, or adapt the software to suit their own needs.

Operating systems are massive. For example, Microsoft Windows has 50 million lines of code and is terribly complex. Large scale coding is also like an interlocking puzzle: moving or changing one piece often affects other pieces in significant and unpredictable ways.

For example, technicians soon learn that when they upgrade a computer operating system, an element that worked previously is subject to breaking down, even when it was not the main focus of their initial upgrade. You may need to stamp out or correct the bugs, including new and unintentional ones you created when you upgraded the old version of the OS.

Resiliency and variety are great features of computer operating systems because they amplify each other concurrently. These features supplement the complexity of the OS.

Reliability often requires monotony since repeating one, and only one, single task, is less likely to fail or break down. This is especially important in medical equipment. Incredible reliability repeats over and again and uses a simple computer program.

An application, or application program, is simply a software program that runs on your computer or mobile device. Web browsers, email programs, word processors, games, and utilities are all applications.

Note that the computer operating system (OS) can crash an application (app), and an app can crash an OS. Programmers try to make sure applications and programs cannot read/write the memory of other applications/programs of the OS. This is because operating systems have certain definitive duties, requirements, or functions. One of these core functions is to keep computing going, separately from each other so they do not affect or crash each other.

Review this material in the two lectures What Is an Operating System? and Operating Systems History, Services, and Structure by John Kubiatowicz.


1b. Identify the various components of a computer system and how they interact with an operating system

  • Describe the various components of a computer system that the OS controls and regulates so they can work together harmoniously and not interfere with each other when serving the user.
  • Why is it important to use operating systems when several users want to share and use the same computing resources simultaneously?
  • Explain the phrase "the network is the operating system" in terms of late and current model networks.
  • Define distributed computing.

Different components of a computer system include:

  1. The software that resides on the computer, in addition to the operating system, including the drivers for various components of hardware.

  2. The computer hardware including the CPU, memory, and storage. The operating system typically provides the graphical user interface or GUI (pronounced gooey). The GUI allows us to use a mouse to click icons, buttons, and menus. Everything is clearly displayed on the screen using a combination of graphics and text.

The computer operating system:

  1. Coordinates the running of compilers, which turn mouse clicks and keystrokes into the computer language of binary ones and zeroes;

  2. Provides text editing applications;

  3. Controls and operates the assembler. The assembler is a program that takes basic computer instructions and converts them into a pattern of bits that the computer's processor can use to perform its basic operations.

When computers first came on the market, manufacturers focused on the single computing machine, which was not connected to other computers (if there were any). When computers became smaller and less expensive, we began to focus more on how to connect with other users and share information. The end device became small, cheap, and easy to replace. The network, on the other hand, became unique and irreplaceable while the importance of the end device became negligible.

Distributed computing is a model where we share software system components among multiple computers to improve efficiency and performance. Distributed computing, using the narrowest of definitions, is limited to programs with components shared among computers within a limited geographic area.

This model could mean incorporating multiple servers in a single location data center, or multiple servers geographically dispersed, so the time for communication (latency) among communicating machines is negligible.

Understanding the value and effectiveness of an OS helps us appreciate what this critically important piece of software does for us on our desktop machines and mobile devices. Different devices require different operating systems, according to their operation, computing resources, hardware, and software.

For example, a mobile device requires a different operating system than a desktop or larger machine because it is more constrained in terms of power, battery, memory, storage, and computing power. All of these things must operate together effectively according to their size constraints, in accordance with their size, performance, and capacity.

Rapid changes in hardware, such as the advances in computing technology from 1950–1980 and today, compels rapid change in operating systems.

Review this material in the two lectures which provide an excellent introduction to operating systems: What Is an Operating System? and Operating Systems History, Services, and Structure by John Kubiatowicz and Computer System Overview: Part 1 by Jinzhong Niu.


1c. Describe the differences between a 32-bit and 64-bit operating system

  • What is the difference between a 32-bit and 64-bit operating system.
  • How does it affect computer performance?

Computers do not use the base ten numbering system like we do. They use a base two system which means they have two states: on or off, one or zero, as opposed to base ten which uses 0, 1, 2, 3, 4, 5, 6, 7, 8, and 9. Like a lightbulb that only switches on or off, computers only understand two things: one and zero. 

The computer engineers and mathematicians who first invented computers could not replicate the base ten system we use. They realized you can represent any number by using a number as a base (two in computer terms or 10 for humans), and raising that number to an exponent, written as 2x. If you lack a font that shows exponents in superscript, you can write these numbers as 2^x or 2exp(x).

Because computers use, and have always used, a base 2 assumption, counting in computing always uses multiples of two (an exponent of 2x). For example, 32 = 25, 64 = 26, 128 = 2256. This is why you always see numbers with exponents with computers, rather than 5, 10, 15, 20, 25, 100, 1,000, 10 = 101, 100 = 102, or 1,000 = 103.

A computer that uses a 64-bit processor can address twice as many bits as one that uses a 32-bit processor, and can perform twice as many calculations during the same time period. This greater performance allows us to realize more dramatic computing abilities for applications, such as gaming, graphics, HD (high definition), and video.

It is important to understand the difference between 32-bit and 64-bit computing environments because the application you want to run may not work on a 32-bit system. Your application simply requires too much computing power and will not work with a 32-bit processor.

Review this material in the lecture Operating Systems History, Services, and Structure by John Kubiatowicz and 32-bit and 64-bit Explained, and 32-bit and 64-bit Frequently Asked Questions.


1d. Explain the different types of operating systems and the major systems in use today

  • Name some different types of operating systems.
  • Why are there different types of operating systems?

Some different operating systems include: iOS, iPadOS, Linux, macOS, Solaris, Unix, and Windows.

Different software producers created different systems to achieve different goals with different types of hardware. For example Apple built macOS for its iMac desktop, iPadOS for its iPad, and iOS for its smartphones.

Each hardware environment has different abilities, which may be greater or weaker. Their goals require a unique operating system, such as the need to fit a computer device into a certain size or shape (a form factor) or to perform certain functions.

Review this material in: Android, iOS (Apple), Microsoft Windows, Solaris 8, Windows Phone, and What Is Linux?.


Unit 1 Vocabulary

  • 32-bit
  • 64-bit
  • API, application programming interface
  • ARPANET
  • Assembler
  • BIOS, basic input/output system
  • Command line
  • Compiler
  • Computing abstraction
  • Control register
  • CPU (central processing unit)
  • Device driver
  • DOS, disk operating system
  • File
  • GUI (graphical user interface)
  • HD (high definition)
  • I/O (input/output)
  • iOS
  • iPadOS
  • Kernel
  • Latency
  • Linux
  • Linux distribution
  • MacOS
  • Object code
  • Operating system
  • Packet switching
  • Program crash
  • Queueing
  • ROM (read only memory)
  • Source code
  • Swapping
  • Thrashing
  • Virtual machine
  • Windows