12
COMPUTER SYSTEMS An Integrated Approach f Architecture and Operating Systems Umakishore RAMACHANDRAN Georgia Institute of Technology William D. LEAHY, Jr. Georgia Institute of Technology PEARSON Boston Columbus Indianapolis New York San Francisco Up-pev Saddle River Amsterdam Cape Town Dubai London Madrid Milan Munich Paris Montreal Toronto Delhi Mexico City Sao Paulo Sydney Hong Kong Seoul Singapore Taipei Tokyo

Computer systems : an integrated approach to architecture ...COMPUTERSYSTEMS An Integrated Approach f Architecture and Operating Systems Umakishore RAMACHANDRAN GeorgiaInstitute ofTechnology

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Computer systems : an integrated approach to architecture ...COMPUTERSYSTEMS An Integrated Approach f Architecture and Operating Systems Umakishore RAMACHANDRAN GeorgiaInstitute ofTechnology

COMPUTER SYSTEMS

An Integrated Approachf Architecture

and Operating Systems

Umakishore RAMACHANDRAN

Georgia Institute of Technology

William D. LEAHY, Jr.

Georgia Institute of Technology

PEARSON

Boston Columbus Indianapolis New York San Francisco Up-pev Saddle River

Amsterdam Cape Town Dubai London Madrid Milan Munich Paris Montreal..Toronto

Delhi Mexico City Sao Paulo Sydney Hong Kong Seoul Singapore Taipei Tokyo

Page 2: Computer systems : an integrated approach to architecture ...COMPUTERSYSTEMS An Integrated Approach f Architecture and Operating Systems Umakishore RAMACHANDRAN GeorgiaInstitute ofTechnology

Contents

Preface 5

Chapter 1 Introduction 29

1.1 What Is Inside a Box? 30

1.2 Levels of Abstraction in a Computer System 30

1.3 The Role of the Operating System 33

1.4 What Is Happening Inside the Box? 36

1.4.1 Launching an Application on the Computer 38

1.5 Evolution of Computer Hardware 39

1.6 Evolution of Operating Systems 41

1.7 Roadmap of the Rest of the Book 42

Exercises 42

Bibliographic Notes and Further Reading 43

Chapter 2 Processor Architecture 46

2.1 What Is Involved in Processor Design? 47

2.2 How Do We Design an Instruction Set? 48

2.3 A Common High-Level Language Feature Set 49

2.4 Expressions and Assignment Statements 49

2.4.1 Where To Keep the Operands? 50

2.4.2 How Do We Specify a Memory Address in an Instruction? 54

2.4.3 How Wide Should Each Operand Be? 55

2.4.4 Endianness 58

2.4.5 Packing of Operands and Alignment of Word Operands 60

Page 3: Computer systems : an integrated approach to architecture ...COMPUTERSYSTEMS An Integrated Approach f Architecture and Operating Systems Umakishore RAMACHANDRAN GeorgiaInstitute ofTechnology

16 Contents

2.5 High-Level Data Abstractions 63

2.5.1 Structures 63

2.5.2 Arrays 63

2.6 Conditional Statements and Loops 65

2.6.1 If-Then-Else Statement 66

2.6.2 Switch Statement 68

2.6.3 Loop Statement 69

2.7 Checkpoint 70

2.8 Compiling Function Calls 70

2.8.1 State of the Caller 71

2.8.2 Remaining Chores with Procedure Calling 74

2.8.3 Software Convention 75

2.8.4 Activation Record 82

2.8.5 Recursion 82

2.8.6 Frame Pointer 83

2.9 Instruction-Set Architectural Choices 86

2.9.1 Additional Instructions 86

2.9.2 Additional Addressing Modes 86

2.9.3 Architecture Styles 87

2.9.4 Instruction Format 87

2.10 LC-2200 Instruction Set 90

2.10.1 Instruction Format 91

2.10.2 LC-2200 Register Set 93

2.11 Issues Influencing Processor Design 94

2.11.1 Instruction Set 94

2.11.2 Influence of Applications on Instruction Set Design 95

2.11.3 Other Issues Driving Processor Design 96

Summary 98

Exercises 98

Bibliographic Notes and Further Reading 102

Chapter 3 Processor Implementation 104

3.1 Architecture versus Implementation 104

3.2 What Is Involved in Processor Implementation? 105

3.3 Key Hardware Concepts 106

3.3.1 Circuits 106

Page 4: Computer systems : an integrated approach to architecture ...COMPUTERSYSTEMS An Integrated Approach f Architecture and Operating Systems Umakishore RAMACHANDRAN GeorgiaInstitute ofTechnology

3.3.2 Hardware Resources of the Datapath 107

3.3.3 Edge-Triggered Logic 108

3.3.4 Connecting the Datapath Elements 110

3.3.5 Toward Bus-Based Design 114

3.3.6 Finite State Machine (FSM) 117

3.4 Datapath Design 119

3.4.1 ISA and Datapath Width 121

3.4.2 Width of the Clock Pulse 122

3.4.3 Checkpoint 123

3.5 Control Unit Design 123

3.5.1 ROM Plus State Register 124

3.5.2 FETCH Macro State 127

3.5.3 DECODE Macro State 130

3.5.4 EXECUTE Macro State: ADD Instruction (Part of R-Type) 131

3.5.5 EXECUTE Macro State: NAND Instruction (Part of R-Type) 134

3.5.6 EXECUTE Macro State: JALR Instruction (Part of J-Type) 134

3.5.7 EXECUTE Macro State: LW Instruction (Part of l-Type) 136

3.5.8 EXECUTE Macro State: SW and ADDI Instructions (Part of l-Type)

3.5.9 EXECUTE Macro State: BEQ Instruction (Part of l-Type) 140

3.5.10 Engineering a Conditional Branch in the Microprogram 144

3.5.11 DECODE Macro State Revisited 144

3.6 Alternative Style of Control Unit Design 147

3.6.1 Microprogrammed Control 147

3.6.2 Hardwired Control 147

3.6.3 Choosing Between the Two Control Design Styles 149

Summary 150

Historical Perspective 150

Exercises 152

Bibliographic Notes and Further Reading 156

Chapter 4 Interrupts, Traps, and Exceptions 157

4.1 Discontinuities in Program Execution 158

4.2 Dealing with Program Discontinuities 160

4.3 Architectural Enhancements to Handle Program Discontinuities

4.3.1 Modifications to FSM 164

4.3.2 A Simple Interrupt Handler 165

Page 5: Computer systems : an integrated approach to architecture ...COMPUTERSYSTEMS An Integrated Approach f Architecture and Operating Systems Umakishore RAMACHANDRAN GeorgiaInstitute ofTechnology

20 Contents

Historical Perspective 301

Exercises 303

Bibliographic Notes and Further Reading 304

Chapter 7 Memory Management Techniques 305

7.1 Functionalities Provided by a Memory Manager 306

7.2 Simple Schemes for Memory Management 308

7.3 Memory Allocation Schemes 313

7.3.1 Fixed-Size Partitions 314

7.3.2 Variable-Size Partitions 315

7.3.3 Compaction 317

7.4 Paged Virtual Memory 318

7.4.1 Page Table 321

7.4.2 Hardware for Paging 323

7.4.3 Page Table Setup 324

7.4.4 Relative Sizes of Virtual and Physical Memories 324

7.5 Segmented Virtual Memory 325

7.5.1 Hardware for Segmentation 331

7.6 Paging versus Segmentation 331

7.6.1 Interpreting the CPU-Generated Address 334

Summary 336

Historical Perspective 337

MULTICS 339

Intel's Memory Architecture 340

Exercises 342

Bibliographic Notes and Further Reading 343

Chapter 8 Details of Page-Based

Memory Management 344

8.1 Demand Paging 344

8.1.1 Hardware for Demand Paging 345

8.1.2 Page Fault Handler 346

8.1.3 Data Structures for Demand-Paged Memory Management 346

8.1.4 Anatomy of a Page Fault 348

Page 6: Computer systems : an integrated approach to architecture ...COMPUTERSYSTEMS An Integrated Approach f Architecture and Operating Systems Umakishore RAMACHANDRAN GeorgiaInstitute ofTechnology

8.2 Interaction Between the Process Schedulerand Memory Manager 352

8.3 Page Replacement Policies 354

8.3.1 Belady's Min 354

8.3.2 Random Replacement 355

8.3.3 First In First Out (FIFO) 355

8.3.4 Least Recently Used (LRU) 357

8.3.5 Second Chance Page Replacement Algorithm 361

8.3.6 Review of Page Replacement Algorithms 364

8.4 Optimizing Memory Management 364

8.4.1 Pool of Free Page Frames 364

8.4.2 Thrashing 366

8.4.3 Working Set 368

8.4.4 Controlling Thrashing 369

8.5 Other Considerations 371

8.6 Translation Lookaside Buffer (TLB) 371

8.6.1 Address Translation with TLB 372

8.7 Advanced Topics in Memory Management 374

8.7.1 Multi-Level Page Tables 374

8.7.2 Access Rights As Part of the Page Table Entry 376

8.7.3 Inverted Page Tables 377

Summary 377

Exercises 378

Bibliographic Notes and Further Reading 380

Chapter 9 Memory Hierarchy 381

9.1 The Concept of a Cache 382

9.2 Principle of Locality 383

9.3 Basic Terminologies 383

9.4 Multilevel Memory Hierarchy 385

9.5 Cache Organization 388

9.6 Direct-Mapped Cache Organization 388

9.6.1 Cache Lookup 391

9.6.2 Fields of a Cache Entry 393

9.6.3 Hardware for a Direct-Mapped Cache 394

9.7 Repercussion on Pipelined Processor Design 397

Page 7: Computer systems : an integrated approach to architecture ...COMPUTERSYSTEMS An Integrated Approach f Architecture and Operating Systems Umakishore RAMACHANDRAN GeorgiaInstitute ofTechnology

22 Contents

9.8 Cache Read/Write Algorithms 398

9.8.1 Read Access to the Cache from the CPU 398

9.8.2 Write Access to the Cache from the CPU 398

9.9 Dealing with Cache Misses in the Processor Pipeline 403

9.9.1 Effect of Memory Stalls Due to Cache Misses on Pipeline Performance 404

9.10 Exploiting Spatial Locality to Improve Cache Performance 405

9.10.1 Performance Implications of Increased Block Size 411

9.11 Flexible Placement 412

9.11.1 Fully Associative Cache 413

9.11.2 Set Associative Cache 415

9.11.3 Extremes of Set Associativity 415

9.12 Instruction and Data Caches 420

9.13 Reducing Miss Penalty 421

9.14 Cache Replacement Policy 422

9.15 Recapping Types of Misses 424

9.16 Integrating TLB and Caches 427

9.17 Cache Controller 428

9.18 Virtually Indexed Physically Tagged Cache 429

9.19 Recap of Cache Design Considerations 432

9.20 Main Memory Design Considerations 433

9.20.1 Simple Main Memory 433

9.20.2 Main Memory and Bus to Match Cache Block Size 434

9.20.3 Interleaved Memory 435

9.21 Elements of Modern Main Memory Systems 436

9.21.1 Page Mode DRAM 441

9.22 Performance Implications of Memory Hierarchy 443

Summary 444

Memory Hierarchy of Modern Processors—An Example 446

Exercises 447

Bibliographic Notes and Further Reading 450

Chapter 10 Input/Output and Stable Storage 451

10.1 Communication Between the CPU and the I/O Devices 451

10.1.1 Device Controller 452

10.1.2 Memory Mapped I/O 453

Page 8: Computer systems : an integrated approach to architecture ...COMPUTERSYSTEMS An Integrated Approach f Architecture and Operating Systems Umakishore RAMACHANDRAN GeorgiaInstitute ofTechnology

Contents 23

10.2 Programmed I/O 455

10.3 DMA 457

10.4 Buses 460

10.5 I/O Processor 461

10.6 Device Driver 462

10.6.1 An Example 464

10.7 Peripheral Devices 466

10.8 Disk Storage 468

10.8.1 The Saga of Disk Technology 476

10.9 Disk Scheduling Algorithms 479

10.9.1 First-Come-First-Served (FCFS) 481

10.9.2 Shortest Seek Time First (SSTF) 481

10.9.3 SCAN (Elevator Algorithm) 481

10.9.4 C-SCAN (Circular Scan) 483

10.9.5 LOOK and C-LOOK 483

10.9.6 Disk Scheduling Summary 485

10.9.7 Comparison of the Algorithms 486

10.10 Solid State Drive 487

10.11 Evolution of I/O Buses and Device Drivers 489

10.11.1 Dynamic Loading of Device Drivers 491

10.11.2 Putting it All Together 491

Summary 494

Exercises 494

Bibliographic Notes and Further Reading 496

Chapter 11 File System 497

11.1 Attributes 497

11.2 Design Choices in Implementing a File Systemon a Disk Subsystem 504

11.2.1 Contiguous Allocation 505

11.2.2 Contiguous Allocation with Overflow Area 508

11.2.3 Linked Allocation 508

11.2.4 File Allocation Table (FAT) 509

11.2.5 Indexed Allocation 511

11.2.6 Multilevel Indexed Allocation 513

Page 9: Computer systems : an integrated approach to architecture ...COMPUTERSYSTEMS An Integrated Approach f Architecture and Operating Systems Umakishore RAMACHANDRAN GeorgiaInstitute ofTechnology

24 Contents

11.2.7 Hybrid Indexed Allocation 514

11.2.8 Comparison of the Allocation Strategies 518

11.3 Putting It All Together 519

11.3.1 i-node 525

11.4 Components of the File System 526

11.4.1 Anatomy of Creating and Writing Files 527

11.5 Interaction Among the Various Subsystems 528

11.6 Layout of the File System on the Physical Media 531

11.6.1 In Memory Data Structures 535

11.7 Dealing with System Crashes 536

11.8 File Systems for Other Physical Media 536

11.9 A Glimpse of Modern File Systems 537

11.9.1 Linux 537

11.9.2 Microsoft Windows 543

Summary 545

Exercises 546

Bibliographic Notes and Further Reading 548

Chapter 12 Multithreaded Programming

and Multiprocessors 549

12.1 Why Multithreading? 550

12.2 Programming Support for Threads 551

12.2.1 Thread Creation and Termination 551

12.2.2 Communication Among Threads 554

12.2.3 Read-Write Conflict, Race Condition, and Nondeterminism 556

12.2.4 Synchronization Among Threads 561

12.2.5 Internal Representation of Data Types Provided bythe Threads Library 568

12.2.6 Simple Programming Examples 569

12.2.7 Deadlocks and Livelocks 574

12.2.8 Condition Variables 576

12.2.9 A Complete Solution for the Video ProcessingExample 581

12.2.10 Discussion of the Solution 582

12.2.11 Rechecking the Predicate 584

Page 10: Computer systems : an integrated approach to architecture ...COMPUTERSYSTEMS An Integrated Approach f Architecture and Operating Systems Umakishore RAMACHANDRAN GeorgiaInstitute ofTechnology

12.3 Summary of Thread Function Calls and Threaded

Programming Concepts 587

12.4 Points to Remember in Programming with Threads 589

12.5 Using Threads as Software Structuring Abstraction 589

12.6 POSIX pthreads Library Calls Summary 590

12.7 OS Support for Threads 593

12.7.1 User Level Threads 595

12.7.2 Kernel-Level Threads 598

12.7.3 Solaris Threads: An Example of Kernel-Level Threads 600

12.7.4 Threads and Libraries 601

12.8 Hardware Support for Multithreading in

a Uniprocessor 602

12.8.1 Thread Creation, Termination, and Communication

Among Threads 602

12.8.2 Inter-Thread Synchronization 603

12.8.3 An Atomic Test-and-Set Instruction 603

12.8.4 Lock Algorithm with Test-and-Set Instruction 605

12.9 Multiprocessors 606

12.9.1 Page Tables 607

12.9.2 Memory Hierarchy 608

12.9.3 Ensuring Atomicity 610

12.10 Advanced Topics 611

12.10.1 OS Topics 611

12.10.2 Architecture Topics 624

12.10.3 The Road Ahead: Multicore and Many-CoreArchitectures 638

Summary 640

Historical Perspective 640

Exercises 642

Bibliographic Notes and Further Reading 645

Chapter 13 Fundamentals of Networking

and Network Protocols 648

13.1 Preliminaries 648

13.2 Basic Terminologies 649

13.3 Networking Software 654

Page 11: Computer systems : an integrated approach to architecture ...COMPUTERSYSTEMS An Integrated Approach f Architecture and Operating Systems Umakishore RAMACHANDRAN GeorgiaInstitute ofTechnology

13.4 Protocol Stack 656

13.4.1 Internet Protocol Stack 656

13.4.2 OSI Model 659

13.4.3 Practical Issues with Layering 660

13.5 Application Layer 660

13.6 Transport Layer 662

13.6.1 Stop-and-Wait Protocols 664

13.6.2 Pipelined Protocols 668

13.6.3 Reliable Pipelined Protocol 670

13.6.4 Dealing with Transmission Errors 675

13.6.5 Transport Protocols on the Internet 676

13.6.6 Transport Layer Summary 679

13.7 Network Layer 680

13.7.1 Routing Algorithms 681

13.7.2 Internet Addressing 686

13.7.3 Network Service Model 691

13.7.4 Network Routing versus Forwarding 696

13.7.5 Network Layer Summary 696

13.8 Link Layer and Local Area Networks 698

13.8.1 Ethernet 698

13.8.2 CSMA/CD 699

13.8.3 IEEE 802.3 701

13.8.4 Wireless LAN and IEEE 802.11 702

13.8.5 Token Ring 703

13.8.6 Other Link-Layer Protocols 704

13.9 Networking Hardware 706

13.10 Relationship Between the Layers of the Protocol Stack 711

13.11 Data Structures for Packet Transmission 713

13.11.1 TCP/IP Header 715

13.12 Message Transmission Time 716

13.13 Summary of Protocol-Layer Functionalities 722

13.14 Networking Software and the Operating System 723

13.14.1 Socket Library 723

13.14.2 Implementation of the Protocol Stack in the Operating System 725

13.14.3 Network Device Driver 725

13.15 Network Programming Using UNIX Sockets 727

13.16 Network Services and Higher-Level Protocols 734

Page 12: Computer systems : an integrated approach to architecture ...COMPUTERSYSTEMS An Integrated Approach f Architecture and Operating Systems Umakishore RAMACHANDRAN GeorgiaInstitute ofTechnology

Summary 736

Historical Perspective 737

From Telephony to Computer Networking 737

Evolution of the Internet 740

PC and the Arrival of LAN 741

Evolution of LAN 741

Exercises 743

Bibliographic Notes and Further Reading 746

Chapter 14 Epilogue: A Look Back at the Journey 748

14.1 Processor Design 748

14.2 Process 748

14.3 Virtual Memory System and Memory Management 749

14.4 Memory Hierarchy 750

14.5 Parallel System 750

14.6 Input/Output Systems 750

14.7 Persistent Storage 751

14.8 Network 751

Concluding Remarks 751

Appendix: Network Programming with UNIX Sockets 752

Bibliography 764

Index 770