📄 Executive Summary
Operating Systems and Middleware: Supporting Controlled Interaction is designed for upper-level undergraduate computer science students and software developers who possess a foundation in general programming and computer organization. The textbook centers on how system software coordinates and isolates computations across single machines, across time via persistent storage, and across space via computer networks. Rather than focusing exclusively on standalone operating system artifacts or bundled graphical user interfaces, the text bridges operating system kernels and application-level middleware to examine the shared principles of resource management and concurrency control.
The curriculum begins with concurrent execution on a single computer, distinguishing between threads as units of execution and processes as protection domains. It covers processor scheduling models—including fixed-priority, dynamic earliest-deadline-first, decay usage, and proportional-share mechanisms—before addressing synchronization challenges such as race conditions, deadlocks, monitors, semaphores, and nonblocking algorithms. The text then transitions to larger scopes of interaction, examining atomic transactions, two-phase locking, write-ahead logging, and two-phase commit protocols across databases and message-queuing systems. Moving down the abstraction stack, it analyzes virtual memory mechanisms, page table architectures, memory protection boundaries, and access control models including capabilities and access control lists. The progression culminates in persistent storage design—such as inode structures, B-trees, and journaled file systems—and distributed communication through layered networking protocols, socket interfaces, remote procedure calls, and web services. Security is integrated throughout every topic and consolidated in a final framework centered on risk management, authentication, and malware defense.
Through hands-on exercises and exploration projects, readers learn to implement concurrent software using POSIX threads and Java, write transactional queries in SQL, build client-server programs with network sockets and Java Remote Method Invocation, and evaluate system security threats such as buffer overflows and denial-of-service vectors. After working through the book, readers will be equipped to analyze architectural tradeoffs in system design, select appropriate synchronization and persistence models, and debug complex multithreaded or distributed applications. To keep its scope focused on foundational system services, the book explicitly excludes user-interface shells and desktop application environments, physical network hardware engineering, the presentation and session layers of the OSI model, and proprietary persistent object frameworks.