Skip to content

Computer Systems A Programmer's Perspective

Best in textbook rentals since 2012!

ISBN-10: 013034074X

ISBN-13: 9780130340740

Edition: 2003

Authors: Randal E. Bryant, David R. O'Hallaron

List price: $149.00
Blue ribbon 30 day, 100% satisfaction guarantee!
what's this?
Rush Rewards U
Members Receive:
Carrot Coin icon
XP icon
You have reached 400 XP and carrot coins. That is the daily max!

For Computer Organization and Architecture and Computer Systems courses in CS and EE and ECE departments. Developed out of an introductory course at Carnegie Mellon University, this text explains the important and enduring concepts underlying all computer systems, and shows the concrete ways that these ideas affect the correctness, performance, and utility of application programs. The text's concrete and hands-on approach will help students understand what is going on under the hood of a computer system.
Customers also bought

Book details

List price: $149.00
Copyright year: 2003
Publisher: Prentice Hall PTR
Publication date: 8/13/2002
Binding: Hardcover
Pages: 1304
Size: 7.75" wide x 9.25" long x 1.50" tall
Weight: 3.740
Language: English

Preface
A Tour of Computer Systems
Information Is Bits + Context
Programs Are Translated by Other Programs into Different Forms
It Pays to Understand How Compilation Systems Work
Processors Read and Interpret Instructions Stored in Memory. Caches Matter
Storage Devices Form a Hierarchy
The Operating System Manages the Hardware
Systems Communicate with Other Systems Using Networks
The Next Step
Program Structure and Execution
Representing and Manipulating Information
Information Storage
Integer Representations
Integer Arithmetic
Floating Point
Machine-Level Representation of Programs
A Historical Perspective
Program Encodings
Data Formats
Accessing Information
Arithmetic and Logical Operations
Control
Procedures
Array Allocation and Access
Heterogeneous Data Structures
Alignment
Putting It Together: Understanding Pointers
Life in the Real World: Using the GDB Debugger
Out-of-Bounds Memory References and Buffer Overflow
Floating-Point Code
Embedding Assembly Code in C Programs
Processor Architecture
The Y86 Instruction Set Architecture
Overview of Logic Design and the Hardware Control Language
A Sequential Implementation
General Principles of Pipelining
Pipelined Implementations
Optimizing Program Performance
Capabilities and Limitations of Optimizing Compilers
Expressing Program Performance
Program Example
Eliminating Loop Inefficiencies
Reducing Procedure Calls
Eliminating Unneeded Memory References
Understanding Modern Processors
Reducing Loop Overhead
Converting to Pointer Code
Enhancing Parallelism
Putting It Together: Summary of Results for Optimizing Combining Code
Branch Prediction and Misprediction Penalties
Understanding Memory Performance
Life in the Real World: Performance Improvement Techniques
Identifying and Eliminating Performance Bottlenecks
The Memory Hierarchy
Storage Technologies
Locality
The Memory Hierarchy
Cache Memories
Writing Cache-Friendly Code
Putting It Together: Exploiting Locality in Your Programs
Running Programs on a System
Linking
Compiler Drivers
Static Linking
Object Files
Relocatable Object Files
Symbols and Symbol Tables
Symbol Resolution
Relocation
Executable Object Files
Loading Executable Object Files
Dynamic Linking with Shared Libraries
Loading and Linking Shared Libraries from Applications
Position-Independent Code (PIC)
Tools for Manipulating Object Files
Exceptional Control Flow
Exceptions
Processes
System Calls and Error Handling
Process Control
Signals
Nonlocal Jumps
Tools for Manipulating Processes
Measuring Program Execution Time
The Flow of Time on a Computer Systems
Measuring Time by Interval Counting
Cycle Counters
Measuring Program Execution Time with Cycle Counters
Time-of-Day Measurements
Putting It Together: An Experimental Protocol
Looking into the Future
Life in the Real World: An Implementation of theK-Best Measurement Scheme
Lessons Learned
Virtual Memory. P