Comp 354 Study Guide – Exam 1 Chapter 1 Introduction 1.1 What Operating Systems Do Purpose, goals and functions. Bootstrap process 1.2 Computer-System Organization Components and connections Interrupts, traps and interrupt vectors I/O structure, DMA, device controllers Storage structure – RAM, secondary storage, caching, device drivers 1.3 Computer-System Architecture Multiprocessors, tightly vs. loosely coupled systems Asymmetric vs. Symmetric multiprocessing Clusters 1.4 Operating-System Structure Multiprogramming, job scheduling Timesharing, multitasking, time slices, CPU scheduling 1.5 Operating-System Operations Role of interrupts, system calls User mode and kernel mode Timers, preemption 1.6 Process Management Processes and threads Process resources Multiplexing and context switching Process synchronization, communication and deadlock 1.7 Memory Management Goals and activities 1.8 Storage Management The file abstraction Medium and device properties Directory structure and access control OS activities for storage management Buffering and spooling 1.9 Protection and Security User and group IDs, privilege levels 1.10 Kernel Data Structures The usual suspects, bitmaps 1.11 Computing Environments The usual suspects, client-server, virtualization, cloud computing 1.12 Open-Source Operating Systems Role of open-source in OS – Linux, GNU Chapter 2 Operating-System Structures 2.1 Operating-System Services Command Line, GUI, Batch Program execution, File system, I/O, communication, errors, debugging Resource allocation, protection How services provided 2.2 User and Operating-System Interface Shells, commands, desktop metaphor 2.3 System Calls Relationship to APIs Implementation and parameter passing 2.4 Types of System Calls Process control, File & device management, system information, communications, protection 2.5 System Programs Types Registry Background vs. foreground, services and daemons 2.6 Operating-System Design and Implementation Goals, policies and mechanisms Languages used 2.7 Operating-System Structure Layered approach Microkernel vs. monolithic Loadable kernel modules 2.8 Operating-System Debugging Log files and core dumps Tracing and profiling Single step mode Performance monitoring and tuning 2.9 Operating-System Generation - Omit 2.10 System Boot – already covered Chapter 3 Processes 3.1 Process Concept Components Process state and state transitions PCB and context switching 3.2 Process Scheduling Scheduler and scheduling queues Long term vs. short term I/O-bound vs. CPU-bound 3.3 Operations on Processes Parent and children processes Process creation – fork and exec in Unix Process termination Multiprocess architecture 3.4 Interprocess Communication Independent and cooperating processes Shared memory vs. message passing Producer-consumer problem – description only Direct vs. indirect communication Blocking vs. non-blocking 3.5 Examples of IPC Systems – nothing specific 3.6 Communication in Client-Server Systems Sockets, RPCs and pipes Chapter 4 Threads 4.1 Overview Motivation for and benefits of threads 4.2 Multicore Programming Dividing and balancing work, data splitting and dependencies Parallelism and concurrency Hyperthreading Multithreaded processes Amdahl’s law User threads and kernel threads 4.3 Multithreading Models – omit 4.4 Thread Libraries Two approaches Pthreads – what is it? 4.5 Implicit Threading Concept, thread pools, OpenMP 4.6 Threading Issues How does fork work with threads Signals and signal handling Thread cancellation 4.7 Operating-System Examples Linux threads