A gentle introduction to computer systems, computer organization, and parallel computing for readers with only an introductory computer science background.
This book is a crash course in the major hardware and software components of a modern computer system. Perfect for aspiring systems programmers, it guides readers through a cross-section of the modern computer, and as you progress through the book, you'll be taught to see the computer at various layers of abstraction.
Early chapters begin with the C programming language often used in systems programming. You'll then explore the binary data that computers actually process, as well as the architecture of computers. get a crash course in the various assembly languages, which translate between languages like C and the binary representation that the computer understands. Later chapters explore how to optimize code for various architectures, the inner workings of operating systems, and how memory management works in multi-core CPUs.
The book is accessible, using copious images code examples that readers can modify and execute. You'll learn:
• How a computer runs a program, from a program expressed in a high-level language to low-level binary representation and circuits
• Programming in C and assembly
• Introduction to operating systems and the systems costs that affect program performance (the memory hierarchy, caching, and code optimization)
• Introduction to parallel computing with shared memory and pthreads
Because it presents topics independently, the book can be used as a primary textbook for a wide range of introductory-level computer systems courses, or as a supplemental background textbook for upper-level courses that cover Operating Systems, Computer Architecture, Compilers, Networks, Databases, and Parallel Computing.