class: center, middle, title-slide ## CSCI 340 Operating Systems ### Midterm Exam Topics
--- name: cc-notice template: default layout: true .bottom-left[© Stewart Weiss. CC-BY-SA.] --- name: tinted-slide template: cc-notice layout: true class: tinted --- name:toc ### Table of Contents [Computer Systems](#chapter1)
[Operating System Overview](#chapter2)
[Processes](#chapter3)
[Threads](#chapter4)
--- name: chapter1 ### Computer Systems - Computer System Components - Layered Model of Computer System - Operating System Requirements and Services - System Programs - The General Structure of a Typical Computer - Device Drivers - Computer System Operations - Typical I/O Read Operation - Interrupts: - Finding and Running the Interrupt Service Routine - Interrupt Masking and Priorities - Traps and Exceptions - Interrupt-Driven I/O - Storage Concepts - Measuring Storage - The Different Types of Storage - The Memory Hierarchy - Storage in the CPU - Random Access Memory - Magnetic Disk Drives and Solid-State Drives - Tertiary Storage Media - Caches and Caching - Processor Cache - I/O and Direct Memory Access (DMA) and its Operation - Single Processor Systems - Multicomputer and Multiprocessor Architectures - Symmetric Multiprocessors - Multi-core SMP - Non-Uniform Memory Access Multiprocessors - Clustered Systems - System Start-Up - Multiprogramming - Batch Processing - Interactive Computing - Time-sharing Infrastructure - Multitasking - Protection Levels - Use of Dual-Mode Operation - System Call Sequence and Flow in Linux - Timers - Process Management - Memory Management - File System Management - Storage Management - Cache Management - The I/O Subsystem - Protection and Security - Distributed Systems - Network and Distributed Operating Systems - Free and Open Source Software and Operating Systems --- name: chapter2 ### Operating System Overview - Services Provided by the System - User Interfaces - Services For Users - Schematic View of Services - Command-Line Interfaces and Command-Line Interpreters - Graphical User Interface - Touchscreen Interface - Batch System Monitor - Application Programming Interfaces - What is POSIX - Distinction Between System Calls and Their Wrappers - System Call Implementation - System Call Parameter Passing - System Programs versus Applications - Program Development - Software Libraries - Steps in Building an Executable - Dynamic versus Static Linking - Advantages of Static Linking - Displaying Information About Object Files - Portability and Solutions to Creating Portable Executables - Operating System Design - Design Principles - Mechanisms and Policies - Programming Languages for Implementation - Operating System Structure - Monolithic Structure - Layered or Ring Structure - Microkernels - Loadable Kernel Modules - Hybrid Operating Systems - Bootstrapping the System --- name: chapter3 ### Processes - The Process Abstraction - Process Representation - The Memory Image - From File to Process - Mapping the File to Memory - Process Context - Process Execution State - Process State Transitions - The Process Control Block - Process Scheduling - Types of Process Scheduling - Medium-Term Scheduling - The Swapper - The Short-Term, or CPU, Scheduler - Queuing of Processes - Context Switches - Exceptions and Interrupts Revisited - Interrupts, System Calls, and Context Switches - Process Creation - The fork() System Call - Overhead of fork() - The UNIX execve() System Call - Process Termination - Process Termination Issues - The wait() System Call - Concurrency - Cooperating Processes - Interprocess Communication Methods - The Shared Memory Model - Shared Memory Support in Linux - The Message-Passing Model - Message Passing Implementation - IPC Models Visualized - Issues In Message Passing - Direct Communication - Indirect Communication - Synchronous and Asynchronous Operations - Buffering in Message-Passing - Pipes Named and Unnamed - Unnamed Pipes - Using Unnamed Pipes - Drawbacks of Unnamed Pipes - Named Pipes - Creating and Using Named Pipes - Producer Consumer Problem in Shared Memory - Producer Consumer Problem: Message-Passing --- name: chapter4 ### Threads - What is a Thread? - Thread Resources - Single- and Multi-Threaded Processes - Reasons for Multi-threading - Concurrency Versus Parallelism - Challenges in Parallel Programming - Sources of Parallelism in Problems - Speed-Up - Limitations of Parallelization - Amdahl's Law and Applications - Maximum Possible Speedup - Multi-threading Models - Thread Implementations - User Level Threads - Fork-Join Flow