CONTENTS
Introduction = 1
Chapter 1 Data Representation in Computing Systems = 13
1.1 Introduction to Binary Arithmetic = 13
1.2 Representation of Rational Numbers = 18
1.3 Text Data Representation = 22
1.4 Image Representation = 24
1.5 Sound Representation = 27
1.6 Data Compression = 28
1.7 Checksums = 31
1.8 Introduction to Cryptography = 34
Chapter 2 Machine Languages = 39
2.1 The Format of Machine Language Instructions = 43
2.2 Jump Instructions = 46
2.3 Registers = 48
2.4 Addressing the RAM = 51
2.5 Addressing Modes = 54
2.5.1 Degenerated Addressing Modes = 56
2.5.2 Absolute Addressing = 58
2.5.3 Register Indirect Mode = 58
2.5.4 Register Indirect Mode with Displacement = 61
2.5.5 Based Indexed Mode = 64
2.5.6 Complex Addressing Modes = 65
2.5.7 Addressing with the Program Counter = 66
2.6 Memory Banks = 68
2.6.1. Address Space of the PDP-11 = 71
2.7 CISC and RISC Processors = 72
2.8 Assembler Languages = 76
2.8.1 Multipass Assembling = 80
Chapter 3 Loading Programs = 81
3.1 Absolute Loading = 84
3.1.1 The Format of the a.out Load Module = 84
3.2 Memory Sections = 85
3.3 Relative Loading = 86
3.4 Base Addressing = 90
3.5 Position-Independent Code = 91
3.5.1 A Curious Observation = 91
3.5.2 Position-Independent Code in Modern Unix Systems = 91
3.6 Overlays = 92
3.7 Building Programs = 94
3.8 Object Libraries = 97
3.9 Building a Program at Load Time = 99
3.9.1 Program Modules in the N9000 = 100
3.9.2 The AS/400 Architecture = 102
3.10 DLLs = 104
3.10.1 Shared Code in the Systems of the Windows Family = 108
3.11 Loading the OS Itself = 109
3.11.1 Loading Sun Solaris = 114
Chapter 4 RAM Management = 117
4.1 Open Memory = 117
4.2 Algorithms of Dynamic Memory Management = 119
4.3 Garbage Collection = 130
4.4 Open Memory(Revisited) = 132
4.4.1 Memory Management in Mac OS and Win 16 = 136
4.5 Systems with Base Virtual Addressing = 139
Chapter 5 Segmented and Paged Virtual Memory = 143
5.1 Segments, Pages, and System Calls = 149
5.2 Mutually Untrusting Subsystems = 156
5.3 Segments, Pages, and System Calls(Revisited) = 162
5.4 Shared Libraries = 162
5.5 Page Exchange = 170
5.5.1 The Search for a "Victim" = 171
5.6 Swap File Management = 177
5.7 Single-Level Memory = 179
Chapter 6 The Computer and External Events = 187
6.1 Polling = 188
6.2 Channel Processors and Direct Access to Memory = 190
6.3 Interrupts = 193
6.4 Exceptions = 196
6.5 Multiprocessor Architectures = 199
Chapter 7 Parallelism from the Viewpoint of the Programmer = 209
7.1 Statement of the Task = 211
7.2 Primitives of Mutual Exclusion = 214
7.2.1 Dead and Live Locks = 218
7.3 Synchronization Primitives = 223
7.3.1 Semaphores = 226
7.3.2 Semaphores and Interrupts = 228
7.3.3 Capturing Parts of Files = 228
7.3.4 Transaction Monitors and Servers = 229
7.4 Harmoniously Interacting Sequential Streams = 230
7.4.1 Examples of Implementing Harmonic Interaction = 234
7.5 Event-Driven Systems = 242
Chapter 8 Implementing Multitasking on Single-Processor Computers = 247
8.1 Cooperative Multitasking = 247
8.2 Preemptive Multitasking = 251
8.2.1 Priority-Based Schedulers = 255
8.3 Monolithic and Microkernel Systems = 258
Chapter 9 Peripherals = 263
9.1 Access to Peripherals = 264
9.2 Simple Peripherals = 267
9.3 Data Communication Ports = 270
9.4 Buses = 280
9.5 Graphics Output Devices = 293
9.6 Direct Access Storage Devices = 300
9.6.1 Hard Disk Performance = 312
9.6.2 Disk Arrays = 314
9.6.3 Storage Access Networks(SANs) = 317
Chapter 10 Drivers of Peripherals = 319
10.1 Driver Functions = 323
10.2 Multilevel Drivers = 328
10.3 Loading Drivers = 334
10.4 Driver Architecture = 336
10.4.1 Introduction to Finite State Machines = 337
10.4.2 Driver Architecture = 343
10.5 Requests to the Driver = 344
10.5.1 Synchronous Input/Output = 345
10.5.2 Asynchronous Input/Output = 346
10.6 Kernel Facilities Accessible to Drivers = 348
10.6.1 Auto-Configuration = 349
10.6.2 Memory Allocation = 351
10.6.3 Timers = 352
10.6.4 Data Exchange with the User's Process = 352
10.6.5 Service Functions = 354
10.7 The Asynchronous Input/Output Model from Applications' Standpoint = 354
10.7.1 Disk Cache = 358
10.8 Spooling = 361
Chapter 11 FSs = 363
11.1 Files from the User's Point of View = 364
11.1.1 Mounting FSs = 365
11.1.2 The File Name Format = 368
11.1.3 Operations on Files = 371
11.1.4 The File Type = 374
11.2 Simple FSs = 378
11.3 "Complex" FSs = 384
11.4 FS Fault Tolerance = 392
11.4.1 Power-Fault Tolerance = 392
11.4.2 Restoring an FS after Failure = 396
11.4.3 FSs with Intention Logging = 400
11.4.4 FS Tolerance to Disk Failures = 403
11.5 File System Drivers = 405
Chapter 12 Security = 409
12.1 The Task Statement = 410
12.2 The Session and User Identifiers = 411
12.3 Authentication = 413
12.4 Authentication in the Network = 417
12.4.1 Cryptographic Authentication Methods = 421
12.5 Authorization = 426
12.5.1 ACLs = 426
12.5.2 Capability = 435
12.5.3 Changing the User ID = 439
12.6 Resource Quotas = 441
12.7 Attacks on the Security System = 442
12.7.1 DoS = 443
12.7.2 Trojan Programs = 443
12.7.3 Typically Vulnerable Places = 446
12.7.4 Software Bugs = 448
12.8 Practical Guidelines 455
Appendix A Overview of the Architecture of Modern OSs = 457
A.1 MVS, OS/390, and z/OS = 457
A.2 The Unix Family = 459
A.2.1 Spreading Unix = 462
A.2.2 The Micro-Kernel = 464
A.2.3 Minix = 465
A.2.4 GNU's Not Unix = 465
A.2.5 The OSF = 466
A.2.6 X/Open = 466
A.2.7 Unix System V, Release 4 = 467
A.2.8 Linux = 469
A.3 The CP/M Family = 470
A.3.1 Win16 = 473
A.3.2 OS/2 1.x = 475
A.3.3 IBM OS/2 = 477
A.3.4 Windows 95/98/ME = 480
A.3.5 Windows NT/2000/XP = 481
A.3.6 Windows CE = 486
Appendix B Resources = 487
Documents = 487
INMOS = 487
National Bureau of Standards = 487
NASA = 487
Books and Articles = 487
Internet Resources = 490
Adobe = 490
ANSI = 490
Atmel = 490
IBM = 490
IETF = 491
Linux = 491
Microchip = 491
Microsoft = 491
National Semiconductors = 491
SPARC = 491
Sun Microsystems = 491
Other Resources = 492
Index = 493