ebook img

Operating Systems And Middleware: Supporting Controlled Interaction PDF

2015·7.4 MB·English
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Operating Systems And Middleware: Supporting Controlled Interaction

Operating Systems and Middleware: Supporting Controlled Interaction Max Hailperin Gustavus Adolphus College Revised Edition 1.2 July 11, 2015 Copyright (cid:13)c 2011–2015 by Max Hailperin. This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/ or send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA. About the Cover Thecoverphotoshowsthetreasurycomingintoviewattheendofthesiq,or defile, leading to the ancient Nabatean city of Petra in present-day Jordan. The siq is a narrow, winding passage cut deep into the sandstone primarily by natural geological forces, though it was improved by the Nabateans. Petra was a thriving spice trading city. Its prosperity can be linked to severalfactors, includingitslocationonimportanttraderoutes, itsaccessto water through sophisticated hydraulic engineering, and its easily defensible character. Thesiqplayedanimportantroleinthelattertwoaspects. Water conduits were built into the walls of the siq. Meanwhile, the floor of the siq was just wide enough for a single-file merchant caravan of camels, while remaining too narrow to serve as a route for attack. Operating systems and middleware provide a conducive environment for applicationprogramstointeractinacontrolledmanner,muchasPetramust have served for spice merchants 2000 years ago. Access to communication and resources remain as important as then, but so does the provision of tightly controlled interfaces that ensure security. The photo is by Rhys Davenport, who released it under a Creative Com- mons Attribution 2.0 Generic license. The photo is available on the web at http://www.flickr.com/photos/33122834@N06/3437495101/. To my family iv Contents Preface xi 1 Introduction 1 1.1 Chapter Overview . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 What Is an Operating System? . . . . . . . . . . . . . . . . . 2 1.3 What Is Middleware? . . . . . . . . . . . . . . . . . . . . . . 6 1.4 Objectives for the Book . . . . . . . . . . . . . . . . . . . . . 8 1.5 Multiple Computations on One Computer . . . . . . . . . . . 9 1.6 Interactions Between Computations . . . . . . . . . . . . . . 11 1.7 Supporting Interaction Across Time . . . . . . . . . . . . . . 13 1.8 Supporting Interaction Across Space . . . . . . . . . . . . . . 15 1.9 Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2 Threads 21 2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.2 Example of Multithreaded Programs . . . . . . . . . . . . . . 23 2.3 Reasons for Using Concurrent Threads . . . . . . . . . . . . . 27 2.4 Switching Between Threads . . . . . . . . . . . . . . . . . . . 30 2.5 Preemptive Multitasking . . . . . . . . . . . . . . . . . . . . . 37 2.6 Security and Threads. . . . . . . . . . . . . . . . . . . . . . . 39 3 Scheduling 45 3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 3.2 Thread States . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 3.3 Scheduling Goals . . . . . . . . . . . . . . . . . . . . . . . . . 49 3.3.1 Throughput . . . . . . . . . . . . . . . . . . . . . . . . 51 3.3.2 Response Time . . . . . . . . . . . . . . . . . . . . . . 54 3.3.3 Urgency, Importance, and Resource Allocation . . . . 55 3.4 Fixed-Priority Scheduling . . . . . . . . . . . . . . . . . . . . 61 v vi CONTENTS 3.5 Dynamic-Priority Scheduling . . . . . . . . . . . . . . . . . . 65 3.5.1 Earliest Deadline First Scheduling . . . . . . . . . . . 65 3.5.2 Decay Usage Scheduling . . . . . . . . . . . . . . . . . 66 3.6 Proportional-Share Scheduling . . . . . . . . . . . . . . . . . 71 3.7 Security and Scheduling . . . . . . . . . . . . . . . . . . . . . 79 4 Synchronization and Deadlocks 93 4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 4.2 Races and the Need for Mutual Exclusion . . . . . . . . . . . 95 4.3 Mutexes and Monitors . . . . . . . . . . . . . . . . . . . . . . 98 4.3.1 The Mutex Application Programming Interface . . . . 99 4.3.2 Monitors: A More Structured Interface to Mutexes . . 103 4.3.3 Underlying Mechanisms for Mutexes . . . . . . . . . . 106 4.4 Other Synchronization Patterns . . . . . . . . . . . . . . . . . 110 4.4.1 Bounded Buffers . . . . . . . . . . . . . . . . . . . . . 113 4.4.2 Readers/Writers Locks . . . . . . . . . . . . . . . . . . 115 4.4.3 Barriers . . . . . . . . . . . . . . . . . . . . . . . . . . 116 4.5 Condition Variables . . . . . . . . . . . . . . . . . . . . . . . 117 4.6 Semaphores . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 4.7 Deadlock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 4.7.1 The Deadlock Problem . . . . . . . . . . . . . . . . . . 126 4.7.2 Deadlock Prevention Through Resource Ordering . . . 128 4.7.3 Ex Post Facto Deadlock Detection . . . . . . . . . . . 129 4.7.4 Immediate Deadlock Detection . . . . . . . . . . . . . 132 4.8 Synchronization/Scheduling Interactions . . . . . . . . . . . . 134 4.8.1 Priority Inversion . . . . . . . . . . . . . . . . . . . . . 135 4.8.2 The Convoy Phenomenon . . . . . . . . . . . . . . . . 137 4.9 Nonblocking Synchronization . . . . . . . . . . . . . . . . . . 141 4.10 Security and Synchronization . . . . . . . . . . . . . . . . . . 145 5 Atomic Transactions 161 5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 5.2 Example Applications of Transactions . . . . . . . . . . . . . 164 5.2.1 Database Systems . . . . . . . . . . . . . . . . . . . . 165 5.2.2 Message-Queuing Systems . . . . . . . . . . . . . . . . 169 5.2.3 Journaled File Systems . . . . . . . . . . . . . . . . . 174 5.3 Mechanisms to Ensure Atomicity . . . . . . . . . . . . . . . . 176 5.3.1 Serializability: Two-Phase Locking . . . . . . . . . . . 176 5.3.2 Failure Atomicity: Undo Logging . . . . . . . . . . . . 185 5.4 Transaction Durability: Write-Ahead Logging . . . . . . . . . 188 CONTENTS vii 5.5 Additional Transaction Mechanisms . . . . . . . . . . . . . . 192 5.5.1 Increased Transaction Concurrency: Reduced Isolation 193 5.5.2 CoordinatedTransactionParticipants: Two-PhaseCom- mit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 5.6 Security and Transactions . . . . . . . . . . . . . . . . . . . . 198 6 Virtual Memory 209 6.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 6.2 Uses for Virtual Memory . . . . . . . . . . . . . . . . . . . . . 214 6.2.1 Private Storage . . . . . . . . . . . . . . . . . . . . . . 214 6.2.2 Controlled Sharing . . . . . . . . . . . . . . . . . . . . 215 6.2.3 Flexible Memory Allocation . . . . . . . . . . . . . . . 218 6.2.4 Sparse Address Spaces . . . . . . . . . . . . . . . . . . 220 6.2.5 Persistence . . . . . . . . . . . . . . . . . . . . . . . . 222 6.2.6 Demand-Driven Program Loading . . . . . . . . . . . 223 6.2.7 Efficient Zero Filling . . . . . . . . . . . . . . . . . . . 224 6.2.8 Substituting Disk Storage for RAM . . . . . . . . . . 225 6.3 Mechanisms for Virtual Memory . . . . . . . . . . . . . . . . 226 6.3.1 Software/Hardware Interface . . . . . . . . . . . . . . 228 6.3.2 Linear Page Tables . . . . . . . . . . . . . . . . . . . . 232 6.3.3 Multilevel Page Tables . . . . . . . . . . . . . . . . . . 237 6.3.4 Hashed Page Tables . . . . . . . . . . . . . . . . . . . 242 6.3.5 Segmentation . . . . . . . . . . . . . . . . . . . . . . . 245 6.4 Policies for Virtual Memory . . . . . . . . . . . . . . . . . . . 250 6.4.1 Fetch Policy . . . . . . . . . . . . . . . . . . . . . . . . 251 6.4.2 Placement Policy . . . . . . . . . . . . . . . . . . . . . 252 6.4.3 Replacement Policy . . . . . . . . . . . . . . . . . . . 254 6.5 Security and Virtual Memory . . . . . . . . . . . . . . . . . . 261 7 Processes and Protection 273 7.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 7.2 POSIX Process Management API . . . . . . . . . . . . . . . . 275 7.3 Protecting Memory . . . . . . . . . . . . . . . . . . . . . . . . 285 7.3.1 The Foundation of Protection: Two Processor Modes 286 7.3.2 The Mainstream: Multiple Address Space Systems . . 289 7.3.3 An Alternative: Single Address Space Systems . . . . 291 7.4 Representing Access Rights . . . . . . . . . . . . . . . . . . . 293 7.4.1 Fundamentals of Access Rights . . . . . . . . . . . . . 293 7.4.2 Capabilities . . . . . . . . . . . . . . . . . . . . . . . . 299 7.4.3 Access Control Lists and Credentials . . . . . . . . . . 303 viii CONTENTS 7.5 Alternative Granularities of Protection . . . . . . . . . . . . . 311 7.5.1 Protection Within a Process. . . . . . . . . . . . . . . 312 7.5.2 Protection of Entire Simulated Machines . . . . . . . . 313 7.6 Security and Protection . . . . . . . . . . . . . . . . . . . . . 317 8 Files and Other Persistent Storage 333 8.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333 8.2 Disk Storage Technology . . . . . . . . . . . . . . . . . . . . . 336 8.3 POSIX File API . . . . . . . . . . . . . . . . . . . . . . . . . 340 8.3.1 File Descriptors . . . . . . . . . . . . . . . . . . . . . . 340 8.3.2 Mapping Files into Virtual Memory . . . . . . . . . . 345 8.3.3 Reading and Writing Files at Specified Positions . . . 348 8.3.4 Sequential Reading and Writing . . . . . . . . . . . . 348 8.4 Disk Space Allocation . . . . . . . . . . . . . . . . . . . . . . 350 8.4.1 Fragmentation . . . . . . . . . . . . . . . . . . . . . . 351 8.4.2 Locality . . . . . . . . . . . . . . . . . . . . . . . . . . 354 8.4.3 Allocation Policies and Mechanisms . . . . . . . . . . 356 8.5 Metadata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358 8.5.1 Data Location Metadata . . . . . . . . . . . . . . . . . 359 8.5.2 Access Control Metadata . . . . . . . . . . . . . . . . 368 8.5.3 Other Metadata . . . . . . . . . . . . . . . . . . . . . 371 8.6 Directories and Indexing . . . . . . . . . . . . . . . . . . . . . 371 8.6.1 File Directories Versus Database Indexes. . . . . . . . 371 8.6.2 Using Indexes to Locate Files . . . . . . . . . . . . . . 373 8.6.3 File Linking . . . . . . . . . . . . . . . . . . . . . . . . 374 8.6.4 Directory and Index Data Structures . . . . . . . . . . 378 8.7 Metadata Integrity . . . . . . . . . . . . . . . . . . . . . . . . 379 8.8 Polymorphism in File System Implementations . . . . . . . . 383 8.9 Security and Persistent Storage . . . . . . . . . . . . . . . . . 384 9 Networking 395 9.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395 9.1.1 Networks and Internets . . . . . . . . . . . . . . . . . 396 9.1.2 Protocol Layers . . . . . . . . . . . . . . . . . . . . . . 398 9.1.3 The End-to-End Principle . . . . . . . . . . . . . . . . 401 9.1.4 The Networking Roles of Operating Systems, Middle- ware, and Application Software . . . . . . . . . . . . . 402 9.2 The Application Layer . . . . . . . . . . . . . . . . . . . . . . 403 9.2.1 The Web as a Typical Example . . . . . . . . . . . . . 403 CONTENTS ix 9.2.2 The Domain Name System: Application Layer as In- frastructure . . . . . . . . . . . . . . . . . . . . . . . . 406 9.2.3 DistributedFileSystems: AnApplicationViewedThrough Operating Systems . . . . . . . . . . . . . . . . . . . . 409 9.3 The Transport Layer . . . . . . . . . . . . . . . . . . . . . . . 411 9.3.1 Socket APIs . . . . . . . . . . . . . . . . . . . . . . . . 412 9.3.2 TCP, the Dominant Transport Protocol . . . . . . . . 418 9.3.3 Evolution Within and Beyond TCP . . . . . . . . . . 421 9.4 The Network Layer . . . . . . . . . . . . . . . . . . . . . . . . 422 9.4.1 IP, Versions 4 and 6 . . . . . . . . . . . . . . . . . . . 422 9.4.2 Routing and Label Switching . . . . . . . . . . . . . . 425 9.4.3 Network Address Translation: An End to End-to-End?426 9.5 The Link and Physical Layers . . . . . . . . . . . . . . . . . . 429 9.6 Network Security . . . . . . . . . . . . . . . . . . . . . . . . . 431 9.6.1 Security and the Protocol Layers . . . . . . . . . . . . 432 9.6.2 Firewalls and Intrusion Detection Systems . . . . . . . 434 9.6.3 Cryptography . . . . . . . . . . . . . . . . . . . . . . . 435 10 Messaging, RPC, and Web Services 447 10.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447 10.2 Messaging Systems . . . . . . . . . . . . . . . . . . . . . . . . 448 10.3 Remote Procedure Call . . . . . . . . . . . . . . . . . . . . . 451 10.3.1 Principles of Operation for RPC . . . . . . . . . . . . 452 10.3.2 An Example Using Java RMI . . . . . . . . . . . . . . 455 10.4 Web Services . . . . . . . . . . . . . . . . . . . . . . . . . . . 461 10.5 Security and Communication Middleware . . . . . . . . . . . 461 11 Security 467 11.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467 11.2 Security Objectives and Principles . . . . . . . . . . . . . . . 468 11.3 User Authentication . . . . . . . . . . . . . . . . . . . . . . . 474 11.3.1 Password Capture Using Spoofing and Phishing . . . . 475 11.3.2 Checking Passwords Without Storing Them . . . . . . 477 11.3.3 Passwords for Multiple, Independent Systems . . . . . 477 11.3.4 Two-Factor Authentication . . . . . . . . . . . . . . . 477 11.4 Access and Information-Flow Controls . . . . . . . . . . . . . 480 11.5 Viruses and Worms . . . . . . . . . . . . . . . . . . . . . . . . 485 11.6 Security Assurance . . . . . . . . . . . . . . . . . . . . . . . . 489 11.7 Security Monitoring . . . . . . . . . . . . . . . . . . . . . . . 491 11.8 Key Security Best Practices . . . . . . . . . . . . . . . . . . . 494 x CONTENTS A Stacks 505 A.1 Stack-Allocated Storage: The Concept . . . . . . . . . . . . . 506 A.2 Representing a Stack in Memory . . . . . . . . . . . . . . . . 507 A.3 Using a Stack for Procedure Activations . . . . . . . . . . . . 508 Bibliography 511 Index 527

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.