Dive Into Systems: A Gentle Introduction to Computer Systems
- Length: 816 pages
- Edition: 1
- Language: English
- Publisher: No Starch Press
- Publication Date: 2022-09-20
- ISBN-10: 1718501366
- ISBN-13: 9781718501362
- Sales Rank: #3869824 (See Top 100 Books)
Dive into Systems is a vivid introduction to computer organization, architecture, and operating systems that is already being used as a classroom textbook at more than 25 universities.
This textbook is a crash course in the major hardware and software components of a modern computer system. Designed for use in a wide range of introductory-level computer science classes, it guides readers through the vertical slice of a computer so they can develop an understanding of the machine at various layers of abstraction.
Early chapters begin with the basics of the C programming language often used in systems programming. Other topics explore the architecture of modern computers, the inner workings of operating systems, and the assembly languages that translate human-readable instructions into a binary representation that the computer understands. Later chapters explain how to optimize code for various architectures, how to implement parallel computing with shared memory, and how memory management works in multi-core CPUs. Accessible and easy to follow, the book uses images and hands-on exercise to break down complicated topics, including code examples that can be modified and executed.
Cover Page Title Page Copyright Page BRIEF CONTENTS CONTENTS IN DETAIL ACKNOWLEDGMENTS PREFACE 0 INTRODUCTION What Is a Computer System? What Do Modern Computer Systems Look Like? What You Will Learn In This Book Getting Started with This Book Notes 1 BY THE C, BY THE C, BY THE BEAUTIFUL C 1.1 Getting Started Programming in C 1.2 Input/Output (printf and scanf) 1.3 Conditionals and Loops 1.4 Functions 1.5 Arrays and Strings 1.6 Structs 1.7 Summary 2 A DEEPER DIVE INTO C PROGRAMMING 2.1 Parts of Program Memory and Scope 2.2 C’s Pointer Variables 2.3 Pointers and Functions 2.4 Dynamic Memory Allocation 2.5 Arrays in C 2.6 Strings and the String Library 2.7 C Structs 2.8 I/O in C (Standard and File) 2.9 Some Advanced C Features 2.10 Summary 3 C DEBUGGING TOOLS 3.1 Debugging with GDB 3.2 GDB Commands in Detail 3.3 Debugging Memory with Valgrind 3.4 Advanced GDB Features 3.5 Debugging Assembly Code 3.6 Debugging Multithreaded Programs with GDB 3.7 Summary 4 BINARY AND DATA REPRESENTATION 4.1 Number Bases and Unsigned Integers 4.2 Converting Between Bases 4.3 Signed Binary Integers 4.4 Binary Integer Arithmetic 4.5 Integer Overflow 4.6 Bitwise Operators 4.7 Integer Byte Order 4.8 Real Numbers in Binary 4.9 Summary 5 WHAT VON NEUMANN KNEW: COMPUTER ARCHITECTURE 5.1 The Origin of Modern Computing Architectures 5.2 The von Neumann Architecture 5.3 Logic Gates 5.4 Circuits 5.5 Building a Processor: Putting It All Together 5.6 The Processor’s Execution of Program Instructions 5.7 Pipelining: Making the CPU Faster 5.8 Advanced Pipelined Instruction Considerations 5.9 Looking Ahead: CPUs Today 5.10 Summary 6 UNDER THE C: DIVING INTO ASSEMBLY 7 64-BIT X86 ASSEMBLY (X86-64) 7.1 Diving into Assembly: Basics 7.2 Common Instructions 7.3 Arithmetic Instructions 7.4 Conditional Control and Loops 7.5 Functions in Assembly 7.6 Recursion 7.7 Arrays 7.8 Matrices 7.9 structs in Assembly 7.10 Real World: Buffer Overflow 8 32-BIT X86 ASSEMBLY (IA32) 8.1 Diving into Assembly: Basics 8.2 Common Instructions 8.3 Arithmetic Instructions 8.4 Conditional Control and Loops 8.5 Functions in Assembly 8.6 Recursion 8.7 Arrays 8.8 Matrices 8.9 structs in Assembly 8.10 Real World: Buffer Overflow 9 ARM ASSEMBLY 9.1 Diving into Assembly: Basics 9.2 Common Instructions 9.3 Arithmetic Instructions 9.4 Conditional Control and Loops 9.5 Functions in Assembly 9.6 Recursion 9.7 Arrays 9.8 Matrices 9.9 structs in Assembly 9.10 Real World: Buffer Overflow 10 KEY ASSEMBLY TAKEAWAYS 10.1 Common Features 10.2 Further Reading 11 STORAGE AND THE MEMORY HIERARCHY 11.1 The Memory Hierarchy 11.2 Storage Devices 11.3 Locality 11.4 CPU Caches 11.5 Cache Analysis and Valgrind 11.6 Looking Ahead: Caching on Multicore Processors 11.7 Summary 12 CODE OPTIMIZATION 12.1 Code Optimization First Steps: Code Profiling 12.2 Other Compiler Optimizations: Loop Unrolling and Function Inlining 12.3 Memory Considerations 12.4 Key Takeaways and Summary 13 THE OPERATING SYSTEM 13.1 How the OS Works and How It Runs 13.2 Processes 13.3 Virtual Memory 13.4 Interprocess Communication 13.5 Summary and Other OS Functionality 14 LEVERAGING SHARED MEMORY IN THE MULTICORE ERA 14.1 Programming Multicore Systems 14.2 Hello Threading! Writing Your First Multithreaded Program 14.3 Synchronizing Threads 14.4 Measuring the Performance of Parallel Programs 14.5 Cache Coherence and False Sharing 14.6 Thread Safety 14.7 Implicit Threading with OpenMP 14.8 Summary 15 LOOKING AHEAD: OTHER PARALLEL SYSTEMS AND PARALLEL PROGRAMMING MODELS 15.1 Heterogeneous Computing: Hardware Accelerators, GPGPU Computing, and CUDA 15.2 Distributed Memory Systems, Message Passing, and MPI 15.3 To Exascale and Beyond: Cloud Computing, Big Data, and the Future of Computing INDEX
Donate to keep this site alive
How to download source code?
1. Go to: https://nostarch.com/
2. Search the book title: Dive Into Systems: A Gentle Introduction to Computer Systems
, sometime you may not get the results, please search the main title
3. Click the book title in the search results
3. Download the Source Code.
1. Disable the AdBlock plugin. Otherwise, you may not get any links.
2. Solve the CAPTCHA.
3. Click download link.
4. Lead to download server to download.