Skip to content

Course Schedule

Course Setup

Technical Experts Duties

  • Review technical content for the assigned module with Professor Kapfhammer
  • Create a technical question that is the focal point for the assigned module
  • Create a technical diagram that "sketches" all content for that module
  • Assist with creating and proof-reading technical content for that module
  • Present the technical diagram and answer any questions about the presented content

Professional Question

  • What technical content about operating systems will we cover this semester, how will we assess our mastery of this technical material, and how will we structure all aspects of this advanced course in operating systems?

Next Steps

Systems Introduction

Technical Questions

  • How does the operating system use the principle of virtualization to manage the resources of a computer such as the process, memory, and file system? How does virtualization influence the way in which I write programs and use an operating system?

Next Steps

  • Read the chapters called Introduction (Chapter 2) and Processes (Chapter 4) in OSTEP
  • Study the course slides for a detailed investigation of these chapters
  • Review the important terms for definitions of the key terms associated with the assigned chapters
  • Check out the operating system sketch associated with this module

Process Execution

Technical Questions

  • How does the operating system manage the execution of processes and enable processes to access memory? How does this behavior of the operating system influence the ways in which I program and use software tools?

Next Steps

  • Read the chapters called Process API (Chapter 5), Direct Execution (Chapter 6), and Memory API (Chapter 14) in OSTEP
  • Study the course slides for a detailed investigation of these chapters!
  • Review the important terms for definitions of the key terms associated with the assigned chapters
  • Check out the operating system sketch associated with this module

CPU Scheduling

Technical Questions

  • How does the operating system separate policy from mechanism and make decisions for which process to execute? How does this behavior of the operating system influence the ways in which I program and use software?

Next Steps

  • Read the chapters called CPU Scheduling (Chapter 7) and Lottery Scheduling (Chapter 9) in OSTEP
  • Check out the course slides for a detailed investigation of these chapters!
  • Review the important terms for definitions of the terms associated with the assigned chapters
  • Check out the operating system sketch associated with this module

Address Spaces

Technical Questions

  • What are the policies and mechanisms that the operating system uses to facilitate memory access for processes? How does this behavior of the operating system influence the ways in which we program and use software?

Next Steps

  • Read the chapters called Address Spaces (Chapter 13) and Address Mechanisms (Chapter 15) in OSTEP
  • Check out the course slides for a detailed investigation of these chapters!
  • Review the important terms for definitions of the terms associated with the assigned chapters
  • Check out the operating system sketch associated with this module

Segmentation and Paging

Technical Questions

  • What are the general-purpose policies and mechanisms that the operating system uses to facilitate memory access for processes? How does this behavior influence the ways in which I program and use software?

Next Steps

  • Read the chapters called Segmentation (Chapter 16) and Paging (Chapter 18) chapters in OSTEP
  • Check out the course slides for a detailed investigation of these chapters!
  • Review the important terms for definitions of the terms associated with the assigned chapters

Memory Swapping

Technical Questions

  • What are the general-purpose policies and mechanisms that the operating system uses to move memory units from physical memory to the disk? How does this behavior influence the ways in which I program and use software?

Next Steps

  • Read the chapters called Swapping Mechanisms (Chapter 21) and Swapping Policies (Chapter 22) in OSTEP
  • Check out the course slides for a detailed investigation of these chapters!
  • Review the important terms to find definitions of the terms associated with the assigned chapters

Introducing Concurrency

Technical Questions

  • What are the trade-offs associated with implementing support for concurrency in the operating system and programming languages? How does the use of concurrency primitives influence the ways in which I program and test software?

Next Steps

  • Read the chapters called Concurrency: An Introduction and Thread API (Chapter 27) in OSTEP
  • Check out the course slides for a detailed investigation of these chapters!
  • Review the important terms to find definitions of the terms associated with the assigned chapters

Locking Mechanisms

Technical Questions

  • How can the use of locks support mutual exclusion and reliable concurrency in the operating system and programming languages? How does concurrency influence the behavior of a program? How does the use of concurrency primitives influence the ways in which I create software?

Next Steps

  • Read the chapters called Locks (Chapter 28) and Condition Variables (Chapter 30) in OSTEP
  • Check out the course slides for a detailed investigation of these chapters!
  • Review the important terms to find definitions of the terms associated with the assigned chapters

Using Semaphores

Technical Questions

  • How can the use of semaphores support mutual exclusion and reliable concurrency in the operating system and programming languages? How are semaphores similar to and different from locks? How does the use of concurrency primitives influence the ways in which I create software?

Expert Added Content

  • Read the chapter called Semaphores (Chapter 31) in OSTEP
  • Check out the course slides for a detailed investigation of these chapters!
  • Review the important terms to find definitions of the terms associated with the assigned chapters

I/O Devices

Technical Questions

How can does the operating system use the principle of virtualization to manage the input/output devices connected to a computer? How do virtualization policies and mechanisms for I/O devices influence the way in which I implement programs and use an operating system?

Expert Added Content

  • Read the chapter called I/O Devices (Chapter 36) in OSTEP
  • Check out the course slides for a detailed investigation of these chapters!
  • Review the important terms to find definitions of the terms associated with the assigned chapter

File Systems and Directories

Technical Questions

-Experts add their technical question here

Expert Added Content

  • File Systems and Directories, File System Implementation and Network File Systems chapters in OSTEP
  • Check out the course slides for a detailed investigation of these chapters!
  • Click here to find definitions for key terms for the week's reading (chapters 39, 40 and 49)!

Data Integrity and Security

Technical Questions

-Experts add their technical question here

Expert Added Content

  • Data Integrity and Protection and Intro Security chapters in OSTEP
  • Check out the course slides for a detailed investigation of these chapters!
  • Click here to find definitions for key terms for the week's reading (chapters 49 and 53)!

Distributed Systems

Technical Questions

-Experts add their technical question here

Expert Added Content

  • Distributed Systems chapter in OSTEP
  • Check out the course slides for a detailed investigation of these chapters!
  • Click here to find definitions for key terms for the week's reading (chapters 48)!

Course Timeline

Class Date Chapter/Topics Expert/Presenter
9/13 2/4. Introduction/ Processes Peter, Anthony
9/15 Processes Continued
9/20 5/14/6. Process API, Memory API, Direct Execution Lex, Caden
9/22 Continued
9/27 7/9. CPU and Lottery Scheduling Favour, Katie
9/29 Continued
10/4 13/15. Address Spaces, Address Mechanism Thomas, Abagail
10/6 Continued
๐Ÿ‚ Fall Break ๐Ÿ‚
10/13 16/18. Segmentation and Intro into Paging Estaban, Caden
10/18 21/22. Swapping: Mechanisms and Policies Jeff, Garrison
10/20 Continued
10/27 26. Concurrency (code) Paige
11/1 27. Thread API (code) Zackery
11/8 28. Locks Pt.1 (code) Michael
11/10 28. Locks Pt.2 and Condition Variables Michael, Gary
11/15 31. Semaphores (code) Yanqiao
11/16 ๐Ÿ“ Mid-term Exam During lab ๐Ÿ“
11/17 36. I/O Devices Kyrie
11/22 39/40. Files and Directories and File System Implementation Dylan, Kobe
๐Ÿฆƒ Thanksgiving Break ๐Ÿฆƒ
11/29 Continued
12/1 49. Network File Systems Liam B, Liam M
12/6 45. Data Integrity and Protection Jordan
12/8 48. Distributed Systems Bill, Andre
12/13 53. Intro Security Jordan
12/14 ๐Ÿ“ Review For Final and Project Demos (2:30 - 4:30 PM) ๐Ÿ“

Return to top of the page

Important Terms

Introduction: Chapter 2

Technical Concepts
  • Virtualization: The process by which the operating system takes a physical resource (such as the processor, or memory, or a disk) and transforms it into a more general, more powerful, more secure, and easier-to-use virtual version of itself.
  • Concurrency: Managed by the operating system and/or the programming langauge, the situation in which multiple computations happen at the same time.
  • Persistence: The process of storing data in a computer system, as a way of ensuring that data survives after the ending of the process that created it.
Return to the Systems Introduction module

Processes: Chapter 4

Technical Concepts
  • Process: It is the operating system that takes these bytes and gets them running transforming the program into something useful
  • Process API: consists of calls programs can make related to processes. Typically, this includes creation, destruction, and other useful calls
  • Process state: Including running, ready to run, and blocked. Different events (e.g., getting scheduled or de-scheduled, or waiting for an I/O to complete) transition a process from one of these states to the other.
  • Process list: Contains information about all processes in the system
Return to the Systems Introduction module

Process API: Chapter 5

Technical Concepts
  • Process Identifier - Used to name the process if one wants to do something with the process, such as (for example) stop it from running
  • Fork - Is used in UNIX systems to create a new process
  • Scheduler - Determines which process runs at a given moment in time
  • Superuser - Controls all processes (and indeed do many other things); this role should be assumed infrequently and with caution for security reasons
Return to the Process Execution module

Direct Execution: Chapter 6

Technical Concepts
  • Time Sharing - When you run one process for a little while,then run another one, and so forth
  • Limited Direct Execution - To make a program run as fast as one might expect
  • User and Kernel Mode - The approach we take is to introduce a new processor mode. The operating system runs in
  • Context Switch - When the OS, during a timer interrupt or system call, might wish to switch from running the current process to a different one
Return to the Process Execution module

Memory API: Chapter 14

Technical Concepts
  • Stack Memory - Allocations and deallocations of it are managed implicitly by the compiler for you
  • Buffer Overflow - A related error is not allocating enough memory
  • Purify and Valgrind - Both are excellent at helping you locate the source of your memory-related problems
Return to the Process Execution module

CPU Scheduling: Chapter 7

Technical Concepts
  • Workload - simplifying assumptions about the processes running in the system
  • First In, First Out (FIFO) - means the first element in, is the first element out
  • Shortest Job First (SJF) - runs the shortest job first, then the next shortest, and so on
Return to the CPU Scheduling module

Lottery Scheduling: Chapter 9

Technical Concepts
  • Proportional-Share - instead of optimizing for turnaround or response time, a scheduler might instead try to guarantee that each job obtains a certain percentage of CPU time
  • Ticket - used to represent the share of a resource that a process should receive
  • Ticket Currency - allows a user with a set of tickets to allocate tickets among their own jobs in whatever currency they would like
  • Ticket Transfer - a process can temporarily hand off its tickets to another process
  • Ticket Inflation - a process can temporarily raise or lower the number of tickets it owns
Return to the CPU Scheduling module

Address Spaces: Chapter 13

Technical Concepts
  • Stack - a linear data structure that follows the principal of Last In First Out (LIFO). This means the last element inserted inside the stack is removed first
  • Heap - an area of pre-reserved computer main storage (memory) that a program process can use to store data in some variable amount that won't be known until the program is running
  • Virtualizing Memory - the system can load larger or multiple programs running at the same time, enable each one to operate as if it has more space, without having to purchase more RAM
Return to the Addresses Spaces module

Address Translation: Chapter 15

Technical Concepts
  • Limited Direct Execution (LDE) - letting the program run directly on the hardware; however at certain key points in time, arrange so that the OS gets involved and makes sure the "right" thing happens
  • Address Translation - the hardware transforms each memory access, changing the virtual address provided by the instruction to a physical address where the desired information is actually located
  • Static Relocation - which a piece of software known as the loader takes an executable that is about to be run and rewrites its addresses to the desired offset in physical memory
  • Free List - a list of the ranges of the physical memory which are not currently in use
Return to the Addresses Spaces module

Segmentation: Chapter 16

Technical Concepts
  • Segmentation Fault - arises from a memory access on a segmented machine to an illegal address
  • Sparse Address Spaces - large address spaces with large amounts of unused address space
  • External Fragmentation - a general problem that arises when physical memory quickly becomes full of little holes of free space, making it difficult to allocate new segments, or to grow existing ones
Return to Segmentation and Paging

Introduction To Paging: Chapter 18

  1. Paging - the process's address space is split into a number of variable-sized units
  2. Page Tables - operating system structure used to store per-process address space
  3. Virtual Page Number (VPN) - virtual address that the process generates
  4. Physical Frame Number (PFN) - where the virtual page number is indexed in the frames
  5. Physical Page Number (PPN) - Same as PFN Return to Segmentation and Paging

Swapping Mechanisms: Chapter 21

  1. High Watermark (HW) - a way the that the operating system keeps a small amount of memory free
  2. Low Watermark (LW) - a way the that the operating system keeps a small amount of memory free
  3. Swap Daemon - the process in which the operating system sorts LW amd HW to keep memory free Return to Swapping

Swapping Policies: Chapter 22

  1. Average Memory Access Time (AMAT) - the number of cache hits and misses that a page is found
  2. Temporal Locality - programs keep locality in their access streams when storing and accessing memory
  3. Clock Algorithm - the way an operating system approximates LRU by randomly picking a page
  4. Modified Bit - a bit that is used in the page-replacement process Return to Swapping

Concurrency and Threads: Chapter 26

  1. Thread Control Blocks (TCBs) - stores the state of a thread in a process
  2. Disassembler - shows what assembly instructions were used in the program
  3. Transaction - grouping of many actions into a single atomic action
  4. Critical Section - piece of code that when accesses a shared resource, usually a variable or data structure
  5. Race Condition - arises if multiple threads of execution enter the critical section at roughly the same time Return to Concurrency

Thread API: Chapter 27

  1. Function Pointer - looks for which function threads should start running in
  2. Procedure Call - creates a thread or multiple threads
  3. Critical Section - region of code that needs to be protected for operation Return to Thread API and Locks

Locks: Chapter 28

  1. Spinning - a thread being told to wait before the action is executed based on a lock being in place
  2. Mutual Exclusion: if one thread is in the critical section it excludes others from entering
  3. Fairness: does each thread contending for the lock get an equal shot at it
  4. Performance: time added by using the lock Return to Thread API and Locks

Condition Variables: Chapter 30

  1. Condition variable: an explicit queue threads can put themselves on when some state of execution is less desirable than another thread. When it changes state the other threads can be woken up and allowed to continue
  2. Wait/Signal: the actions used in a conditional variable. The thread waits on a specific condition to be met and then signals the sleeping threads to be executed
  3. Bounded Buffer: a system of multiple producer threads and consumer threads which is shared Return to Variations of Locks

Semaphores: Chapter 31

  1. Deadlock - A problem that occurs when a consumer thread is called before the producer when trying to use mutual exclusion
  2. Throttling - An imposed limit to the number of threads that can be simultaneously executed on a piece of code. Used to keep the system from bogging down
  3. Zemaphore - An easier-to-implement version of the semaphore where we donโ€™t maintain the value of the semaphore, when negative, reflects the number of waiting threads
  4. Hillโ€™s Law - Sometimes simple and dumb is better. Just because you can make something sophisticated to solve a problem doesnโ€™t mean itโ€™s the best answer Return to Variations of Locks

I/O Devices: Chapter 36

  1. DMA (direct memory access) - a device within a system that orchestrates transfers between devices and memory without much CPU intervention
  2. Memory-mapped I/O - Another method to interact with devices. With this version the hardware makes device registers available as if they were memory locations Helpful because no new instructions are needed to support it
  3. Hardware Interface - The way for the software to communicate and interact with the hardware system
  4. Internal Structure - Responsible for implementing the abstraction the device presents to the system Return to I/O Devices

Files and Directories: Chapter 39

  1. Persistent Storage - A permanent storage device that keeps information intact after a loss of power
  2. File - An array of bytes that can be created, read, written and deleted. Low level name is i-number
  3. Directory - An array of tuples, each containing a human-readable and low-level name to which it is mapped
  4. Directory Tree - Organizes all files into a tree, starting with the root.
  5. Hard Link - An entry in the file system tree. Takes two arguments (old path name and new) and creates another way to refer to that same file
  6. Symbolic (soft) Link - Different type of link that allows links to files in other disk partitions than the one the original file is in Return to File Systems and Directories

File System Implementation: Chapter 40

  1. vsfs (Very Simple File System) A simplified version of UNIX and utilizes basic on-disk structures, access methods, and multiple file system
  2. Access Methods The methods which allow for calls to be made. They include actions such as open(), read(), and write()
  3. Metadeta Types of data about data. Mainly consists of data about data blocks, file size, owner and access rights, etc.
  4. Inode A series of nodes arranged in an array and indexed into when the user is accessing a specific inode.
  5. Indirect Pointer A type of pointer that points to other pointers which direct the program to a specific memory address or another pointer
  6. Fixed-Size Cache A small amount of fast memory inside of a processor to improve the speed of which computational tasks are completed Return to File Systems and Directories

Network File Systems: Chapter 49

  1. Stateless Protocol Simplistic crash recovery process where the server restarts and works as it did previously
  2. Recovery Protocol A specific protocol where there's enough memory available to tell the server what it needs to know
  3. Mount Protocol The first process through which the clients and servers connect together
  4. Virtual File System (VFS) Allows for the use of multiple file systems to be utilized for a given operating system
  5. Write Buffering The delayed sending of the clients data to the server. The submitted data to the network is first held locally in the client's cache Return to File Systems and Directories

Data Integrity and Protection: Chapter 45

  1. Fail-Stop An early feature of RAID systems where either the disk is working or not at all
  2. Silent Faults When the storage drive disk doesn't give any appearance of a problem when the data returned is corrupted
  3. Misdirected Write When data is written correctly to the disk storage but in the wrong memory address
  4. Cyclic Redundancy Check (CRC) Remainder of binary division between a large binary number (D) and an agreed value of (k)
  5. Lost Write The device doesn't inform the upper layer that a write finished but the new changes never persisted into the next state, thus exposing the past state before the write Return to Data Integrity and Security

Intro Security: Chapter 53

  1. Trusted Platform Module (TPM) Authenticated to users that they were starting up the operating system and version they had intended to do so
  2. Access Control Mechanisms The process through which an operating system determines if the user has the proper authorization to perform the requested action
  3. Non-Repudiation The authentication of prior actions in the operating system that cannot be forged
  4. Security Policies A list of rules and specifications for ensuring security in an operating system environment Return to Data Integrity and Security

Distributed Systems: Chapter 48

  1. Checksums Method to detect memory corruption quickly
  2. End-to-end argument Method through which packet loss, aka data loss, is avoided
  3. UDP/IP Common networking stack that involves the use of sockets to communicate with an endpoint, and send datagrams which are short messages
  4. Distributed Shared Memory (DSM) Allows for multiple computers on the network to share large virtual address space, akin to how processors have multiple cores which allow for the use of threading
  5. Remote Procedure Call (RPC) Simple and easy way to execute code on a remote machine Return to Distributed Systems

Learning Opportunities

Interested in learning more about any of the topics on this schedule? If you are, then make sure to connect with members of the OS Sketch community for more learning opportunities. Remember, this course emphasizes building mastery of the course's learning objectives through the process of "learning by doing" As such, you can best understand the content on this schedule by completing all of the projects on this site!


Updated: 2022-11-17   Created: 2022-08-29
Create an issue to share feedback on "Course Schedule"
Check out all the exciting topics covered on this site
Recent Author: antlet