Table of Contents Fifth Edition
This is the Table of Contents for the fifth edition of Computer Systems.
Each chapter concludes with a summary of the contents of the chapter and a set of exercises.
Level 7—Application
| 1. Computer Systems | |
|---|---|
| 1.1 | Levels of Abstraction |
| Abstraction in Art | |
| Abstraction in Documents | |
| Abstraction in Organizations | |
| Abstraction in Machines | |
| Abstraction in Computer Systems | |
| 1.2 | Hardware |
| Central Processing Unit | |
| Main Memory | |
| Disk | |
| 1.3 | Software |
| Operating Systems | |
| Software Analysis and Design | |
| 1.4 | Digital Information |
| Quantifying Space | |
| Quantifying Time | |
| Quick Response Codes | |
| Images | |
| 1.5 | Database Systems |
| Relations | |
| Queries | |
| Structure of the Language | |
Level 6—High-Order Language
| 2. C | |
|---|---|
| 2.1 | Variables |
| The C Compiler | |
| Machine Independence | |
| The C Memory Model | |
| Global Variables and Assignment Statements | |
| Local Variables | |
| 2.2 | Flow of Control |
| The If/Else Statement | |
| The Switch Statement | |
| The While Loop | |
| The Do Loop | |
| Arrays and the For Loop | |
| 2.3 | Functions |
| Void Functions and Call-by-Value Parameters | |
| Call-by-Reference Parameters | |
| 2.4 | Recursion |
| A Factorial Function | |
| Thinking Recursively | |
| Recursive Addition | |
| A Binomial Coefficient Function | |
| Reversing the Elements of an Array | |
| Towers of Hanoi | |
| Mutual Recursion | |
| The Cost of Recursion | |
| 2.5 | Dynamic Memory Allocation |
| Pointers | |
| Structures | |
| Linked Data Structures | |
Level 3—Instruction Set Architecture
| 3. Information Representation | |
|---|---|
| 3.1 | Unsigned Binary Representations |
| Binary Storage | |
| Integers | |
| Base Conversions | |
| Range for Unsigned Integers | |
| Unsigned Addition | |
| The Carry Bit | |
| 3.2 | Two’s Complement Binary Representation |
| Two’s Complement Range | |
| Base Conversions | |
| The Number Line | |
| The Overflow Bit | |
| The Negative and Zero Bits | |
| 3.3 | Operations in Binary |
| Logical Operators | |
| Register Transfer Language | |
| Arithmetic Operators | |
| Rotate Operators | |
| 3.4 | Hexadecimal and Character Representation |
| Hexadecimal | |
| Base Conversions | |
| ASCII Characters | |
| Unicode Characters | |
| 3.5 | Floating-Point Representation |
| Excess Representations | |
| The Hidden Bit | |
| Special Values | |
| The IEEE 754 Floating-Point Standard | |
| 3.6 | Models |
| 4. Computer Architecture | |
|---|---|
| 4.1 | Hardware |
| Central Processing Unit | |
| Main Memory | |
| Input/Output Devices | |
| Data and Control | |
| Instruction Format | |
| 4.2 | Direct Addressing |
| The Stop Instruction | |
| The Load Word Instruction | |
| The Store Word Instruction | |
| The Add Instruction | |
| The Subtract Instruction | |
| The And and Or Instructions | |
| The Invert and Negate Instructions | |
| The Load Byte and Store Byte Instructions | |
| The Input and Output Devices | |
| Big Endian Versus Little Endian | |
| 4.3 | von Neumann Machines |
| The von Neumann Execution Cycle | |
| A Character Output Program | |
| von Neumann Bugs | |
| A Character Input Program | |
| Converting Decimal to ASCII | |
| A Self-Modifying Program | |
| 4.4 | Programming at Level ISA3 |
| Read-Only Memory | |
| The Pep/9 Operating System | |
| Using the Pep/9 System | |
Level 5—Assembly
| 5. Assembly Language | |
|---|---|
| 5.1 | Assemblers |
| Instruction Mnemonics | |
| Pseudo-Operations | |
| The .ASCII and .END Pseudo-ops | |
| Assemblers | |
| The .BLOCK Pseudo-op | |
| The .WORD and .BYTE Pseudo-ops | |
| Using the Pep/9 Assembler | |
| Cross Assemblers | |
| 5.2 | Immediate Addressing and the Trap Instructions |
| Immediate Addressing | |
| The DECI, DECO, and BR Instructions | |
| The STRO Instruction | |
| Interpreting Bit Patterns: The HEXO Instruction | |
| Disassemblers | |
| 5.3 | Symbols |
| A Program with Symbols | |
| A von Neumann Illustration | |
| 5.4 | Translating from Level HOL6 |
| The Printf() Function | |
| Variables and Types | |
| Global Variables and Assignment Statements | |
| Type Compatibility | |
| Pep/9 Symbol Tracer | |
| The Shift and Rotate Instructions | |
| Constants and .EQUATE | |
| Placement of Instructions and Data | |
| 6. Compiling to the Assembly Level | |
|---|---|
| 6.1 | Stack Addressing and Local Variables |
| Stack-Relative Addressing | |
| Accessing the Run-Time Stack | |
| Local Variables | |
| 6.2 | Branching Instructions and Flow of Control |
| Translating the If Statement | |
| Optimizing Compilers | |
| Translating the If/Else Statement | |
| Translating the While Loop | |
| Translating the Do Loop | |
| Translating the For Loop | |
| Spaghetti Code | |
| Flow of Control in Early Languages | |
| The Structured Programming Theorem | |
| The Goto Controversy | |
| 6.3 | Function Calls and Parameters |
| Translating a Function Call | |
| Translating Call-by-Value Parameters with Global Variables | |
| Translating Call-by-Value Parameters with Local Variables | |
| Translating Non-void Function Calls | |
| Translating Call-by-Reference Parameters with Global Variables | |
| Translating Call-by-Reference Parameters with Local Variables | |
| Translating Boolean Types | |
| 6.4 | Indexed Addressing and Arrays |
| Translating Global Arrays | |
| Translating Local Arrays | |
| Translating Arrays Passed as Parameters | |
| Translating the Switch Statement | |
| 6.5 | Dynamic Memory Allocation |
| Translating Global Pointers | |
| Translating Local Pointers | |
| Translating Structures | |
| Translating Linked Data Structures | |
| 7. Language Translation Principles | |
|---|---|
| 7.1 | Languages, Grammars, and Parsing |
| Concatenation | |
| Languages | |
| Grammars | |
| A Grammar for C Identifiers | |
| A Grammar for Signed Integers | |
| A Context-Sensitive Grammar | |
| The Parsing Problem | |
| A Grammar for Expressions | |
| A C Subset Grammar | |
| Context Sensitivity of C | |
| 7.2 | Finite-State Machines |
| An FSM to Parse an Identifier | |
| Simplified FSMs | |
| Nondeterministic FSMs | |
| Machines with Empty Transitions | |
| Multiple Token Recognizers | |
| Grammars Versus FSMs | |
| 7.3 | Implementing Finite-State Machines |
| The Compilation Process | |
| A Table-Lookup Parser | |
| A Direct-Code Parser | |
| An Input Buffer Class | |
| A Multiple-Token Parser | |
| 7.4 | Code Generation |
| A Language Translator | |
| Parser Characteristics | |
Level 4—Operating System
| 8. Process Management | |
|---|---|
| 8.1 | Loaders |
| The Pep/9 Operating System | |
| The Pep/9 Loader | |
| Program Termination | |
| 8.2 | Traps |
| The Trap Mechanism | |
| The RETTR Instruction | |
| The Trap Handlers | |
| Trap Addressing Mode Assertion | |
| Trap Operand Address Computation | |
| The No-Operation Trap Handlers | |
| The DECI Trap Handler | |
| The DECO Trap Handler | |
| The HEXO and STRO Trap Handlers and Operating System Vectors | |
| 8.3 | Concurrent Processes |
| Asynchronous Interrupts | |
| Processes in the Operating System | |
| Multiprocessing | |
| A Concurrent Processing Program | |
| Critical Sections | |
| A First Attempt at Mutual Exclusion | |
| A Second Attempt at Mutual Exclusion | |
| Peterson’s Algorithm for Mutual Exclusion | |
| Semaphores | |
| Critical Sections with Semaphores | |
| 8.4 | Deadlocks |
| Resource Allocation Graphs | |
| Deadlock Policy | |
| 9. Storage Management | |
|---|---|
| 9.1 | Memory Allocation |
| Uniprogramming | |
| Fixed-Partition Multiprogramming | |
| Logical Addresses | |
| Variable-Partition Multiprogramming | |
| Paging | |
| 9.2 | Virtual Memory |
| Large Program Behavior | |
| Virtual Memory | |
| Demand Paging | |
| Page Replacement | |
| Page-Replacement Algorithms | |
| 9.3 | File Management |
| Disk Drives | |
| File Abstraction | |
| Allocation Techniques | |
| 9.4 | Error-Detecting and Error-Correcting Codes |
| Error-Detecting Codes | |
| Code Requirements | |
| Single-Error-Correcting Codes | |
| 9.5 | RAID Storage System |
| RAID Level 0: Nonredundant Striped | |
| RAID Level 1: Mirrored | |
| RAID Levels 01 and 10: Striped and Mirrored | |
| RAID Level 2: Memory-Style ECC | |
| RAID Level 3: Bit-Interleaved Parity | |
| RAID Level 4: Block-Interleaved Parity | |
| RAID Level 5: Block-Interleaved Distributed Parity | |
Level 1—Logic Gate
| 10. Combinational Circuits | |
|---|---|
| 10.1 | Boolean Algebra and Logic Gates |
| Combinational Circuits | |
| Truth Tables | |
| Boolean Algebra | |
| Boolean Algebra Theorems | |
| Proving Complements | |
| Logic Diagrams | |
| Alternate Representations | |
| 10.2 | Combinational Analysis |
| Boolean Expressions and Logic Diagrams | |
| Truth Tables and Boolean Expressions | |
| Two-Level Circuits | |
| The Ubiquitous NAND | |
| 10.3 | Combinational Design |
| Canonical Expressions | |
| Three-Variable Karnaugh Maps | |
| Four-Variable Karnaugh Maps | |
| Dual Karnaugh Maps | |
| Don’t-Care Conditions | |
| 10.4 | Combinational Devices |
| Viewpoints | |
| Multiplexer | |
| Binary Decoder | |
| Demultiplexer | |
| Adder | |
| Adder/Subtracter | |
| Arithmetic Logic Unit | |
| Abstraction at Level LG1 | |
| 11. Sequential Circuits | |
|---|---|
| 11.1 | Latches and Clocked Flip-Flops |
| The SR Latch | |
| The Clocked SR Flip-Flop | |
| The Master–Slave SR Flip-Flop | |
| The Basic Flip-Flops | |
| The JK Flip-Flop | |
| The D Flip-Flop | |
| The T Flip-Flop | |
| Excitation Tables | |
| 11.2 | Sequential Analysis and Design |
| A Sequential Analysis Problem | |
| Preset and Clear | |
| Sequential Design | |
| A Sequential Design Problem | |
| 11.3 | Computer Subsystems |
| Registers | |
| Buses | |
| Memory Subsystems | |
| Address Decoding | |
| A Two-Port Register Bank | |
Level 2—Microcode
| 12. Computer Organization | |
|---|---|
| 12.1 | Constructing a Level-ISA3 Machine |
| The CPU Data Section | |
| The von Neumann Cycle | |
| The Store Byte Direct Instruction | |
| Bus Protocols | |
| The Store Word Direct Instruction | |
| The Add Immediate Instruction | |
| The Load Word Indirect Instruction | |
| The Arithmetic Shift Right Instruction | |
| The CPU Control Section | |
| 12.2 | Performance |
| The Data Bus Width | |
| Memory Alignment | |
| The Definition of an n-Bit Computer | |
| Cache Memories | |
| The System Performance Equation | |
| RISC Versus CISC | |
| 12.3 | The MIPS Machine |
| The Register Set | |
| The Addressing Modes | |
| The Instruction Set | |
| MIPS Computer Organization | |
| Pipelining | |
| 12.4 | Conclusion |
| Simplifications in the Model | |
| The Big Picture | |