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
OS/161 is written in C (and MIPS assembler), so knowing being comfortable with C will be a great help.
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:
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.
(When logged in, completion status appears here.)