CS 134

Remember CS 105?

In CS 105, you followed the book Computer Systems: A Programmer's Perspective by Bryant and O'Hallaron. This book provides (among other things) a good introduction to the C programming language, and a good sense of what an operating system does for the programmer. In this class we're more concerned with how an operating system does what it does, and why it does it that way. But it's still good to review some of what you learned taking CS 105.

The syllabus for CS 105 lists the following topics:

  • Coding in C
  • Bits, Integers, Floats
  • Machine Programming (Assembly)
  • Data (Arrays and Structs)
  • Processes
  • Concurrency, Threads
  • Exceptional Control Flow (ECF), Signals
  • Dynamic Memory Allocation
  • Buffer Overflow
  • I/O
  • Networks, Disks, and File Systems
  • Caches
  • Virtual Memory
  • Performance
  • PinkRobot speaking

    OS/161 is written in C (and MIPS assembler), so knowing being comfortable with C will be a great help.

  • BlueRobot speaking

    There is a help page on C for C++ programmers that you might find useful if your brain wants to go into C++ mode.

Basic Structure of an OS and System Calls

Implicit in a number of those topics is the structure of a typical modern operating system, and how system calls work. Here's a diagram to help you remember:

graph TD A[User Applications] --> B[System Libraries] B -->|System Calls| C[Kernel Interface] C --> D[Kernel] D --> E[Hardware Abstraction Layer] E --> F[Hardware] F -->|Interrupts| E subgraph User Space A B end subgraph Kernel Space C D E end subgraph Physical Hardware F end

User space is the memory space of particular running processes, and kernel space is the memory space of the kernel (which is private to the kernel).

In the next few pages we'll cover some of the key services that an operating system provides to user programs.

Did CS 105 actually tell you about user space and kernel space?

(When logged in, completion status appears here.)