REVIEW - Computer Systems - A Programmer's Perspective


Computer Systems

A Programmer's Perspective


Randal E. Bryant, David Richard O'Hallaron


Pearson (2011)




Paul Floyd


April 2014



Reviewed: January 2014

There aren’t many books like this about, and their scarcity increases their value. Clearly this is aimed at the undergraduate, and I felt that I missed out a lot by not doing the exercises (my excuse is that I do most of my reading over breakfast or on public transport).

The authors try to cover computer systems from the ground up. After the basics, they go into lengthy coverage of machine code. Next up is a cover the basics of processor design, developing a simplified x66 basic processor (which they call y86). This is then enhanced by adding pipelining, out-of-order execution and an explanation of hazards. The next chapter is on performance from the perspective of the compiler and the code that it has to deal with. The last chapter in the first section covers caches and the memory hierarchy.

Section 2 kicks off with a chapter on linking, a topic that generally gets little coverage. After this, as the topics get to higher levels of computer systems, I felt that the ground was better trodden and the scarcity value decreased. The last few chapters cover Unix systems programming in the same vein as W. Richard Stevens. Some of the low level C stuff was lacking government health warnings – setjmp/ longjmp are described without saying anything about C++ exceptions and threads. I was a bit disappointed that the chapter on threading didn’t get down to instruction reordering and its impact on thread safety.

Book cover image courtesy of Open Library.

Your Privacy

By clicking "Accept All Cookies" you agree ACCU can store cookies on your device and disclose information in accordance with our Privacy Policy and Cookie Policy.

By clicking "Share IP Address" you agree ACCU can forward your IP address to third-party sites to enhance the information presented on the site, and that these sites may store cookies on your device.