Hot Best Seller

Computer Systems: A Programmer's Perspective

Availability: Ready to download

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


Compare

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

30 review for Computer Systems: A Programmer's Perspective

  1. 4 out of 5

    Morgan

    This is an easy to follow book that covers how computers work from the level of processors up to web servers. It's written for computer science students, and goes into a lot of detail about modern operating systems concepts such as virtual memory, processes, and signals. I had a lot of experience programming before reading this, but the book definitely clarified my thinking on many topics.

  2. 4 out of 5

    Ed Schwartz

    A systems book that no computer scientist should go without reading.

  3. 5 out of 5

    Ashwin

    This review is crossposted from my blog here: https://daariga.wordpress.com/2012/04... I picked up Computer Systems: A Programmer’s Perspective (2nd Edition) by Randal Bryant and David O’Hallaron while searching for a stimulating book on computer architecture or operating systems. CSAPP turned out to be a good find since it is aimed at the intersection of computer architecture, computers systems and OS. Using practical examples and problems the book walks the student through all the hardware and This review is crossposted from my blog here: https://daariga.wordpress.com/2012/04... I picked up Computer Systems: A Programmer’s Perspective (2nd Edition) by Randal Bryant and David O’Hallaron while searching for a stimulating book on computer architecture or operating systems. CSAPP turned out to be a good find since it is aimed at the intersection of computer architecture, computers systems and OS. Using practical examples and problems the book walks the student through all the hardware and software knowledge that is required to understand how a program comes to life on a computer. Assume a student compiles a Hello world program and runs it. A plethora of hardware features and a large set of software come together to make this simple magic possible. Software like compiler, assembler, linker, loader, libraries and operating system kernel help to compile and load the program. Hardware features like hard disk, main memory, controllers, buses, cache and the processor bring the program to life. Also, hardware and software need to also act in tandem in virtual memory, system calls and interrupt handling to make the execution of a program scalable, efficient, fast and safe. This book argues that a good programmer needs to be aware of all the afore mentioned concepts and these are what the book tries to cover. Some notes about this book: The book is structured as a workbook. You read a concept, solve a problem or experiment with a program that illustrates it and then move on to the next concept. There are trivia, blurbs and practical information about IA32 (Intel) architecture and Linux where-ever necessary. This ensures that the book remains grounded in reality and never feels dry to study. The authors have tried their best to introduce as many of modern multiprocessor concepts as possible in a practical way. There is a lot missing, for example, super-scalar architecture and out-of-order execution. However, the programmer interested in these details can easily learn about them with a book like Inside The Machine. The chapters on memory hierarchy and virtual memory are the real treasure in this book. The sections on cache here and in Inside The Machine stand head-to-head as the most practical introductions to the topic. Virtual memory is an important concept, but sadly it gets short shrift in computer science education. This is because it requires the OS and hardware to work together and those subjects are typically covered by two different courses or textbooks in university. Not having to deal with such caste boundaries, this book is able to show the student how virtual memory is brought to life. The book gets a bit vague towards the end. I was not interested in and did not see any benefit for this book to touch on areas of system I/O, network programming and concurrency. I am happy to conclude that CSAPP is a stimulating book to study and work through. This book covers all the knowledge that a good programmer needs to understand how his program executes upon the OS and CPU and how to make it efficient, fast and scalable. I highly recommend Computer Systems: A Programmer’s Perspective for anyone who feel they need a better grasp of these ideas.

  4. 4 out of 5

    Ayush Bhat

    Apart from being a great Computer Architecture book, I found it to be a great introduction to the C language as well.

  5. 5 out of 5

    Susan

    I skimmed through this book with detailed reading of some chapters. It's filled many gaps in my understanding of computer systems! It's a very clear and well-written book of computer systems from a programmer's perspective, with important emphasis on parts of the system (hardware, OS, application program) that are important for a software programmer to understand.

  6. 5 out of 5

    Fábio Botelho

    Fundamental book for computer science students and/or general people that want to understand fundamentals of computer systems: architecture basics such as pipelining and optimization, data representation, virtual memory etc., . The best thing about the book is that it gives an hands on approach with several labs that apply very well the theory into practice. This was definitely the most practical and useful book that I have read while graduating. It was helpfully in at least three to four course Fundamental book for computer science students and/or general people that want to understand fundamentals of computer systems: architecture basics such as pipelining and optimization, data representation, virtual memory etc., . The best thing about the book is that it gives an hands on approach with several labs that apply very well the theory into practice. This was definitely the most practical and useful book that I have read while graduating. It was helpfully in at least three to four courses.

  7. 5 out of 5

    Joe Cole

    Concise without leaving out important knowledge, meanwhile you don't need to worry about understanding the material. While reading the book, you feel like traveling in the computer world with a smart compass that keeps telling you everything you just need, no more, no less.

  8. 4 out of 5

    Emil Petersen

    A mental marathon. This actually did a lot for me, but I had to put many, many hours and days into it to get just the overarching concepts. I'm not sure a book is the best way to learn computer systems. While reading I looked up many, many things and found that you get excellent explanations of everything in here via 10-20 minute YouTube videos and online exercises. If I had to choose between the internet and this book, I'd chose the internet. All the chapters are excellent, except maybe chapter A mental marathon. This actually did a lot for me, but I had to put many, many hours and days into it to get just the overarching concepts. I'm not sure a book is the best way to learn computer systems. While reading I looked up many, many things and found that you get excellent explanations of everything in here via 10-20 minute YouTube videos and online exercises. If I had to choose between the internet and this book, I'd chose the internet. All the chapters are excellent, except maybe chapter 7 on linking and chapter 8 on exceptional control flow. Each chapter starts with some good reasons for actually spending the time to understand the given subject, which is very nice. Being new in this area of CS, I had a hard time actually assessing whether I got sufficiently around the 'need-to-know' concepts (the answer is probably 'No').

  9. 4 out of 5

    Abhinav

    Read this book and took the class(15213). The book explains the concepts of computer systems with amazing clarity. It is the textbook that I always keep coming back to whenever I have any doubts. This book teaches you, throughout all of its chapters in great details what happens when you "run" a program on your computer. Greatly enhanced my knowledge of CS.

  10. 4 out of 5

    Jack Dinkel

    This book is utterly useless you read chapters entirely. If I read a chapter from start to finish, absorbing every word, I could understand the material well enough, but it got so caught up in jargon and what-ifs that it was incomprehensible as a quick lookup guide. As a computer scientist, a book you can quickly look things up in is essential and this book does not do that.

  11. 4 out of 5

    Sarah

    Partially read for CSCI 2400: Computer Systems at CU Boulder. I actually found this a very approachable textbook on this subject, and following along with the examples and exercises in the text was quite helpful in gaining a working understanding of the material for lab exercises and exams.

  12. 5 out of 5

    Kiran Gangadharan

    A good introduction to Computer Science and Systems in comprehensible chunks.

  13. 4 out of 5

    Fatima

    Easy to follow, only read 5 or 6 chapters as part of the class CS110 at Stanford.

  14. 4 out of 5

    Andrew Chen

    can't go wrong reading this book to learn systems programming. when read cover to cover, csapp forms a pretty coherent progression of knowledge that starts from the base fundamentals. some of the interesting chapters: ch2: representing data like integers (signed, unsigned w/ 2s complement, big-endian and little-endian), floats, and operations like arithmetic, and bit shifts ch3: x86-64 assembly instructions, registers, stack usage (allocating arrays + more complex data structures), control transfe can't go wrong reading this book to learn systems programming. when read cover to cover, csapp forms a pretty coherent progression of knowledge that starts from the base fundamentals. some of the interesting chapters: ch2: representing data like integers (signed, unsigned w/ 2s complement, big-endian and little-endian), floats, and operations like arithmetic, and bit shifts ch3: x86-64 assembly instructions, registers, stack usage (allocating arrays + more complex data structures), control transfer/calling procedure ch4: HCL, microprocessor design, pipelining, low level look at how gates can form compute units and how these units are strung together into a basic sequential/pipelined microprocessor ch5: techniques to optimize code based on hardware, like unrolling loops, minimizing memory calls, function calls, predictable branches, multiple accumulators, etc. also temporal/spatial stuff with memory accesses ch6: caching behavior, different types of memory (L1/L2/L3 caches, SRAM/DRAM), associativity of caches and assorted issues (thrashing) ch8: system calls, kernal/user mode, context switching for logical flows, exception/signal handling, forks/execve, reaping processes ch9: virtual vs. physical memory, pages, address translation, page tables + multi-level page tables, memory mapping, malloc/free, dynamic memory allocation, garbage collection techniques

  15. 4 out of 5

    Dimitar Haralanov

    A great book, which goes deep enough into the fundamental concepts of a modern computer systems. It starts with computer architecture basics (data representation, CPU, memory, I/O devices), goes through operating systems basics (processes, threads, memory, files, etc.), then program structure (data and control flow), pipelining, optimisations, memory hierarchy and ends with interaction and communication between programs - networking basics, different models for concurrency and a taste of error h A great book, which goes deep enough into the fundamental concepts of a modern computer systems. It starts with computer architecture basics (data representation, CPU, memory, I/O devices), goes through operating systems basics (processes, threads, memory, files, etc.), then program structure (data and control flow), pipelining, optimisations, memory hierarchy and ends with interaction and communication between programs - networking basics, different models for concurrency and a taste of error handling. The book has concrete and easy to follow along examples in C (basic understanding of C is required), which makes the book very practical.

  16. 4 out of 5

    Dmytro Chaban

    Must have book for those who want not just know how to build yet another application, but for those who want to know how this yet another application working under the C language shell. And under I mean from C language to the most lower level of hardware as an ALU and other things. This book can skill you up really high.

  17. 5 out of 5

    Musa Jamshed

    Had to read this for a systems class... being a good enough student to actually read and consume the textbook material is somewhat new to me, but this book made it easy. The descriptions are easy to understand, have the right amount of specificity, and only use examples/diagrams when necessary. Literally the best textbook I've ever had.

  18. 4 out of 5

    Swastik Agarwal

    Worth the price (and your time!) for the chapter on memory hierarchy alone. There's very good depth for each topic covered, the language is easy to understand, and the homework assignments are very well thought out too. Absolutely fantastic book. Highly recommended, especially if you're a self-taught engineer.

  19. 4 out of 5

    Leal Luo

    Awesome book, it helps me construct the idea about computer step by step. I didn't finish all the books because my limited ability. I will read it from time to time, when i feel my level and understanding increase. I was fascinated by the beauty of the computer and its philosophy.

  20. 5 out of 5

    Mingjie Ma

    Well structured overall, but presentations on linking and process management were slightly bemusing.

  21. 5 out of 5

    Tomek

    If you want to remind yourself some basic stuff about how computers work, this book is for you. But, be warned! Examples are in C language.

  22. 4 out of 5

    ِ

    Apart from all the errata found in the Global Edition, which unfortunately was the edition I picked, this is an awesome text.

  23. 5 out of 5

    Lucas

    Very dense book with a lot of great information but can be incomprehensible at times. I would not recommend his for an introduction to the topic and am a bit stymied why it often is. Upon reviewing the text it makes sense once I understand the material but I must paradoxically understand the material first. Perhaps a bit more fitting for a refresher.

  24. 5 out of 5

    Lu Wangshan

    One of the best computer science/engineering books ever, arguably the best textbook in this domain. The writing is clear, precise, and it does an excellent job in explaining complex ideas in a simple and understandable way.

  25. 4 out of 5

    Emilie

    As written for and used in 15-213: Introduction to Computer Systems at CMU. This is a really excellent textbook for beginning low level programming.

  26. 5 out of 5

    Antidb

    A huge book, hard to read from start to the end, choose your perspectives.

  27. 4 out of 5

    Wudongnoodles

    Good. Very easy to read. Clearly written.

  28. 4 out of 5

    John

    Quite instructive; good intro to assembly, C network programming, and other systems topics at the undergrad level.

  29. 5 out of 5

    Arvydas Sidorenko

    The content of this book is a must-know for every software developer without exception. It is rather long, but I found it easy to read.

  30. 4 out of 5

    Landey Gu

    Some chapters really needs more elaboration. Overall, provides a decent material which illustrated the architecture of the computer system.

Add a review

Your email address will not be published. Required fields are marked *

Loading...
We use cookies to give you the best online experience. By using our website you agree to our use of cookies in accordance with our cookie policy.