Location:  Home » Books » Computer Systems: A Programmer's Perspective (2nd Edition)    

Computer Systems: A Programmer's Perspective (2nd Edition)

Computer Systems: A Programmer's Perspective (2nd Edition)Authors: Randal E. Bryant, David R. O'Hallaron
Publisher: Addison Wesley
Category: Book

List Price: $108.00
Buy New: $102.90
as of 9/6/2010 21:40 CDT details
You Save: $5.10 (5%)

In Stock


New (25) Used (14) from $98.95

Seller: allnewbooks
Rating: 4.5 out of 5 stars 21 reviews
Sales Rank: 9,850

Media: Hardcover
Edition: 2
Pages: 1080
Number Of Items: 1
Shipping Weight (lbs): 3.8
Dimensions (in): 9.2 x 7.4 x 1.5

ISBN: 0136108040
Dewey Decimal Number: 004
EAN: 9780136108047
ASIN: 0136108040

Publication Date: February 14, 2010
Availability: Usually ships in 1-2 business days

Also Available In:

  • Paperback - Computer Systems: A Programmer's Perspective (Beta Version)
  • Hardcover - Computer Systems: A Programmer's Perspective

Similar Items:


Editorial Reviews:

Product Description

For Computer Systems, Computer Organization and Architecture courses in CS, EE, and ECE departments.


Few students studying computer science or computer engineering will ever have the opportunity to build a computer system. On the other hand, most students will be required to use and program computers on a near daily basis. Computer Systems: A Programmer’s Perspective introduces the important and enduring concepts that underlie computer systems by showing how these ideas affect the correctness, performance, and utility of application programs. The text's hands-on approach (including a comprehensive set of labs) helps students understand the “under-the-hood” operation of a modern computer system and prepares them for future courses in systems topics such as compilers, computer architecture, operating systems, and networking.

Visit the CSS:AP web page http://csapp.cs.cmu.edu for more information and resources.




Customer Reviews:
Showing reviews 1-5 of 21



5 out of 5 stars Everything you need to know as a programmer   March 24, 2005
Subbaiah N. Venkata (Sunnyvale, CA, USA)
33 out of 35 found this review helpful

What a splendid book! I wish I had gone to CMU and take this course. This book is written by CMU professors after teaching Computer Systems course for few years. This book covers broad spectrum of topics from Operating Systems, Compilers, Computer Architecture, Assembly Level Programming, Kernel internals, Linkers, etc from a programmer's perspective (as the title aptly says).

I am searching for words to describe the usefulness of this book. In my experience, I have had hard time learning some of the topics where Operating systems, Processor and Compilers intersect. For example, Linkers and Loaders, program disassembly using reverse-engineering, virtual memory in Kernel etc. After all the hard work, I found the right book which grinds all the famous books in different areas and gives the right juice for the real programmers to taste and digest.

Those famous books are:
[1] Computer Organization and Design Second Edition : The Hardware/Software Interface by David A. Patterson, John L. Hennessy
[2] UNIX Internals: The New Frontiers by Uresh Vahalia
[3] Linux Kernel Development by Robert Love
[4] Linkers and Loaders by John R. Levine
[5] GNU Binutils (GAS, objdump, ar, nm etc) Documentation

Excellent job. I really appreciate the work and content of this book.



5 out of 5 stars I love this book   November 19, 2003
goldenv
28 out of 30 found this review helpful

Have it on my desk since I bought for my computer architecture course (Csci 2021, Univ. of Minnesota - Twin Cities). Such a cool book to learn how computer hardware and software *really* work together, and why finding that out, could make us a more valuable computer scientist/programmer. Also provides a great hand to get you ready for advanced classes like Operating Systems, Compilers. My favorite chapter in the book is about Caches. It's unbelievable to first find out how much cached really matter! Thanks Prof. Bryant and O'Hallaron.

I think the first 7 chapters are what the most important to understand and grasp. Rest of the chapters are important too but they usually will overlap with other topics/classes like operating systems. Also, chapter 4 goes in more detail in processor architecure like pipelined CPU and will probably help more to the computer engineer; although computer scientists do learn a lot out of it and will help write code to exploit modern pipelined CPU's, like the deeply pipelined, Pentium 4. But I think the first 7 chapters are the ones, that sets this book aside from the others. You will need access to LINUX, as most of the discussions rotate around it like the virtual address space, assembly code - GAS and so on use the linux implementations.

After reading, you will be able tp convert decimal nos to binary and even floating point nos to binary format very easily. You will also learn more about twos complement operations and integer and floating point arithmetic, able to understand assembly code (GAS: GNU Assembler code), how procedures are implemented using stacks array allocation, debugging, embedding assembly code in C programs, more about CPU instruction sets and hardware control language and their implementations, pipelining, optimizing programs and expoliting caches, understanding modern CPU's, various storage technologies, linking, symbol tables, object files, shared object files, and more.

Don't forget to visit the book's website before buying the book. It is

Here is a brief look about what it is all about!
Chapter 1: A Tour of Computer Systems
Chapter 2: Representing and Manipulating Information
Chapter 3: Machine-Level Representation of Programs
Chapter 4: Processor Architecture [MORE FOR COMPUTER ENGINEERS!]
Chapter 5: Optimizing Program Performance
Chapter 6: The Memory Hierarchy [COOL ONE!]
Chapter 7: Linking
Chapter 8: Exceptional Control Flow
Chapter 9: Measuring Program Execution Time
Chapter 10: Virtual Memory
Chapter 11: System-Level I/O
Chapter 12: Network Programming
Chapter 13: Concurrent Programming


5 out of 5 stars Great book   February 14, 2010
T. Long
2 out of 2 found this review helpful

This book teaches you everything you need to know about computer systems from a programmer's perspective.
Complete with detailed examples and exercises, this book has it all. The information contained in this book makes you think about programming in an entirely new light.
Highly recommended.



5 out of 5 stars Densely packed and valuable   March 21, 2010
calvinnme
2 out of 2 found this review helpful

This book is a very unusual one because it explains computer architecture from the standpoint of the C/C++ programmer. That is, its object is to allow the programmer to understand how the architecture of the computer on which he/she programs effects the performance and execution of these programs. Things such as virtual memory, parallelization, optimization, and even logical and mathematical operations are effected by the architecture of the computer itself. For example - big endian versus little endian machines. You'd believe you wouldn't have to think about how your computer is organized at this level - that is one of the reasons you program in a high level language anyways, right? Wrong. If you have data stored in big endian format that is mathematically operated upon in a little endian machine, or vice versa, you will wind up with something quite different from what you intended. That's the kind of information this book gets into.

Some have labeled this book as "hard". It really is not hard as much as it is densely packed with knowledge. You need to take each concept within each chapter and think about it before you go on to the next. If you do this you'll not only get much out of it during your initial read, you'll have a valuable reference for some time to come.

To get the most of this book you should already be a capable C/C++ programmer and you should also know the building blocks of a computer. The book goes over these things very quickly but it really is not enough if you start out knowing nothing about these subjects. Highly recommended.

The following is the proposed table of contents for the second edition:
1 A Tour of Computer Systems 1

I Program Structure and Execution 25
2 Representing and Manipulating Information 29
3 Machine-Level Representation of Programs 145
4 Processor Architecture 317
5 Optimizing Program Performance 449
6 The Memory Hierarchy 531

II Running Programs on a System 619
7 Linking 623
8 Exceptional Control Flow 667
9 Virtual Memory 741

III Interaction and Communication Between Programs 819
10 System-Level I/O 823
11 Network Programming 847
12 Concurrent Programming 893

A Error Handling 957
A.1 Error Handling in Unix
Systems 957
A.2 Error-Handling
Wrappers 959



5 out of 5 stars Bryant and O'Hallaron created a great course   December 16, 2003
Jason Crawford (Seattle, WA)
17 out of 24 found this review helpful

OK, I haven't actually read this book, but I took Bryant and O'Hallaron's course in 1998 (the first semester it was offered, I think) and was a TA for it a year later. They saw the need for a new course for CS undergrads who were coming in and learning C++ and Java without really understanding the guts of the machine. Their course taught things like bit-level representation of numbers (including two's complement and IEEE floating-point), assembly language, virtual memory, memory allocation, caching and its effect on performance, and the basics of TCP/IP. It was a great course--very informative and a lot of fun--and since there was nothing else like it out there, they had to write this book to go along with it.

I'm sure the book lives up to the course--and if not, you can rate this review "very unhelpful!" (I did read drafts of the chapters while I was a TA, so I hope I know what I'm talking about!)

Showing reviews 1-5 of 21



Copyright © 2009 Distance Learning Computer Course