shopping cart
Call us:  800-878-7323 HELP
McAfee SECURE helps keep you safe from identity theft, credit card fraud, spyware, spam, viruses and online scams.
Powell's Q&A, Q&A | June 24, 2009

All posts by Colum McCann Powell's Q&A: Colum McCann

"'Why do writers write? Because it isn't there.'" Continue »


  1. $17.50 Sale Hardcover add to wish list

Ships free on qualified orders.
$90.00
List price: $100.00
HARDCOVER, USED
Ships in 1 to 3 days
Add to Wishlist
Qty Store Section
1 Local Warehouse Textbooks- General


Computer Systems: A Programmer's Perspective

by Randal E Bryant

Computer Systems: A Programmer's Perspective Cover

ISBN13: 9780130340740
ISBN10: 013034074x
Condition: Standard
Dustjacket: None
All Product Details

Only 1 left in stock at $90.00!

Synopses & Reviews

Publisher Comments:

A PROGRAMMER'S PERSPECTIVE

This book is for programmers who want to write faster and more reliable programs. By learning how programs are mapped onto the system and executed, readers will better understand why programs behave the way they do and how inefficiencies arise. Computer systems are viewed broadly, comprising processor and memory hardware, compiler, operating system, and networking environment. With its programmer's perspective, readers can clearly see how learning about the inner workings of computer systems will help their further development as computer scientists and engineers. It also helps prepare them for further study in computer architecture, operating systems, compilers, and networking.

Topics include: data representations, machine-level representations of C programs, processor architecture, program optimization, memory hierarchy, linking, exceptional control flow, virtual memory and memory management, system-level 1/O, network programming, and concurrent programming. The coverage focuses on how these areas affect application and system programmers. For example, when covering data representations, it considers how the finite representations used to represent numbers can approximate integer and real numbers, but with limitations that must be understood by programmers. When covering caching, it discusses how the ordering of loop indices in matrix code can affect program performance. When covering networking, it describes how a concurrent server can efficiently handle requests from multiple clients.

The book is based on Intel-compatible (IA32) machines executing C programs on Unix or related operating systems such as Linux. Some familiarity with C or C++ is assumed, although hints are included to help readers making the transition from Java to C.

A complete set of resources, including labs and assignments, lecture notes, and code examples are available via the book's Web site at csapp.cs.cmu.edu.

Synopsis:

This book 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 book's concrete and hands-on approach will help readers understand what is going on under the hood of a computer system. This book focuses on the key concepts of basic network programming, program structure and execution, running programs on a system, and interaction and communication between programs. For anyone interested in computer organization and architecture as well as computer systems.

Synopsis:

Includes bibliographical references (p. 949-952) and index.

Table of Contents

(NOTE: Each chapter concludes with Summary.)

Preface.

1. 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.

I. PROGRAM STRUCTURE AND EXECUTION.

2. Representing and Manipulating Information.

Information Storage. Integer Representations. Integer Arithmetic. Floating Point.
3. 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.
4. 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.
5. 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.
6. The Memory Hierarchy.

Storage Technologies. Locality. The Memory Hierarchy. Cache Memories. Writing Cache-Friendly Code. Putting It Together: Exploiting Locality in Your Programs.

II. RUNNING PROGRAMS ON A SYSTEM.

7. 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.
8. Exceptional Control Flow.

Exceptions. Processes. System Calls and Error Handling. Process Control. Signals. Nonlocal Jumps. Tools for Manipulating Processes.
9. 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 the K-Best Measurement Scheme. Lessons Learned.
10. Virtual Memory.

Physical and Virtual Addressing. Address Spaces. VM as a Tool for Caching. VM as a Tool for Memory Management. VM as a Tool for Memory Protection. Address Translation. Case Study: The Pentium/Linux Memory System. Memory Mapping. Dynamic Memory Allocation. Garbage Collection. Common Memory-Related Bugs in C Programs. Recapping Some Key Ideas about Virtual Memory.

III. INTERACTION AND COMMUNICATION BETWEEN PROGRAMS.

11. System-Level I/O.

Unix I/O. Opening and Closing Files. Reading and Writing Files. Robust Reading and Writing with the R10 Package. Reading File Metadata. Sharing Files. I/O Redirection. Standard I/O. Putting It Together: Which I/O Functions Should I Use?
12. Network Programming.

The Client-Server Programming Model. Networks. The Global IP Internet. The Sockets Interface. Web Servers. Putting It Together: The TINY Web Server.
13. Concurrent Programming.

Concurrent Programming with Processes. Concurrent Programming with I/O Multiplexing. Concurrent Programming with Threads. Shared Variables in Threaded Programs. Synchronizing Threads with Semaphores. Putting It Together: A Concurrent Server Based on Pre-Threading. Other Concurrency Issues.
Appendix A. HCL Descriptions of Processor Control Logic.

HCL Reference Manual. SEQ. SEQ+. PIPE.
Appendix B. Error Handling.

Error Handling in Unix Systems. Error-Handling Wrappers. The csapp .h Header File. The csapp .c Source File.

Product Details

ISBN:
9780130340740
Subtitle:
A Programmer's Perspective
Author:
Bryant, Randal E.
Author:
Bryant, Randal E.
Author:
O'Hallaron, David R.
Publisher:
Prentice Hall
Location:
Upper Saddle River, NJ
Subject:
Computer Science
Subject:
Engineering - Electrical & Electronic
Subject:
Computers
Subject:
Telecommunication
Subject:
Computer Engineering
Subject:
User Interfaces
Subject:
Computer systems
Subject:
Electricity
Copyright:
Series Volume:
107-595
Publication Date:
August 2002
Binding:
Hardcover
Grade Level:
College/higher education:
Language:
English
Illustrations:
Yes
Pages:
1304
Dimensions:
9.62x7.50x1.64 in. 3.77 lbs.

Other books you might like

  1. $56.00 Used Hardcover add to wish list

    Engineering a Compiler

    Keith Cooper
  2. $39.95 Used Hardcover add to wish list
  3. $20.00 New Mass Market add to wish list
  4. $9.95 Used Trade Paper add to wish list
  5. $64.99 New Hardcover add to wish list
  6. $157.70 New Hardcover add to wish list

Related Aisles

  • back to top

Powell's City of Books is an independent bookstore in Portland, Oregon, that fills a whole city block with more than a million new, used, and out of print books. Shop those shelves — plus literally millions more books, DVDs, and eBooks — here at Powells.com.