Computer Systems: A Programmer’s Perspective (2016) — Randal E. Bryant, David R. O’Hallaron — textbook

  • Author: Martin Gayford
  • Genre: Art
  • Publisher: New Directions
  • Publication Year: 2017
  • Pages: 160
  • Format: Paperback
  • Language: English
  • ISBN: 978-0140481341
  • Rating: 4,3 ★★★★★

Computer Systems: A Programmer’s Perspective Review

Computer Systems: A Programmer’s Perspective by Randal E. Bryant and David R. O’Hallaron teaches how software runs on real machines: data, code, and the OS stack from bits to networks. It’s a performance-minded guide for developers who want to reason beyond language abstractions.

Overview

Topics: data representation and machine arithmetic; assembly and control flow; optimization and the compiler’s view; memory hierarchy (caches, virtual memory); linking and loaders; exceptions and processes; concurrency and synchronization; network programming.

Summary

You learn why integers overflow, how the compiler structures control, how to read and write x86-64, and how caches and virtual memory shape latency. Labs (bomb, attack, malloc, proxy) translate theory into debugging, security, allocator design, and sockets. The throughline: performance and correctness emerge from understanding the machine model.

Authors

Bryant and O’Hallaron write with clarity and lab-first pedagogy. Examples are tight, diagrams are purposeful.

Key Themes

Abstractions are leaky; performance is architectural; memory models matter; systems thinking prevents “heisenbugs.”

Strengths and Weaknesses

Strengths: cohesive narrative from bits to networks, excellent labs, practical performance mindset. Weaknesses: architecture specifics age and deep kernel internals are limited—pair with OS texts for depth.

Target Audience

Systems-curious programmers, performance engineers, and CS students moving from algorithms to real machines.

Favorite Ideas

Cache-aware data layouts; unsafe optimizations revealed by aliasing rules; the elegance of virtual addressing; robust network code via careful I/O.

Takeaways

Write faster, safer code by thinking like the machine. Understand data layout, memory, and the toolchain; measure before guessing; design with caches and concurrency in mind.

SKU: VC-743e83
Category:
Author

Randal E. Bryant, David R. O'Hallaron

Year

2016

Kind

textbook