Author(s): Thomas W. Doeppner
Publisher: Wiley
Year: 2010
Language: English
Pages: 462
Cover......Page 1
Title Page......Page 5
Copyright......Page 6
Preface......Page 9
Contents......Page 15
1 Introduction......Page 19
1.1 Operating Systems......Page 20
1.1.1 Operating Systems as a Field of Study......Page 21
1.2.1 The 1950s: The Birth of the Concept......Page 22
1.2.2 The 1960s: The Modern OS Takes Form......Page 23
1.2.3 Minicomputers and Unix......Page 24
1.2.4 The Personal Computer......Page 26
1.3.1 OS Structure......Page 30
1.3.2 Processes, Address Spaces, and Threads......Page 32
1.3.3 Managing Processes......Page 34
1.3.4 Loading Programs into Processes......Page 37
1.3.5 Files......Page 38
1.4 Beyond a Simple OS......Page 51
1.4.1 Extensions......Page 52
1.4.2 New Functionality......Page 53
1.6 Exercises......Page 55
1.7 References......Page 56
2 Multithreaded Programming......Page 57
2.1 Why Threads?......Page 58
2.2.1 Thread Creation and Termination......Page 62
2.2.2 Threads and C++......Page 71
2.2.3 Synchronization......Page 74
2.2.4 Thread Safety......Page 94
2.2.5 Deviations......Page 97
2.4 Exercises......Page 106
2.5 References......Page 110
3.1 Context Switching......Page 111
3.1.1 Procedures......Page 112
3.1.2 Threads and Coroutines......Page 118
3.1.4 Interrupts......Page 120
3.2 Input/Output Architectures......Page 122
3.3.1 Best-Fit and First-Fit Algorithms......Page 125
3.3.2 Buddy System......Page 126
3.4.1 Static Linking and Loading......Page 127
3.4.2 Shared Libraries......Page 134
3.5 Booting......Page 137
3.7 Exercises......Page 141
3.8 References......Page 143
4 Operating-System Design......Page 144
4.1 A Simple System......Page 145
4.1.1 A Framework for Devices......Page 147
4.1.2 Low-Level Kernel......Page 149
4.1.3 Processes and Threads......Page 155
4.1.4 Storage Management......Page 157
4.2 Rethinking Operating-System Structure......Page 161
4.2.1 Virtual Machines......Page 163
4.2.2 Microkernels......Page 173
4.3 Conclusions......Page 178
4.4 Exercises......Page 179
4.5 References......Page 180
5 Processor Management......Page 181
5.1.1 Strategies......Page 182
5.1.2 A Simple Threads Implementation......Page 188
5.1.3 Multiple Processors......Page 190
5.2 Interrupts......Page 195
5.2.1 Interrupt Handlers......Page 196
5.2.2 Deferred Work......Page 201
5.2.3 Directed Processing......Page 205
5.3 Scheduling......Page 210
5.3.1 Strategy......Page 211
5.3.2 Tactics......Page 222
5.3.3 Case Studies......Page 224
5.5 Exercises......Page 230
5.6 References......Page 233
6 File Systems......Page 235
6.1.1 Unix’s S5FS......Page 236
6.1.2 Disk Architecture......Page 241
6.1.3 Problems with S5FS......Page 244
6.1.4 Improving Performance......Page 245
6.1.5 Dynamic Inodes......Page 254
6.2 Crash Resiliency......Page 255
6.2.1 What Goes Wrong......Page 256
6.2.2 Dealing with Crashes......Page 258
6.3 Directories and Naming......Page 271
6.3.1 Directories......Page 272
6.3.2 Name-Space Management......Page 279
6.4 Multiple Disks......Page 281
6.4.1 Redundant Arrays of Inexpensive Disks (RAID)......Page 284
6.5.1 Flash Technology......Page 287
6.5.2 Flash-Aware File Systems......Page 288
6.6.1 FFS......Page 289
6.6.2 Ext3......Page 290
6.6.3 Reiser FS......Page 291
6.6.4 NTFS......Page 293
6.6.5 WAFL......Page 294
6.6.6 ZFS......Page 296
6.7 Conclusions......Page 300
6.8 Exercises......Page 301
6.9 References......Page 303
7.1 Memory Management in the Early Days......Page 305
7.2 Hardware Support for Virtual Memory......Page 307
7.2.1 Forward-Mapped Page Tables......Page 309
7.2.2 Linear Page Tables......Page 310
7.2.3 Hashed Page Tables......Page 312
7.2.4 Translation Lookaside Buffers......Page 314
7.2.5 64-Bit Issues......Page 315
7.2.6 Virtualization......Page 317
7.3.1 General Concerns......Page 319
7.3.2 Representative Systems......Page 323
7.3.3 Copy on Write and Fork......Page 328
7.3.4 Backing Store Issues......Page 331
7.5 Exercises......Page 333
7.6 References......Page 336
8.1 Security Goals......Page 337
8.1.1 Threats......Page 338
8.2 Security Architectures......Page 341
8.2.1 Access Control in Traditional Systems......Page 343
8.2.2 Mandatory Access Control......Page 352
8.2.3 Capability Systems......Page 360
8.3 Conclusions......Page 364
8.4 Exercises......Page 365
8.5 References......Page 366
9.1 Network Basics......Page 368
9.1.1 Network Protocols......Page 369
9.2 Remote Procedure Call Protocols......Page 382
9.2.1 Marshalling......Page 384
9.2.2 Reliable Semantics......Page 386
9.4 Exercises......Page 392
9.5 References......Page 395
10 Distributed File Systems......Page 396
10.1 The Basics......Page 398
10.2 NFS Version 2......Page 400
10.2.2 Mount Protocol......Page 404
10.2.3 NFS File Protocol......Page 405
10.2.4 Network Lock Manager......Page 406
10.3 Common Internet File System (CIFS)......Page 407
10.3.1 Server Message Block (SMB) Protocol......Page 409
10.3.2 Opportunistic Locks......Page 410
10.4 DFS......Page 412
10.5 NFS Version 4......Page 415
10.5.1 Managing State......Page 416
10.5.2 Dealing with Failure......Page 419
10.6 Conclusions......Page 420
10.7 Exercises......Page 421
10.8 References......Page 422
Appendix Index of URLs......Page 423
Index......Page 425