Operating Systems Design and Implementation (3rd Edition)
6.1. Suggestions for Further Reading
Below is a list of suggested readings keyed by chapter. 6.1.1. Introduction and General Works
Bovet and Cesati, Understanding the Linux Kernel, 3rd Ed. For anyone wishing to understand how the Linux kernel works internally, this book is probably your best bet. Brinch Hansen, Classic Operating Systems Operating system have been around long enough now that some of them can be considered classic: systems that changed how the world looked at computers. This book is a collection of 24 papers about seminal operating systems, categorized as open shop, batch, multiprogramming, timesharing, personal computer, and distributed operating systems. Anyone interested in the history of operating systems should read this book. Brooks, The Mythical Man-Month: Essays on Software Engineering A witty, amusing, and informative book on how not to write an operating system by someone who learned the hard way. Full of good advice. Corbató, "On Building Systems That Will Fail" In his Turing Award lecture, the father of timesharing addresses many of the same concerns that Brooks does in the Mythical Man-Month. His conclusion is that all complex systems will ultimately fail, and that to have any chance for success at all, it is absolutely essential to avoid complexity and strive for simplicity and elegance in design. Deitel et al, Operating Systems, 3rd Ed. A general textbook on operating systems. In addition to the standard material, it contains detailed case studies of Linux and Windows XP. Dijkstra, "My Recollections of Operating System Design" Reminiscences by one of the pioneers of operating system design, starting back in the days when the term "operating system" was not yet known. IEEE, Information TechnologyPortable Operating System Interface (POSIX), Part 1: System Application Program Interface (API) [C Language] This is the standard. Some parts are actually quite readable, especially Annex B, "Rationale and Notes," which sheds light on why things are done as they are. One advantage of referring to the standard document is that, by definition, there are no errors. If a typographical error in a macro name makes it through the editing process it is no longer an error, it is official. Lampson, "Hints for Computer System Design" Butler Lampson, one of the world's leading designers of innovative operating systems, has collected many hints, suggestions, and guidelines from his years of experience and put them together in this entertaining and informative article. Like Brooks' book, this is required reading for every aspiring operating system designer. Lewine, POSIX Programmer's Guide This book describes the POSIX standard in a much more readable way than the standards document itself, and includes discussions on how to convert older programs to POSIX and how to develop new programs for the POSIX environment. There are numerous examples of code, including several complete programs. All POSIX-required library functions and header files are described. McKusick and Neville-Neil, The Design and Implementation of the FreeBSD Operating System For a thorough explanation of how a modern version of UNIX, in this case FreeBSD, works inside, this is the place to look. It covers processes, I/O, memory management, networking, and just about everything else. Milojicic, "Operating Systems: Now and in the Future," Suppose you were to ask six of the world's leading experts in operating systems a series of questions about the field and where it was going. Would you get the same answers? Hint: No. Find out what they said here. Ray and Ray, Visual Quickstart Guide: UNIX, 2nd Ed. It will help you understand examples in this book if you are comfortable as a UNIX user. This is just one of a number of available beginners' guides to working with the UNIX operating system. Although implemented differently, MINIX looks like UNIX to a user, and this or a similar book will also be helpful in your work with MINIX. Russinovich and Solomon, Microsoft Windows Internals, 4th Ed. Ever wondered how Windows works inside? Wonder no more. This book tells you everything you conceivably wanted to know about processes, memory management, I/O, networking, security, and a great deal more. Silberschatz et al, Operating System Concepts, 7th Ed. Another textbook on operating systems. It covers processes, storage management, files, and distributed systems. Two case studies are given: Linux and Windows XP. Stallings, Operating Systems, 5th Ed. Still another textbook on operating systems. It covers all the usual topics, and also includes a small amount of material on distributed systems, plus an appendix on queueing theory. Stevens and Rago, Advanced Programming in the UNIX Environment, 2nd Ed. This book tells how to write C programs that use the UNIX system call interface and the standard C library. Examples have been tested on FreeBSD 5.2.1, Linux 2.4.22 kernel; Solaris 9; and Darwin 7.4.0, and the FreeBSD/Mach base of Mac OS X 10.3. The relationship of these implementations to POSIX is described in detail. 6.1.2. Processes
Andrews and Schneider, "Concepts and Notations for Concurrent Programming" A tutorial and survey of processes and interprocess communication, including busy waiting, semaphores, monitors, message passing, and other techniques. The article also shows how these concepts are embedded in various programming languages. Ben-Ari, Principles of Concurrent and Distributed Programming This book consists of three parts; the first has chapters on mutual exclusion, semaphores, monitors, and the dining philosophers problem, among others. The second part discusses distributed programming and languages useful for distributed programming. The third part is on principles of implementation of concurrency. Bic and Shaw, Operating System Principles This operating systems textbook has four chapters on processes, including not only the usual principles, but also quite a bit of material on implementation. Milo et al., "Process Migration" As clusters of PCs gradually replace supercomputers, the issue of moving processes from one machine to another (e.g., for load balancing) is becoming more relevant. In this survey, the authors discuss how process migration works, along with its benefits and pitfalls. Silberschatz et al, Operating System Concepts, 7th Ed. Chapters 3 through 7 cover processes and interprocess communication, including scheduling, critical sections, semaphores, monitors, and classical interprocess communication problems. 6.1.3. Input/Output
Chen et al., "RAID: High Performance Reliable Secondary Storage" The use of multiple disk drives in parallel for fast I/O is a trend in high end systems. The authors discuss this idea and examine different organizations in terms of performance, cost, and reliability. Coffman et al., "System Deadlocks" A short introduction to deadlocks, what causes them, and how they can be prevented or detected. Corbet et al., Linux Device Drivers, 3rd Ed. If you really really really want to know how I/O works, try writing a device driver. This book tells you how to do it for Linux. Geist and Daniel, "A Continuum of Disk Scheduling Algorithms" A generalized disk arm scheduling algorithm is presented. Extensive simulation and experimental results are given. Holt, "Some Deadlock Properties of Computer Systems" A discussion of deadlocks. Holt introduces a directed graph model that can be used to analyze some deadlock situations. IEEE Computer Magazine, March 1994 This issue of Computer contains eight articles on advanced I/O, and covers simulation, high performance storage, caching, I/O for parallel computers, and multimedia. Levine, "Defining Deadlocks" In this short article, Levine raises interesting questions about conventional definitions and examples of deadlock. Swift et al., "Recovering Device Drivers" Device drivers have an error rate an order of magnitude higher than other operating system code. Is there anything that can be done to improve reliability then? This paper describes how shadow drivers can be used to achieve this goal. Tsegaye and Foss, "A Comparison of the Linux and Windows Device Driver Architecture" Linux and Windows have quite different architectures for their device drivers. This papers discusses both of them and shows how they are similar and how they are different. Wilkes et al., "The HP AutoRAID Hierarchical Storage System" An important new development in high-performance disk systems is RAID (Redundant Array of Inexpensive Disks), in which an array of small disks work together to produce a high-bandwidth system. In this paper, the authors describe in some detail the system they built at HP Labs. 6.1.4. Memory Management
Bic and Shaw, Operating System Principles Three chapters of this book are devoted to memory management, physical memory, virtual memory, and shared memory. Denning, "Virtual Memory" A classic paper on many aspects of virtual memory. Denning was one of the pioneers in this field, and was the inventor of the working set concept. Denning, "Working Sets Past and Present" A good overview of numerous memory management and paging algorithms. A comprehensive bibliography is included. Denning, "The Locality Principle" A recent look back at the history of the locality principle and a discussion of its applicability to a number of problems beyond memory paging issues. Halpern, "VIM: Taming Software with Hardware" In this provocative article, Halpern argues that a tremendous amount of money is being spent to produce, debug, and maintain software that deals with memory optimization, not only in operating systems, but also in compilers and other software. He argues that seen macro-economically, it would be better to spend this money just buying more memory and having simple straightforward, more reliable software. Knuth, The Art of Computer Programming, Vol. 1 First fit, best fit, and other memory management algorithms are discussed and compared in this book. Silberschatz et al, Operating System Concepts, 7th Ed. Chapters 8 and 9 deal with memory management, including swapping, paging, and segmentation. A variety of paging algorithms are mentioned. 6.1.5. File Systems
Denning, "The United States vs. Craig Neidorf" When a young hacker discovered and published information about how the telephone system works, he was indicted for computer fraud. This article describes the case, which involved many fundamental issues, including freedom of speech. The article is followed by some dissenting views and a rebuttal by Denning. Ghemawat et al., "The Google File System" Suppose you decided you wanted to store the entire Internet at home so you could find things really quickly. How would you go about it? Step 1 would be to buy, say, 200,000 PCs. Ordinary garden-variety PCs will do. Nothing fancy needed. Step 2 would be to read this paper to find out how Google does it. Hafner and Markoff, Cyberpunk: Outlaws and Hackers on the Computer Frontier Three compelling tales of young hackers breaking into computers around the world are told here by the New York Times computer reporter who broke the Internet worm story and his coauthor. Harbron, File Systems: Structures and Algorithms A book on file system design, applications, and performance. Both structure and algorithms are covered. Harris et al., Gray Hat Hacking: The Ethical Hacker's Handbook This book discusses legal and ethical aspects of testing computer systems for vulnerabilities, as well as providing technical information about how they are created and how they can be detected. McKusick et al., "A Fast File System for UNIX" The UNIX file system was completely reimplemented for 4.2 BSD. This paper describes the design of the new file system, and discusses its performance. Satyanarayanan, "The Evolution of Coda" As mobile computing becomes more common, the need to integrate and synchronize mobile and fixed file systems becomes more urgent. Coda was a pioneer in this area. Its evolution and operation is described in this paper. Silberschatz et al Operating System Concepts, 7th Ed. Chapters 10 and 11 are about file systems. They cover file operations, access methods, consistency semantics, directories, and protection, and implementation, among other topics. Stallings, Operating Systems, 5th Ed. Chapter 16 contains a fair amount of material about the security environment especially about hackers, viruses and other threats. Uppuluri et al., "Preventing Race Condition Attacks on File Systems" Situations exist in which a process assumes that two operations will be performed atomically, with no intervening operations. If another process manages to sneak in and perform an operation between them, security may be breached. This paper discusses the problem and proposes a solution. Yang et al., "Using Model Checking to Find Serious File System Errors" File system errors can lead to lost data, so getting them debugged is very important. This paper describes a formal technique that helps detect file system errors before they can do any damage. The results of using the model checker on actual file system code is presented. |
Категории