Operating System Paradigms: Unit 1: O/S Structure central processing unit (CPU) memory and RAM (and DRAM) firmware and ROM (or EEPROM) input/output (I/O) devices instruction-execution cycle instruction register storage device hierarchy small computer-systems interface (SCSI) direct memory access (DMA) device driver multiprocessor system (parallel systems) symmetric multi-processing (SMP) uniform memory access (UMA) non-uniform memory access (NUMA) multiple computing cores blade server clustered system Beowulf clusters storage-area networks (SANs) multiprogramming job pool and job scheduling time sharing or multitasking interactive (hands-on) computer system response time process virtual memory swapping interrupt driven trap or exception dual-mode user mode kernel mode privileged instructions timer process management program counter memory management instruction-fetch cycle data-fetch cycle file mass-storage caching cache management I/O subsystem protection security network operating system real-time operating systems handheld system multimedia system client-server peer-to-peer open-source operating system Linux BSD UNIX Solaris system call microkernel performance tuning operating system generation system boot system and application programs operating system services helpful to users graphical user interface (GUI) command interpreter program execution I/O operations file-system manipulation communications error detection operating-system functions that ensure the efficient operation of the system itself recourse allocation accounting protection and security system calls system-call interface types of system calls application programming interface (API) systems programs file manager programs and text editors logging, registry, system information viewer compilers, interpreters, assemblers, and debuggers communication programs such as Web browser operating system structure layered approach kernel microkernel approach mach modular kernels virtual machine and virtualization para-virtualization zones or containers simulation VMware architecture Java virtual machine just-in-time (JIT) compiler operating-system design: goals, mechanisms, and policies operating-system implementation: language issue operating-system debugging debugger core dump crash dump operating-system performance tuning profiling operating-system generation system boot boot block GRUB Unit 2: Process Management process cooperation interprocess communication (IPC) shared-memory message passing producer-consumer problem bounded and unbounded buffer direct and indirect communication naming mailbox or port synchronization buffering zero, bounded, and unbounded capacity POSIX shared memory message passing in Mach local procedure calls in Windows communication in client-server systems sockets remote procedure calls (RPCs) port stub matchmaker ACK message pipe named pipe thread multithreaded programming multithreaded process and single-threaded process multicore programming multithreading models many-to-one model one-to-one model many-to-many model two-level model user threads kernel threads thread libraries Pthreads Java threads Windows threads thread cancellation signal handling in multithreaded programs thread pool lightweight process (LWP) thread-specific data scheduler activations fork(), exec(), and clone() threads implementation in operating systems Linux threads Windows threads ynchronization race condition critical-section and critical-section problem mutual exclusion progress bounded waiting Peterson’s solution hardware instructions executed atomically swap() testandset() semaphores wait(S) signal(S) mutex locks or binary semaphore counting semaphore spinlock busy waiting CPU scheduling process scheduling thread scheduling CPU burst and I/O burst CPU scheduler or short-term scheduler pre-emptive scheduling non-pre-emptive or cooperative scheduling dispatcher dispatcher latency scheduling criteria CPU utilization throughput turnaround time waiting time response time Gantt chart scheduling algorithms first-come, first-served (FAFS) shortest-job-first (SJF) shortest-next-CPU-burst shortest-remaining-time-first priority scheduling aging starvation of indefinite blocking round-robin (RR) scheduling multilevel queue scheduling multilevel feedback queue scheduling thread scheduling process-contention scope (PCS) system-contention scope (SCS) Pthread scheduling multiple-processor scheduling asymmetric multiprocessing symmetric multiprocessing (SMP) processor affinity soft affinity hard affinity load balancing multicore processor scheduling scheduling in virtual machines Linux scheduling Windows scheduling Solaris scheduling scheduling algorithm evaluation deterministic modeling queueing model Little’s formula queueing-network analysis block() and wakeup(P) deadlocks starvation or indefinite blocking priority inversion classic problems of synchronization bounded-buffer problem readers-writers problem dining-philosophers problem monitors monitor type conditions synchronization in Solaris in Windows in Linux atomic transaction commit, abort, and roll back write-ahead logging log-based recovery checkpoints concurrent atomic transactions serializability serial schedule nonserial schedule conflicting operations conflict serializable locking protocol two-phase locking protocol (2PL) timestamp-based protocol deadlock necessary conditions for a deadlock to arise mutual exclusion hold and wait no pre-emption circular wait resource-allocation graph deadlock prevention deadlock avoidance safe state safe sequence resource-allocation-graph algorithm Banker’s algorithm safety algorithm resource-request algorithm deadlock detection wait-for graph detection algorithm recovery from deadlock Unit 3: Storage Management address binding compile time binding execution time binding load time binding logical address virtual address memory management unit (MMU) dynamic loading static and dynamic linking swapping contiguous allocation partitioning variable-partition scheme fragmentation external fragmentation internal fragmentation compaction paging page frame page table frame table page-table base register (PTBR) translation look-aside buffer (TLB) hit-ratio frame protection multilevel paging hash-page table inverted page table segment segment table segmentation segmentation with paging local descriptor table (LDT) global descriptor table (GDT) basic file system logical file system file-control block mount table virtual file systems dynamic storage allocation external fragmentation file allocation table (FAT) index block linked allocation combined index backup recovery consistency checking device drivers bus structure memory-mapped I/O registers for I/O ports busy-waiting or polling interrupt-driven I/O programmed I/O (PIO) DMA block and character devices blocking and nonblocking I/O kernel I/O subsystem I/O scheduling buffering caching spooling virtual memory demand paging lazy swapper pager page fault locality of reference page fault rate copy-on-write page replacement reference string first-in first-out page replacement optimal page replacement Belady’s anomaly least-recently-used page replacement page-buffering algorithm frame allocation global page replacement local page replacement thrashing working-set model memory-mapped files and I/O shared memory prepaging I/O interlock open file table file organization file structure packing internal fragmentation, files access method sequential access relative access logical record random access indexed indexed sequential access relative block number directory tree structured directory subdirectory device directory acyclic graph directory symbolic link mount point immutable shared files access control list magnetic disk and tape logical block constant linear velocity (CLV) constant angular velocity (CAV) host-attached and network-attached storage SCSI fiber channel (FC) storage-area network disk scheduling seek time rotational latency bandwidth first-come, first-served (FCFS) shortest-seek-time-first (SSTF) scan scheduling (SCAN) or elevator algorithm circular SCAN (C-SCAN) look scheduling (LOOK) disk formatting logical formatting physical formatting Unit 4: Protection & Security protection policies and mechanisms protection domain domain switching access matrix access list capability list lock-key scheme access control capacity-based protection language-based protection boot block master boot record (MBR) bad blocks swap-space management redundant arrays of independent disks (RAIDs) data striping bit-level striping block-level striping RAID levels stable-storage implementation tertiary-storage structure removable media denial-of-service (DOS) replay attack man-in-the-middle attack session hijacking phishing dumpster diving back-door demon Trojan horse spyware covert channels trap door logic bomb virus worm zombie system distributed DOS cryptography decryption encryption symmetric encryption data encryption standard (DES) advanced encryption standard (AES) asymmetric encryption RSA (Rivest, Shamir, and Adleman) public key private key authentication message-authentication code (MAC) digital-signature digital certificate certificate authorities SSL session key user authentication security through obscurity auditing, accounting, and logging computer-security classification Unit 5: Distributed, Real-time, Datadriven Systems distributed system network operating system distributed operating system data migration computation migration process migration network structure communication structure naming name resolution routing connection contention communication protocols distributed file system (DFS) naming structures name scheme remote file access file replication virtual machines virtual machine manager (VMM) hypervisor Paravirtualization Emulators Disk partitioning Xen VMware Live migration Cloud computing Virtual CPU (VCPU) Page tables Virtual machine control structure Control partition Java virtual machine (JVM) Memory overcommitment Network address translation (NAT) Bytecode Garbage collection