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