Chapter 4 - Threads - heavyweight vs. lightweight - The register/stack/code/data/files view of threads of execution - Four major categories of benefits of multiprogramming - responsiveness, resource sharing, economy, multiprocessor utilization - user threads vs kernel threads - many-to-one, one-to-one, many-to-many - pthreads (POSIX THREADS) - thread library - API - pthread attr init, pthread create, pthread join, pthread exit - Threading issues (fork?, exec?) - thread cancellation, target thread, asynchronous, deferred, cancellation points - signal handling, signal handling process, synchronous, asynchronous - default signal handler vs. user-defined signal handler - delivery (thread who signaled, every thread, certain threads, a specific thread) - thread pools (e.g. web server) Chapter 5 - CPU Scheduling - multiprogramming goal - CPU burst, I/O burst, cycle of processes - large # of short CPU bursts - I/O bound vs CPU bound - Short-term scheduler selects a process when a process switches from: running to waiting, running to ready, waiting to ready, running to terminated - nonpreemptive (cooperating) schedule scheme vs. preemptive scheduling scheme - dispatcher (switch context, switch to user mode, jump to proper location in user program), dispatch latency - scheduling criteria (CPU utilization, throughput, turnaround time, waiting time, response time) - Scheduling Algorithms, Gantt chart, FCFS, SJF, priority scheduling (internal or external), RR, burst prediction, time quantum, context switch delay - Finding: average wait time, average first response time