وبلاگ بلیان

Operating Systems In Depth: Design and Programming

معرفی کتاب «Operating Systems In Depth: Design and Programming» نوشتهٔ Thomas W. Doeppner، منتشرشده توسط نشر John Wiley & Sons در سال 2010. این کتاب در فرمت pdf، زبان انگلیسی ارائه شده است. «Operating Systems In Depth: Design and Programming» در دستهٔ بدون دسته‌بندی قرار دارد.

This book is designed for a one-semester operating-systems course for advanced undergraduates and beginning graduate students. Prerequisites for the course generally include an introductory course on computer architecture and an advanced programming course. The goal of this book is to bring together and explain current practice in operating systems. This includes much of what is traditionally covered in operating-system textbooks: concurrency, scheduling, linking and loading, storage management (both real and virtual), file systems, and security. However, the book also covers issues that come up every day in operating-systems design and implementation but are not often taught in undergraduate courses. For example, the text includes: Deferred work, which includes deferred and asynchronous procedure calls in Windows, tasklets in Linux, and interrupt threads in Solaris. The intricacies of thread switching, on both uniprocessor and multiprocessor systems. Modern file systems, such as ZFS and WAFL. Distributed file systems, including CIFS and NFS version 4. The book and its accompanying significant programming projects make students come to grips with current operating systems and their major operating-system components and to attain an intimate understanding of how they work. Cover Title Page Copyright Preface Contents 1 Introduction 1.1 Operating Systems 1.1.1 Operating Systems as a Field of Study 1.2 A Brief History of Operating Systems 1.2.1 The 1950s: The Birth of the Concept 1.2.2 The 1960s: The Modern OS Takes Form 1.2.3 Minicomputers and Unix 1.2.4 The Personal Computer 1.3 A Simple OS 1.3.1 OS Structure 1.3.2 Processes, Address Spaces, and Threads 1.3.3 Managing Processes 1.3.4 Loading Programs into Processes 1.3.5 Files 1.4 Beyond a Simple OS 1.4.1 Extensions 1.4.2 New Functionality 1.5 Conclusions 1.6 Exercises 1.7 References 2 Multithreaded Programming 2.1 Why Threads? 2.2 Programming with Threads 2.2.1 Thread Creation and Termination 2.2.2 Threads and C++ 2.2.3 Synchronization 2.2.4 Thread Safety 2.2.5 Deviations 2.3 Conclusions 2.4 Exercises 2.5 References 3 Basic Concepts 3.1 Context Switching 3.1.1 Procedures 3.1.2 Threads and Coroutines 3.1.3 System Calls 3.1.4 Interrupts 3.2 Input/Output Architectures 3.3 Dynamic Storage Allocation 3.3.1 Best-Fit and First-Fit Algorithms 3.3.2 Buddy System 3.3.3 Slab Allocation 3.4 Linking and Loading 3.4.1 Static Linking and Loading 3.4.2 Shared Libraries 3.5 Booting 3.6 Conclusions 3.7 Exercises 3.8 References 4 Operating-System Design 4.1 A Simple System 4.1.1 A Framework for Devices 4.1.2 Low-Level Kernel 4.1.3 Processes and Threads 4.1.4 Storage Management 4.2 Rethinking Operating-System Structure 4.2.1 Virtual Machines 4.2.2 Microkernels 4.3 Conclusions 4.4 Exercises 4.5 References 5 Processor Management 5.1 Threads Implementations 5.1.1 Strategies 5.1.2 A Simple Threads Implementation 5.1.3 Multiple Processors 5.2 Interrupts 5.2.1 Interrupt Handlers 5.2.2 Deferred Work 5.2.3 Directed Processing 5.3 Scheduling 5.3.1 Strategy 5.3.2 Tactics 5.3.3 Case Studies 5.4 Conclusions 5.5 Exercises 5.6 References 6 File Systems 6.1 The Basics of File Systems 6.1.1 Unix’s S5FS 6.1.2 Disk Architecture 6.1.3 Problems with S5FS 6.1.4 Improving Performance 6.1.5 Dynamic Inodes 6.2 Crash Resiliency 6.2.1 What Goes Wrong 6.2.2 Dealing with Crashes 6.3 Directories and Naming 6.3.1 Directories 6.3.2 Name-Space Management 6.4 Multiple Disks 6.4.1 Redundant Arrays of Inexpensive Disks (RAID) 6.5 Flash Memory 6.5.1 Flash Technology 6.5.2 Flash-Aware File Systems 6.5.3 Augmenting Disk Storage 6.6 Case Studies 6.6.1 FFS 6.6.2 Ext3 6.6.3 Reiser FS 6.6.4 NTFS 6.6.5 WAFL 6.6.6 ZFS 6.7 Conclusions 6.8 Exercises 6.9 References 7 Memory Management 7.1 Memory Management in the Early Days 7.2 Hardware Support for Virtual Memory 7.2.1 Forward-Mapped Page Tables 7.2.2 Linear Page Tables 7.2.3 Hashed Page Tables 7.2.4 Translation Lookaside Buffers 7.2.5 64-Bit Issues 7.2.6 Virtualization 7.3 Operating-System Issues 7.3.1 General Concerns 7.3.2 Representative Systems 7.3.3 Copy on Write and Fork 7.3.4 Backing Store Issues 7.4 Conclusions 7.5 Exercises 7.6 References 8 Security 8.1 Security Goals 8.1.1 Threats 8.2 Security Architectures 8.2.1 Access Control in Traditional Systems 8.2.2 Mandatory Access Control 8.2.3 Capability Systems 8.3 Conclusions 8.4 Exercises 8.5 References 9 Introduction to Networking 9.1 Network Basics 9.1.1 Network Protocols 9.2 Remote Procedure Call Protocols 9.2.1 Marshalling 9.2.2 Reliable Semantics 9.3 Conclusions 9.4 Exercises 9.5 References 10 Distributed File Systems 10.1 The Basics 10.2 NFS Version 2 10.2.1 RPC Semantics 10.2.2 Mount Protocol 10.2.3 NFS File Protocol 10.2.4 Network Lock Manager 10.3 Common Internet File System (CIFS) 10.3.1 Server Message Block (SMB) Protocol 10.3.2 Opportunistic Locks 10.4 DFS 10.5 NFS Version 4 10.5.1 Managing State 10.5.2 Dealing with Failure 10.6 Conclusions 10.7 Exercises 10.8 References Appendix Index of URLs Index Programmers Don't Want To Just Read About The Core Concepts Of Operating Systems. They Want To Learn How To Apply The Material By Actually Building Applications. This New Book Motivates Them By Presenting Numerous Programming Exercises At The Code Level. They Are Not Only Introduced To The Os Concepts And Abstractions, But Also The Implementation. Two Design Projects Are Integrated Throughout The Book That They'll Be Able To Follow To Get Them Into The Code. Self-assessment And Review Material Is Presented At The End Of Each Chapter To Reinforce Concepts. These Features Help To Make This An Excellent Resource For Programmers To Gain Invaluable Experience.-- Multithreaded Programming -- Basic Concepts -- Operating-system Design -- Processor Management -- File Systems -- Memory Management -- Security -- Introduction To Networking -- Distributed File Systems. Thomas W. Doeppner. Includes Bibliographical References And Index. "Programmers don't want to just read about the core concepts of operating systems. They want to learn how to apply the material by actually building applications. This new book motivates them by presenting numerous programming exercises at the code level. They are not only introduced to the OS concepts and abstractions, but also the implementation. Two design projects are integrated throughout the book that they'll be able to follow to get them into the code. Self-assessment and review material is presented at the end of each chapter to reinforce concepts. These features help to make this an excellent resource for programmers to gain invaluable experience."-- Provided by publisher Preface Introduction Multithreaded Programming Basic Concepts Operating-System Design Process Management File Systems Memory Management Security Introduction to Networking Distributed File Systems Index of UFLs Index
دانلود کتاب Operating Systems In Depth: Design and Programming