PartⅠ:SYSTEMS PROGRAMMING 1
1 Language Processors 1
1.1 Introduction 1
1.2 Language Processing Activities 5
1.3 Fundamentals of Language Processing 9
1.4 Fundamentals of Language Specification 19
1.5 Language Processor Development Tools 31
Bibliography 34
2 Data Structures for Language Processing 36
2.1 Search Data Structures 38
2.2 Allocation Data Structures 52
Bibilography 57
3 Scanning and Parsing 59
3.1 Scanning 59
3.2 Parsing 64
Bibliography 85
4.1 Elements of Assembly Language Programming 86
4 Assemblers 86
4.2 A Simple Assembly Scheme 91
4.3 Pass Structure of Assemblers 94
4.4 Design of a Two Pass Assembler 95
4.5 A Single Pass Assembler for IBM PC 111
Bibliography 130
5 Macros and Macro Processors 131
5.1 Macro Definition and Call 132
5.2 Macro Expansion 133
5.3 Nested Macro Calls 137
5.4 Advanced Macro Facilities 138
5.5 Design of a Macro Preprocessor 145
Bibliography 161
6 Compilers and Interpreters 162
6.1 Aspects of Compilation 162
6.2 Memory Allocation 165
6.3 Compilation of Expressions 180
6.4 Compilation of Control Structures 192
6.5 Code Optimization 199
6.6 Interpreters 212
Bibliography 218
7 Linkers 221
7.1 Relocation and Linking Concepts 223
7.2 Design of a Linker 228
7.3 Self-Relocating Programs 232
7.4 A Linker for MS DOS 233
7.5 Linking for Overlays 245
Bibliography 248
7.6 Loaders 248
8 Software Tools 249
8.1 Software Tools for Program Development 250
8.2 Editors 257
8.3 Debug Monitors 260
8.4 Programming Environments 262
8.5 User Interfaces 264
Bibliography 269
9.1 OS Functions 273
9 Evolution of OS Functions 273
PartⅡ:OPERATING SYSTEMS 273
9.2 Evolution of OS Functions 276
9.3 Batch Processing Systems 277
9.4 Multiprogramming Systems 287
9.5 Time Sharing Systems 305
9.6 Real Time Operating Systems 311
9.7 OS Structure 313
Bibliography 317
10.1 Process Definition 320
10 Processes 320
10.2 Process Control 322
10.3 Interacting Processes 327
10.4 Implementation of Interacting Processes 332
10.5 Threads 336
Bibliograpy 342
11 Scheduling 343
11.1 Scheduling Policies 343
11.2 Job Scheduling 351
11.3 Process Scheduling 353
11.4 Process Management in Unix 365
11.5 Scheduling in Multiprocessor OS 366
Bibliography 368
12 Deadlocks 371
12.1 Definitions 371
12.2 Resource Status Modelling 372
12.3 Handling Deadlocks 377
12.4 Deadlock Detection and Resolution 383
12.5 Deadlock Avoidance 386
12.6 Mixed Approach to Deadlock Handling 393
Bibliography 395
13 Process Synchronization 396
13.1 Implementing Control Synchronization 396
13.2 Critical Sections 399
13.3 Classical Process Synchronization Problems 408
13.4 Evoluiton of Language Features for Process Synchronization 411
13.5 Semaphores 413
13.6 Critical Regions 419
13.7 Conditional Critical Regions 422
13.8 Monitors 426
13.9 Concurrent Programming in Ada 437
Bibliography 443
14 Interprocess Communication 447
14.1 Interprocess Messages 447
14.2 Implementation Issues 448
14.3 Mailboxes 454
14.4 Interprocess Messages in Unix 456
14.5 Interprocess Messages in Mach 458
Bibliography 459
15 Memory Management 460
15.1 Memory Allocation Preliminaries 461
15.2 Contiguous Memory Allocation 471
15.3 Noncontiguous Memory Allocation 479
15.4 Virtual Memory Using Paging 482
15.5 Virtual Memory Using Segmentation 511
Bibliograpy 518
16 IO Organization and IO Programming 521
16.1 IO Organization 522
16.2 IO Devices 526
16.3 Physical IOCS(PIOCS) 529
16.4 Fundamental File Organizations 542
16.5 Advanced IO Programming 544
16.6 Logical IOCS 552
16.7 File Processing in Unix 560
Bibliograpy 560
17 File Systems 561
17.1 Directory Structures 563
17.2 File Protection 569
17.3 Allocation of Disk Space 569
17.4 Implementing File Access 571
17.5 File Sharing 576
17.6 File System Reliability 578
17.7 The Unix File System 584
Bibliograpy 587
18.1 Encryption of Data 588
18 Protection and Security 588
18.2 Protection and Security Mechanisms 591
18.3 Protection of User Files 592
18.4 Capabilities 596
Bibliograpy 603
19 Distributed Operating Systems 604
19.1 Definition and Examples 605
19.2 Design Issues in Distributed Operating Systems 608
19.3 Networking Issues 611
19.4 Communication Protocols 615
19.5 System State and Event Precedence 619
19.6 Resource Allocation 622
19.7 Algorithms for Distributed Control 624
19.8 File Systems 633
19.9 Reliability 637
19.10 Security 643
Bibliograpy 649
Index 653