Operating System Concepts
معرفی کتاب «Operating System Concepts» نوشتهٔ Abraham Silberschatz, Greg Gagne, Peter B. Galvin، منتشرشده توسط نشر Wiley Global Education US در سال 2018. این کتاب در 4 صفحه، فرمت pdf، زبان انگلیسی ارائه شده است. «Operating System Concepts» در دستهٔ بدون دستهبندی قرار دارد.
The tenth edition of Operating System Concepts has been revised to keep it fresh and up-to-date with contemporary examples of how operating systems function, as well as enhanced interactive elements to improve learning and the student’s experience with the material. It combines instruction on concepts with real-world applications so that students can understand the practical usage of the content. End-of-chapter problems, exercises, review questions, and programming exercises help to further reinforce important concepts. New interactive self-assessment problems are provided throughout the text to help students monitor their level of understanding and progress. A Linux virtual machine (including C and Java source code and development tools) allows students to complete programming exercises that help them engage further with the material. Cover Title Page Copyright Preface Contents PART ONE OVERVIEW Chapter 1 Introduction 1.1 What Operating Systems Do 1.1.1 User View 1.1.2 System View 1.1.3 Defining Operating Systems 1.2 Computer-System Organization 1.2.1 Interrupts 1.2.2 Storage Structure 1.2.3 I/O Structure 1.3 Computer-System Architecture 1.3.1 Single-Processor Systems 1.3.2 Multiprocessor Systems 1.3.3 Clustered Systems 1.4 Operating-System Operations 1.4.1 Multiprogramming and Multitasking 1.4.2 Dual-Mode and Multimode Operation 1.4.3 Timer 1.5 Resource Management 1.5.1 Process Management 1.5.2 Memory Management 1.5.3 File-System Management 1.5.4 Mass-Storage Management 1.5.5 Cache Management 1.5.6 I/O System Management 1.6 Security and Protection 1.7 Virtualization 1.8 Distributed Systems 1.9 Kernel Data Structures 1.9.1 Lists, Stacks, and Queues 1.9.2 Trees 1.9.3 Hash Functions and Maps 1.9.4 Bitmaps 1.10 Computing Environments 1.10.1 Traditional Computing 1.10.2 Mobile Computing 1.10.3 Client–Server Computing 1.10.4 Peer-to-Peer Computing 1.10.5 Cloud Computing 1.10.6 Real-Time Embedded Systems 1.11 Free and Open-Source Operating Systems 1.11.1 History 1.11.2 Free Operating Systems 1.11.3 GNU/Linux 1.11.4 BSD UNIX 1.11.5 Solaris 1.11.6 Open-Source Systems as Learning Tools 1.12 Summary Practice Exercises Further Reading Bibliography Chapter 1 Exercises Chapter 2 Operating-System Structures 2.1 Operating-System Services 2.2 User and Operating-System Interface 2.2.1 Command Interpreters 2.2.2 Graphical User Interface 2.2.3 Touch-Screen Interface 2.2.4 Choice of Interface 2.3 System Calls 2.3.1 Example 2.3.2 Application Programming Interface 2.3.3 Types of System Calls 2.4 System Services 2.5 Linkers and Loaders 2.6 Why Applications Are Operating-System Specific 2.7 Operating-System Design and Implementation 2.7.1 Design Goals 2.7.2 Mechanisms and Policies 2.7.3 Implementation 2.8 Operating-System Structure 2.8.1 Monolithic Structure 2.8.2 Layered Approach 2.8.3 Microkernels 2.8.4 Modules 2.8.5 Hybrid Systems 2.9 Building and Booting an Operating System 2.9.1 Operating-System Generation 2.9.2 System Boot 2.10 Operating-System Debugging 2.10.1 Failure Analysis 2.10.2 Performance Monitoring and Tuning 2.10.3 Tracing 2.10.4 BCC 2.11 Summary Practice Exercises Further Reading Bibliography Chapter 2 Exercises Programming Problems Programming Projects PART TWO PROCESS MANAGEMENT Chapter 3 Processes 3.1 Process Concept 3.1.1 The Process 3.1.2 Process State 3.1.3 Process Control Block 3.1.4 Threads 3.2 Process Scheduling 3.2.1 Scheduling Queues 3.2.2 CPU Scheduling 3.2.3 Context Switch 3.3 Operations on Processes 3.3.1 Process Creation 3.3.2 Process Termination 3.4 Interprocess Communication 3.5 IPC in Shared-Memory Systems 3.6 IPC in Message-Passing Systems 3.6.1 Naming 3.6.2 Synchronization 3.6.3 Buffering 3.7 Examples of IPC Systems 3.7.1 POSIX Shared Memory 3.7.2 Mach Message Passing 3.7.3 Windows 3.7.4 Pipes 3.8 Communication in Client–Server Systems 3.8.1 Sockets 3.8.2 Remote Procedure Calls 3.9 Summary Practice Exercises Further Reading Bibliography Chapter 3 Exercises Programming Problems Programming Projects Chapter 4 Threads & Concurrency 4.1 Overview 4.1.1 Motivation 4.1.2 Benefits 4.2 Multicore Programming 4.2.1 Programming Challenges 4.2.2 Types of Parallelism 4.3 Multithreading Models 4.3.1 Many-to-One Model 4.3.2 One-to-One Model 4.3.3 Many-to-Many Model 4.4 Thread Libraries 4.4.1 Pthreads 4.4.2 Windows Threads 4.4.3 Java Threads 4.5 Implicit Threading 4.5.1 Thread Pools 4.5.2 Fork Join 4.5.3 OpenMP 4.5.4 Grand Central Dispatch 4.5.5 Intel Thread Building Blocks 4.6 Threading Issues 4.6.1 The fork() and exec() System Calls 4.6.2 Signal Handling 4.6.3 Thread Cancellation 4.6.4 Thread-Local Storage 4.6.5 Scheduler Activations 4.7 Operating-System Examples 4.7.1 Windows Threads 4.7.2 Linux Threads 4.8 Summary Practice Exercises Further Reading Bibliography Chapter 4 Exercises Programming Problems Programming Projects Chapter 5 CPU Scheduling 5.1 Basic Concepts 5.1.1 CPU–I/O Burst Cycle 5.1.2 CPU Scheduler 5.1.3 Preemptive and Nonpreemptive Scheduling 5.1.4 Dispatcher 5.2 Scheduling Criteria 5.3 Scheduling Algorithms 5.3.1 First-Come, First-Served Scheduling 5.3.2 Shortest-Job-First Scheduling 5.3.3 Round-Robin Scheduling 5.3.4 Priority Scheduling 5.3.5 Multilevel Queue Scheduling 5.3.6 Multilevel Feedback Queue Scheduling 5.4 Thread Scheduling 5.4.1 Contention Scope 5.4.2 Pthread Scheduling 5.5 Multi-Processor Scheduling 5.5.1 Approaches to Multiple-Processor Scheduling 5.5.2 Multicore Processors 5.5.3 Load Balancing 5.5.4 Processor Affinity 5.5.5 Heterogeneous Multiprocessing 5.6 Real-Time CPU Scheduling 5.6.1 Minimizing Latency 5.6.2 Priority-Based Scheduling 5.6.3 Rate-Monotonic Scheduling 5.6.4 Earliest-Deadline-First Scheduling 5.6.5 Proportional Share Scheduling 5.6.6 POSIX Real-Time Scheduling 5.7 Operating-System Examples 5.7.1 Example: Linux Scheduling 5.7.2 Example: Windows Scheduling 5.7.3 Example: Solaris Scheduling 5.8 Algorithm Evaluation 5.8.1 Deterministic Modeling 5.8.2 Queueing Models 5.8.3 Simulations 5.8.4 Implementation 5.9 Summary Practice Exercises Further Reading Bibliography Chapter 5 Exercises Programming Projects PART THREE PROCESS SYNCHRONIZATION Chapter 6 Synchronization Tools 6.1 Background 6.2 The Critical-Section Problem 6.3 Peterson’s Solution 6.4 Hardware Support for Synchronization 6.4.1 Memory Barriers 6.4.2 Hardware Instructions 6.4.3 Atomic Variables 6.5 Mutex Locks 6.6 Semaphores 6.6.1 Semaphore Usage 6.6.2 Semaphore Implementation 6.7 Monitors 6.7.1 Monitor Usage 6.7.2 Implementing a Monitor Using Semaphores 6.7.3 Resuming Processes within a Monitor 6.8 Liveness 6.8.1 Deadlock 6.8.2 Priority Inversion 6.9 Evaluation 6.10 Summary Practice Exercises Further Reading Bibliography Chapter 6 Exercises Programming Problems Chapter 7 Synchronization Examples 7.1 Classic Problems of Synchronization 7.1.1 The Bounded-Buffer Problem 7.1.2 The Readers–Writers Problem 7.1.3 The Dining-Philosophers Problem 7.2 Synchronization within the Kernel 7.2.1 Synchronization in Windows 7.2.2 Synchronization in Linux 7.3 POSIX Synchronization 7.3.1 POSIX Mutex Locks 7.3.2 POSIX Semaphores 7.3.3 POSIX Condition Variables 7.4 Synchronization in Java 7.4.1 Java Monitors 7.4.2 Reentrant Locks 7.4.3 Semaphores 7.4.4 Condition Variables 7.5 Alternative Approaches 7.5.1 Transactional Memory 7.5.2 OpenMP 7.5.3 Functional Programming Languages 7.6 Summary Practice Exercises Further Reading Bibliography Chapter 7 Exercises Programming Problems Programming Projects Chapter 8 Deadlocks 8.1 System Model 8.2 Deadlock in Multithreaded Applications 8.2.1 Livelock 8.3 Deadlock Characterization 8.3.1 Necessary Conditions 8.3.2 Resource-Allocation Graph 8.4 Methods for Handling Deadlocks 8.5 Deadlock Prevention 8.5.1 Mutual Exclusion 8.5.2 Hold and Wait 8.5.3 No Preemption 8.5.4 Circular Wait 8.6 Deadlock Avoidance 8.6.1 Safe State 8.6.2 Resource-Allocation-Graph Algorithm 8.6.3 Banker’s Algorithm 8.7 Deadlock Detection 8.7.1 Single Instance of Each Resource Type 8.7.2 Several Instances of a Resource Type 8.7.3 Detection-Algorithm Usage 8.8 Recovery from Deadlock 8.8.1 Process and Thread Termination 8.8.2 Resource Preemption 8.9 Summary Practice Exercises Further Reading Bibliography Chapter 8 Exercises Programming Problems Programming Projects PART FOUR MEMORY MANAGEMENT Chapter 9 Main Memory 9.1 Background 9.1.1 Basic Hardware 9.1.2 Address Binding 9.1.3 Logical Versus Physical Address Space 9.1.4 Dynamic Loading 9.1.5 Dynamic Linking and Shared Libraries 9.2 Contiguous Memory Allocation 9.2.1 Memory Protection 9.2.2 Memory Allocation 9.2.3 Fragmentation 9.3 Paging 9.3.1 Basic Method 9.3.2 Hardware Support 9.3.3 Protection 9.3.4 Shared Pages 9.4 Structure of the Page Table 9.4.1 Hierarchical Paging 9.4.2 Hashed Page Tables 9.4.3 Inverted Page Tables 9.4.4 Oracle SPARC Solaris 9.5 Swapping 9.5.1 Standard Swapping 9.5.2 Swapping with Paging 9.5.3 Swapping on Mobile Systems 9.6 Example: Intel 32- and 64-bit Architectures 9.6.1 IA-32 Architecture 9.6.2 x86-64 9.7 Example: ARMv8 Architecture 9.8 Summary Practice Exercises Further Reading Bibliography Chapter 9 Exercises Programming Problems Programming Projects Chapter 10 Virtual Memory 10.1 Background 10.2 Demand Paging 10.2.1 Basic Concepts 10.2.2 Free-Frame List 10.2.3 Performance of Demand Paging 10.3 Copy-on-Write 10.4 Page Replacement 10.4.1 Basic Page Replacement 10.4.2 FIFO Page Replacement 10.4.3 Optimal Page Replacement 10.4.4 LRU Page Replacement 10.4.5 LRU-Approximation Page Replacement 10.4.6 Counting-Based Page Replacement 10.4.7 Page-Buffering Algorithms 10.4.8 Applications and Page Replacement 10.5 Allocation of Frames 10.5.1 Minimum Number of Frames 10.5.2 Allocation Algorithms 10.5.3 Global versus Local Allocation 10.5.4 Non-Uniform Memory Access 10.6 Thrashing 10.6.1 Cause of Thrashing 10.6.2 Working-Set Model 10.6.3 Page-Fault Frequency 10.6.4 Current Practice 10.7 Memory Compression 10.8 Allocating Kernel Memory 10.8.1 Buddy System 10.8.2 Slab Allocation 10.9 Other Considerations 10.9.1 Prepaging 10.9.2 Page Size 10.9.3 TLB Reach 10.9.4 Inverted Page Tables 10.9.5 Program Structure 10.9.6 I/O Interlock and Page Locking 10.10 Operating-System Examples 10.10.1 Linux 10.10.2 Windows 10.10.3 Solaris 10.11 Summary Practice Exercises Further Reading Bibliography Chapter 10 Exercises Programming Problems Programming Projects PART FIVE STORAGE MANAGEMENT Chapter 11 Mass-Storage Structure 11.1 Overview of Mass-Storage Structure 11.1.1 Hard Disk Drives 11.1.2 Nonvolatile Memory Devices 11.1.3 Volatile Memory 11.1.4 Secondary Storage Connection Methods 11.1.5 Address Mapping 11.2 HDD Scheduling 11.2.1 FCFS Scheduling 11.2.2 SCAN Scheduling 11.2.3 C-SCAN Scheduling 11.2.4 Selection of a Disk-Scheduling Algorithm 11.3 NVM Scheduling 11.4 Error Detection and Correction 11.5 Storage Device Management 11.5.1 Drive Formatting, Partitions, and Volumes 11.5.2 Boot Block 11.5.3 Bad Blocks 11.6 Swap-Space Management 11.6.1 Swap-Space Use 11.6.2 Swap-Space Location 11.6.3 Swap-Space Management: An Example 11.7 Storage Attachment 11.7.1 Host-Attached Storage 11.7.2 Network-Attached Storage 11.7.3 Cloud Storage 11.7.4 Storage-Area Networks and Storage Arrays 11.8 RAID Structure 11.8.1 Improvement of Reliability via Redundancy 11.8.2 Improvement in Performance via Parallelism 11.8.3 RAID Levels 11.8.4 Selecting a RAID Level 11.8.5 Extensions 11.8.6 Problems with RAID 11.8.7 Object Storage 11.9 Summary Practice Exercises Further Reading Bibliography Chapter 11 Exercises Programming Problems Chapter 12 I/O Systems 12.1 Overview 12.2 I/O Hardware 12.2.1 Memory-Mapped I/O 12.2.2 Polling 12.2.3 Interrupts 12.2.4 Direct Memory Access 12.2.5 I/O Hardware Summary 12.3 Application I/O Interface 12.3.1 Block and Character Devices 12.3.2 Network Devices 12.3.3 Clocks and Timers 12.3.4 Nonblocking and Asynchronous I/O 12.3.5 Vectored I/O 12.4 Kernel I/O Subsystem 12.4.1 I/O Scheduling 12.4.2 Buffering 12.4.3 Caching 12.4.4 Spooling and Device Reservation 12.4.5 Error Handling 12.4.6 I/O Protection 12.4.7 Kernel Data Structures 12.4.8 Power Management 12.4.9 Kernel I/O Subsystem Summary 12.5 Transforming I/O Requests to Hardware Operations 12.6 STREAMS 12.7 Performance 12.8 Summary Practice Exercises Further Reading Bibliography Chapter 12 Exercises PART SIX FILE SYSTEM Chapter 13 File-System Interface 13.1 File Concept 13.1.1 File Attributes 13.1.2 File Operations 13.1.3 File Types 13.1.4 File Structure 13.1.5 Internal File Structure 13.2 Access Methods 13.2.1 Sequential Access 13.2.2 Direct Access 13.2.3 Other Access Methods 13.3 Directory Structure 13.3.1 Single-Level Directory 13.3.2 Two-Level Directory 13.3.3 Tree-Structured Directories 13.3.4 Acyclic-Graph Directories 13.3.5 General Graph Directory 13.4 Protection 13.4.1 Types of Access 13.4.2 Access Control 13.4.3 Other Protection Approaches 13.5 Memory-Mapped Files 13.5.1 Basic Mechanism 13.5.2 Shared Memory in the Windows API 13.6 Summary Practice Exercises Further Reading Bibliography Chapter 13 Exercises Chapter 14 File-System Implementation 14.1 File-System Structure 14.2 File-System Operations 14.2.1 Overview 14.2.2 Usage 14.3 Directory Implementation 14.3.1 Linear List 14.3.2 Hash Table 14.4 Allocation Methods 14.4.1 Contiguous Allocation 14.4.2 Linked Allocation 14.4.3 Indexed Allocation 14.4.4 Performance 14.5 Free-Space Management 14.5.1 Bit Vector 14.5.2 Linked List 14.5.3 Grouping 14.5.4 Counting 14.5.5 Space Maps 14.5.6 TRIMing Unused Blocks 14.6 Efficiency and Performance 14.6.1 Efficiency 14.6.2 Performance 14.7 Recovery 14.7.1 Consistency Checking 14.7.2 Log-Structured File Systems 14.7.3 Other Solutions 14.7.4 Backup and Restore 14.8 Example: The WAFL File System 14.9 Summary Practice Exercises Further Reading Bibliography Chapter 14 Exercises Chapter 15 File-System Internals 15.1 File Systems 15.2 File-System Mounting 15.3 Partitions and Mounting 15.4 File Sharing 15.4.1 Multiple Users 15.5 Virtual File Systems 15.6 Remote File Systems 15.6.1 The Client–Server Model 15.6.2 Distributed Information Systems 15.6.3 Failure Modes 15.7 Consistency Semantics 15.7.1 UNIX Semantics 15.7.2 Session Semantics 15.7.3 Immutable-Shared-Files Semantics 15.8 NFS 15.8.1 Overview 15.8.2 The Mount Protocol 15.8.3 The NFS Protocol 15.8.4 Path-Name Translation 15.8.5 Remote Operations 15.9 Summary Practice Exercises Further Reading Bibliography Chapter 15 Exercises PART SEVEN SECURITY AND PROTECTION Chapter 16 Security 16.1 The Security Problem 16.2 Program Threats 16.2.1 Malware 16.2.2 Code Injection 16.2.3 Viruses and Worms 16.3 System and Network Threats 16.3.1 Attacking Network Traffic 16.3.2 Denial of Service 16.3.3 Port Scanning 16.4 Cryptography as a Security Tool 16.4.1 Encryption 16.4.2 Implementation of Cryptography 16.4.3 An Example: TLS 16.5 User Authentication 16.5.1 Passwords 16.5.2 Password Vulnerabilities 16.5.3 Securing Passwords 16.5.4 One-Time Passwords 16.5.5 Biometrics 16.6 Implementing Security Defenses 16.6.1 Security Policy 16.6.2 Vulnerability Assessment 16.6.3 Intrusion Prevention 16.6.4 Virus Protection 16.6.5 Auditing, Accounting, and Logging 16.6.6 Firewalling to Protect Systems and Networks 16.6.7 Other Solutions 16.6.8 Security Defenses Summarized 16.7 An Example: Windows 10 16.8 Summary Further Reading Bibliography Chapter 16 Exercises Chapter 17 Protection 17.1 Goals of Protection 17.2 Principles of Protection 17.3 Protection Rings 17.4 Domain of Protection 17.4.1 Domain Structure 17.4.2 Example: UNIX 17.4.3 Example: Android Application IDs 17.5 Access Matrix 17.6 Implementation of the Access Matrix 17.6.1 Global Table 17.6.2 Access Lists for Objects 17.6.3 Capability Lists for Domains 17.6.4 A Lock–Key Mechanism 17.6.5 Comparison 17.7 Revocation of Access Rights 17.8 Role-Based Access Control 17.9 Mandatory Access Control (MAC) 17.10 Capability-Based Systems 17.10.1 Linux Capabilities 17.10.2 Darwin Entitlements 17.11 Other Protection Improvement Methods 17.11.1 System Integrity Protection 17.11.2 System-Call Filtering 17.11.3 Sandboxing 17.11.4 Code Signing 17.12 Language-Based Protection 17.12.1 Compiler-Based Enforcement 17.12.2 Run-Time-Based Enforcement—Protection in Java 17.13 Summary Further Reading Bibliography Chapter 17 Exercises PART EIGHT ADVANCED TOPICS Chapter 18 Virtual Machines 18.1 Overview 18.2 History 18.3 Benefits and Features 18.4 Building Blocks 18.4.1 Trap-and-Emulate 18.4.2 Binary Translation 18.4.3 Hardware Assistance 18.5 Types of VMs and Their Implementations 18.5.1 The Virtual Machine Life Cycle 18.5.2 Type 0 Hypervisor 18.5.3 Type 1 Hypervisor 18.5.4 Type 2 Hypervisor 18.5.5 Paravirtualization 18.5.6 Programming-Environment Virtualization 18.5.7 Emulation 18.5.8 Application Containment 18.6 Virtualization and Operating-System Components 18.6.1 CPU Scheduling 18.6.2 Memory Management 18.6.3 I/O 18.6.4 Storage Management 18.6.5 Live Migration 18.7 Examples 18.7.1 VMware 18.7.2 The Java Virtual Machine 18.8 Virtualization Research 18.9 Summary Further Reading Bibliography Chapter 18 Exercises Chapter 19 Networks and Distributed Systems 19.1 Advantages of Distributed Systems 19.1.1 Resource Sharing 19.1.2 Computation Speedup 19.1.3 Reliability 19.2 Network Structure 19.2.1 Local-Area Networks 19.2.2 Wide-Area Networks 19.3 Communication Structure 19.3.1 Naming and Name Resolution 19.3.2 Communication Protocols 19.3.3 TCP/IP Example 19.3.4 Transport Protocols UDP and TCP 19.4 Network and Distributed Operating Systems 19.4.1 Network Operating Systems 19.4.2 Distributed Operating Systems 19.5 Design Issues in Distributed Systems 19.5.1 Robustness 19.5.2 Transparency 19.5.3 Scalability 19.6 Distributed File Systems 19.6.1 The Client–Server DFS Model 19.6.2 The Cluster-Based DFS Model 19.7 DFS Naming and Transparency 19.7.1 Naming Structures 19.7.2 Naming Schemes 19.7.3 Implementation Techniques 19.8 Remote File Access 19.8.1 Basic Caching Scheme 19.8.2 Cache Location 19.8.3 Cache-Update Policy 19.8.4 Consistency 19.9 Final Thoughts on Distributed File Systems 19.10 Summary Practice Exercises Further Reading Bibliography Chapter 19 Exercises PART NINE CASE STUDIES Chapter 20 The Linux System 20.1 Linux History 20.1.1 The Linux Kernel 20.1.2 The Linux System 20.1.3 Linux Distributions 20.1.4 Linux Licensing 20.2 Design Principles 20.2.1 Components of a Linux System 20.3 Kernel Modules 20.3.1 Module Management 20.3.2 Driver Registration 20.3.3 Conflict Resolution 20.4 Process Management 20.4.1 The fork() and exec() Process Model 20.4.2 Processes and Threads 20.5 Scheduling 20.5.1 Thread Scheduling 20.5.2 Real-Time Scheduling 20.5.3 Kernel Synchronization 20.5.4 Symmetric Multiprocessing 20.6 Memory Management 20.6.1 Management of Physical Memory 20.6.2 Virtual Memory 20.6.3 Execution and Loading of User Programs 20.7 File Systems 20.7.1 The Virtual File System 20.7.2 The Linux ext3 File System 20.7.3 Journaling 20.7.4 The Linux Proc File System 20.8 Input and Output 20.8.1 Block Devices 20.8.2 Character Devices 20.9 Interprocess Communication 20.9.1 Synchronization and Signals 20.9.2 Passing of Data among Processes 20.10 Network Structure 20.11 Security 20.11.1 Authentication 20.11.2 Access Control 20.12 Summary Practice Exercises Further Reading Bibliography Chapter 20 Exercises Chapter 21 Windows 21.1 History 21.1.1 Windows XP, Vista, and 7 21.1.2 Windows 8 21.1.3 Windows 10 21.2 Design Principles 21.2.1 Security 21.2.2 Reliability 21.2.3 Windows and Application Compatibility 21.2.4 Performance 21.2.5 Extensibility 21.2.6 Portability 21.2.7 International Support 21.2.8 Energy Efficiency 21.2.9 Dynamic Device Support 21.3 System Components 21.3.1 Hyper-V Hypervisor 21.3.2 Secure Kernel 21.3.3 Hardware-Abstraction Layer 21.3.4 Kernel 21.3.5 Executive 21.4 Terminal Services and Fast User Switching 21.5 File System 21.5.1 NTFS Internal Layout 21.5.2 Recovery 21.5.3 Security 21.5.4 Compression 21.5.5 Mount Points, Symbolic Links, and Hard Links 21.5.6 Change Journal 21.5.7 Volume Shadow Copies 21.6 Networking 21.6.1 Network Interfaces 21.6.2 Protocols 21.6.3 Redirectors and Servers 21.6.4 Domains 21.6.5 Active Directory 21.7 Programmer Interface 21.7.1 Access to Kernel Objects 21.7.2 Sharing Objects Between Processes 21.7.3 Process Management 21.7.4 IPC Using Windows Messaging 21.7.5 Memory Management 21.8 Summary Practice Exercises Further Reading Bibliography Chapter 21 Exercises PART TEN APPENDICES Appendix A Influential Operating Systems A.1 Feature Migration A.2 Early Systems A.2.1 Dedicated Computer Systems A.2.2 Shared Computer Systems A.2.3 Overlapped I/O A.3 Atlas A.4 XDS-940 A.5 THE A.6 RC 4000 A.7 CTSS A.8 MULTICS A.9 IBM OS/360 A.10 TOPS-20 A.11 CP/M and MS/DOS A.12 Macintosh Operating System and Windows A.13 Mach A.14 Capability-based Systems—Hydra and CAP A.14.1 Hydra A.14.2 Cambridge CAP System A.15 Other Systems Further Reading Bibliography Appendix B Windows B.1 History B.2 Design Principles B.2.1 Security B.2.2 Reliability B.2.3 Windows and POSIX Application Compatibility B.2.4 High Performance B.2.5 Extensibility B.2.6 Portability B.2.7 International Support B.2.8 Energy Efficiency B.2.9 Dynamic Device Support B.3 System Components B.3.1 Hardware-Abstraction Layer B.3.2 Kernel B.3.3 Executive B.4 Terminal Services and Fast User Switching B.5 File System B.5.1 NTFS Internal Layout B.5.2 Recovery B.5.3 Security B.5.4 Volume Management and Fault Tolerance B.5.5 Compression B.5.6 Mount Points, Symbolic Links, and Hard Links B.5.7 Change Journal B.5.8 Volume Shadow Copies B.6 Networking B.6.1 Network Interfaces B.6.2 Protocols B.6.3 Redirectors and Servers B.6.4 Domains B.6.5 Active Directory B.7 Programmer Interface B.7.1 Access to Kernel Objects B.7.2 Sharing Objects between Processes B.7.3 Process Management B.7.4 IPC Using Windows Messaging B.7.5 Memory Management B.8 Summary Practice Exercises Further Reading Bibliography Appendix C BSD UNIX C.1 UNIX History C.1.1 UNIX Support Group C.1.2 Berkeley Begins Development C.1.3 The Spread of UNIX C.1.4 History of FreeBSD C.2 Design Principles C.3 Programmer Interface C.3.1 File Manipulation C.3.2 Process Control C.3.3 Signals C.3.4 Process Groups C.3.5 Information Manipulation C.3.6 Library Routines C.4 User Interface C.4.1 Shells and Commands C.4.2 Standard I/O C.4.3 Pipelines, Filters, and Shell Scripts C.5 Process Management C.5.1 Process Control Blocks C.5.2 CPU Scheduling C.6 Memory Management C.7 File System C.7.1 Blocks and Fragments C.7.2 Inodes C.7.3 Directories C.7.4 Mapping a File Descriptor to an Inode C.7.5 Disk Structures C.7.6 Implementations C.7.7 Layout and Allocation Policies C.8 I/O System C.8.1 Block Buffer Cache C.8.2 Raw Device Interfaces C.8.3 C-Lists C.9 Interprocess Communication C.9.1 Sockets C.9.2 Network Support C.10 Summary Further Reading Bibliography Appendix D The Mach System D.1 History of the Mach System D.2 Design Principles D.3 System Components D.4 Process Management D.4.1 Basic Structure D.4.2 The C Threads Package D.4.3 The CPU Scheduler D.4.4 Exception Handling D.5 Interprocess Communication D.5.1 Ports D.5.2 Messages D.5.3 The NetMsgServer D.5.4 Synchronization Through IPC D.6 Memory Management D.6.1 Basic Structure D.6.2 User-Level Memory Managers D.6.3 Shared Memory D.7 Programmer Interface D.8 Summary Further Reading Bibliography Credits Index Glossary EULA The tenth edition of Operating System Concepts, continues to provide a solid theoretical foundation for understanding operating systems. The tenth edition has been revised to keep it fresh and up-to-date with contemporary examples of how operating systems function, as well as enhanced interactive elements to improve learning and the student's experience with the material. It combines instruction on concepts with real-world applications so that students can understand the practical usage of the content. End-of-chapter problems, exercises, review questions, and programming exercises help to further reinforce important concepts. New interactive self-assessment problems are provided throughout the text to help students monitor their level of understanding and progress. A Linux virtual machine (including C & Java source code and development tools) allows students to complete programming exercises that help them engage further with the material.
دانلود کتاب Operating System Concepts