class: center, middle, title-slide ## CSCI 340 Operating Systems ### Midterm Exam Topics The set of topics about which questions may be asked on the Midterm Exam.
--- 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.1)
[Operating System Overview](#chapter2.1)
[Processes](#chapter3.1)
[Threads](#chapter4.1)
--- name: chapter1.1 ### 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 --- name: chapter1.2 ### Computer Systems - 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 --- name: chapter1.3 ### Computer 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 --- name: chapter1.4 ### Computer Systems - 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.1 ### 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 --- name: chapter2.2 ### Operating System Overview - 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 --- name: chapter2.3 ### Operating System Overview - Operating System Structure - Monolithic Structure - Layered or Ring Structure - Microkernels - Loadable Kernel Modules - Hybrid Operating Systems - Bootstrapping the System --- name: chapter3.1 ### 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 --- name: chapter3.2 ### Processes - 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 --- name: chapter3.3 ### Processes - 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 --- name: chapter3.4 ### Processes - 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.1 ### 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 --- name: chapter4.2 ### Threads - Thread Implementations - User Level Threads - Fork-Join Flow - Kernel Level Threads - Kernel Level Threads in Linux