{"product_id":"138573","title":"Secrets of the Computer's Underside ","description":"\u003ccenter\u003e\u003cdiv style=\"text-align:center\"\u003e\u003cimg src=\"https:\/\/tmgdisk01.cafe24.com\/images\/vs\/4172\/sv\/3jXPCfGMKIkpHY8ynfFIDt72eqkJRR.png?v=1765064648\" style=\"max-width:100%;max-height:10px\"\u003e\u003c\/div\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\u003ccenter\u003e\n\n\u003cdiv style=\"width:95%\"\u003e\n\n\u003cdiv style=\"text-align:center;font-size:30px;font-weight:bolder;line-height:1.6em\"\u003e Secrets of the Computer's Underside \u003c\/div\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003cdiv style=\"border-bottom:1px;border-bottom-style:dotted;border-color:;padding-bottom:20px\"\u003e\u003ccenter\u003e\u003ctable align=\"center\" width=\"100%\"\u003e\u003ctbody style=\"border:0px\"\u003e\n\n\u003ctr\u003e\u003ctd align=\"center\" style=\"line-height:1.2em;text-align:center;font-size:18px;color:black;font-weight:bold;padding-bottom:20px;\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\n\n\u003ctr\u003e\u003ctd style=\"text-align:center\"\u003e\u003cimg src=\"https:\/\/image.yes24.com\/goods\/125299750\/XL\" style=\"max-width:100%;height:auto\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\n\n\n\u003c\/tbody\u003e\u003c\/table\u003e\u003c\/center\u003e\u003c\/div\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003cdiv style=\"width:95%;{split_style6}padding-top:20px;padding-bottom:20px\"\u003e\n\n\u003cdiv style=\"text-align:left;font-size:16px;font-weight:bold;padding-bottom:20px\"\u003e Description \u003c\/div\u003e\n\n\u003cdiv style=\"text-align:left;word-break:break-all;font-size:14px;line-height:1.6em;\"\u003e\n\n\u003cdiv\u003e\u003ch5\u003e \u003cb\u003eBook Introduction\u003c\/b\u003e\n\u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\u003cdiv\u003e \u003cb\u003eWhat happens inside your computer when you run the code?\u003cbr\u003e From the operating system to the CPU, synchronization, and the principles of implementing input\/output,\u003cbr\u003e Let's take a look at the secrets under the hood of your computer that will change your code!\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e We've all probably had the experience of thinking, \"Huh? Why isn't this code working?\"\u003cbr\u003e Even if your code runs well, you often don't know how it works, what happens internally when your computer runs it, why various problems occur, and how to optimize them. \u003cbr\u003eThis book is aimed at developers who are not simply satisfied with the few lines of code running without errors, but rather who think about what is happening inside and what impact it has on the code.\u003cbr\u003e\u003cbr\u003e This book examines the structure of a computer system, which is abstracted by layer, one by one.\u003cbr\u003e Starting with programming languages ​​and compilers, we will look at operating systems and processes, threads and coroutines, synchronization, memory, and the principles of implementing CPUs, caches, and input\/output.\u003cbr\u003e The internals of a computer system, which may seem difficult to understand, are explained using various everyday metaphors and over 300 illustrations, making it relatively accessible.\u003cbr\u003e Beginner developers can learn basic computer knowledge systematically and easily, and experienced developers can get new ideas while organizing what they already know.\u003cbr\u003e\n\u003c\/div\u003e\u003c\/div\u003e\n\u003cdiv\u003e\u003cul\u003e  \u003cli\u003eYou can preview some of the book's contents.\u003cbr\u003e \u003cspan\u003ePreview\u003c\/span\u003e\n\n\u003c\/li\u003e\n\u003c\/ul\u003e\u003c\/div\u003e\n\u003c\/div\u003e \",\"\u003cdiv\u003e\u003ch5\u003e \u003cb\u003eindex\u003c\/b\u003e\n\u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e \u003cb\u003eChapter 1: From Programming Language to Program Execution: This is how it goes.\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 1.1 What if you invented a programming language?\u003cbr\u003e __1.1.1 Genesis: The CPU is a Smart Idiot\u003cbr\u003e __1.1.2 Assembly language appears\u003cbr\u003e __1.1.3 Low-level layer details vs. high-level layer abstractions\u003cbr\u003e __1.1.4 Full Rules: The Beginning of a High-Level Programming Language\u003cbr\u003e __1.1.5 Inception and Recursion: The Essence of Code\u003cbr\u003e __1.1.6 Making Computers Understand Recursion\u003cbr\u003e __1.1.7 Excellent Translator: Compiler\u003cbr\u003e __1.1.8 The Birth of Interpreted Languages\u003cbr\u003e 1.2 How does a compiler work?\u003cbr\u003e __1.2.1 The compiler is just a normal program, nothing special.\u003cbr\u003e __1.2.2 Extracting each token\u003cbr\u003e __1.2.3 What the token is trying to express\u003cbr\u003e __1.2.4 Are there any abnormalities in the generated syntax tree?\u003cbr\u003e __1.2.5 Generating intermediate code based on syntax trees  \u003cbr\u003e__1.2.6 Code Generation\u003cbr\u003e 1.3 The Unspeakable Secret of the Linker\u003cbr\u003e __1.3.1 This is how the linker works\u003cbr\u003e __1.3.2 Symbol Interpretation: Supply and Demand\u003cbr\u003e __1.3.3 Static libraries, dynamic libraries, and executables\u003cbr\u003e __1.3.4 Advantages and disadvantages of dynamic libraries\u003cbr\u003e __1.3.5 Relocation: Determining the Address of a Symbol at Execution Time\u003cbr\u003e __1.3.6 Virtual memory and program memory structure\u003cbr\u003e 1.4 Why Abstraction Is Important in Computer Science\u003cbr\u003e __1.4.1 Programming and Abstraction\u003cbr\u003e __1.4.2 System Design and Abstraction\u003cbr\u003e 1.5 Summary\u003cbr\u003e\u003cbr\u003e \u003cb\u003eChapter 2 The program ran, but I don't know what's going on.\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 2.1 Understanding the Fundamentals of Operating Systems, Processes, and Threads\u003cbr\u003e __2.1.1 It all starts with the CPU\u003cbr\u003e __2.1.2 From CPU to Operating System\u003cbr\u003e __2.1.3 The process is very good, but still inconvenient.\u003cbr\u003e __2.1.4 Evolution from Processes to Threads\u003cbr\u003e __2.1.5 Multithreading and Memory Structure\u003cbr\u003e __2.1.6 Thread Utilization Example\u003cbr\u003e __2.1.7 How the thread pool works\u003cbr\u003e __2.1.8 Number of threads in the thread pool  \u003cbr\u003e2.2 Process resources shared between threads\u003cbr\u003e __2.2.1 Thread-only resources\u003cbr\u003e __2.2.2 Code area: All functions can be placed in threads and executed.\u003cbr\u003e __2.2.3 Data area: All threads can access variables in the data area.\u003cbr\u003e __2.2.4 Heap Area: Pointers are the Key\u003cbr\u003e __2.2.5 Stack area: Private data within shared space\u003cbr\u003e __2.2.6 Dynamic link libraries and files\u003cbr\u003e __2.2.7 Thread-only storage\u003cbr\u003e 2.3 How exactly should I write thread-safe code?\u003cbr\u003e __2.3.1 Freedom and Constraints\u003cbr\u003e __2.3.2 What is thread safety?\u003cbr\u003e __2.3.3 Thread-specific and shared resources\u003cbr\u003e __2.3.4 Use only thread-specific resources\u003cbr\u003e __2.3.5 Thread-Specific Resources and Function Parameters\u003cbr\u003e __2.3.6 Using global variables\u003cbr\u003e __2.3.7 Thread-only storage\u003cbr\u003e __2.3.8 Function return values\u003cbr\u003e __2.3.9 Calling Non-Thread-Safe Code\u003cbr\u003e __2.3.10 How to implement thread-safe code?  \u003cbr\u003e2.4 How should programmers understand coroutines?\u003cbr\u003e __2.4.1 General functions\u003cbr\u003e __2.4.2 From regular functions to coroutines\u003cbr\u003e __2.4.3 Intuitive explanation of coroutines\u003cbr\u003e __2.4.4 Functions are just a special case of coroutines\u003cbr\u003e __2.4.5 History of Coroutines\u003cbr\u003e __2.4.6 How are coroutines implemented?\u003cbr\u003e 2.5 Thoroughly understand callback functions\u003cbr\u003e __2.5.1 It all starts with the following requirement:\u003cbr\u003e __2.5.2 Why callbacks are needed\u003cbr\u003e __2.5.3 Asynchronous Callbacks\u003cbr\u003e __2.5.4 Asynchronous callbacks lead to a new way of thinking about programming\u003cbr\u003e __2.5.5 Definition of callback function\u003cbr\u003e __2.5.6 Two callback types\u003cbr\u003e __2.5.7 The Problem with Asynchronous Callbacks: Callback Hell\u003cbr\u003e 2.6 Thoroughly understand synchronous and asynchronic\u003cbr\u003e __2.6.1 Hardworking Programmer\u003cbr\u003e __2.6.2 Making phone calls and sending emails\u003cbr\u003e __2.6.3 Synchronous Call\u003cbr\u003e __2.6.4 Asynchronous calls\u003cbr\u003e __2.6.5 Synchronous and Asynchronous Operations on Web Servers\u003cbr\u003e 2.7 Oh, right! There are blocking and non-blocking modes.\u003cbr\u003e __2.7.1 Blocking and Non-Blocking  \u003cbr\u003e__2.7.2 The Core Problem of Blocking: I\/O\u003cbr\u003e __2.7.3 Non-blocking and asynchronous I\/O\u003cbr\u003e __2.7.4 Analogy to ordering pizza\u003cbr\u003e __2.7.5 Motivation and Blocking\u003cbr\u003e __2.7.6 Asynchronous and Non-Blocking\u003cbr\u003e 2.8 Implementing a server with high concurrency and high performance\u003cbr\u003e __2.8.1 Multiprocessing\u003cbr\u003e __2.8.2 Multithreading\u003cbr\u003e __2.8.3 Event Looping and Event Driven\u003cbr\u003e __2.8.4 First Issue: Event Sources and I\/O Multiplexing\u003cbr\u003e __2.8.5 Second Problem: Event Loops and Multithreading\u003cbr\u003e __2.8.6 How a Cafe Works: The Responder Pattern\u003cbr\u003e __2.8.7 Event Cycle and Input\/Output\u003cbr\u003e __2.8.8 Asynchronous and Callback Functions\u003cbr\u003e __2.8.9 Coroutines: Asynchronous Programming with Synchronous Methods\u003cbr\u003e __2.8.10 CPU, Threads, Coroutines\u003cbr\u003e 2.9 A Computer System Journey: From Data, Code, Callbacks, and Closures to Containers and Virtual Machines\u003cbr\u003e __2.9.1 Code, Data, Variables, Pointers\u003cbr\u003e __2.9.2 Callback functions and closures\u003cbr\u003e __2.9.3 Container and Virtual Machine Technology\u003cbr\u003e 2.10 Summary\u003cbr\u003e \u003cbr\u003e\u003cb\u003eChapter 3: Low-Level Hierarchies? Let's start with the locker called memory.\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 3.1 The nature of memory, pointers and references\u003cbr\u003e __3.1.1 What is the nature of memory? Lockers, bits, bytes, and objects.\u003cbr\u003e __3.1.2 From Memory to Variables: What Variables Mean\u003cbr\u003e __3.1.3 From Variables to Pointers: Understanding Pointers\u003cbr\u003e __3.1.4 The Power and Destruction of Pointers: Capabilities and Responsibilities\u003cbr\u003e __3.1.5 From Pointer to Reference: Hiding Memory Addresses\u003cbr\u003e 3.2 What does a process look like in memory?\u003cbr\u003e __3.2.1 Virtual Memory: What You See Isn't Always What You Get\u003cbr\u003e __3.2.2 Pages and Page Tables: From Virtual to Real\u003cbr\u003e 3.3 Stack Area: How are function calls implemented?\u003cbr\u003e __3.3.1 Helpers for Programmers: Functions\u003cbr\u003e __3.3.2 Tracing Function Call Activity: Stack\u003cbr\u003e __3.3.3 Stack Frames and Stack Areas: A Macro Perspective\u003cbr\u003e __3.3.4 How are function jumps and returns implemented?\u003cbr\u003e __3.3.5 How are parameter passing and return values ​​implemented?  \u003cbr\u003e__3.3.6 Where are the local variables?\u003cbr\u003e __3.3.7 Saving and restoring registers\u003cbr\u003e __3.3.8 Let's draw the big picture, where are we now?\u003cbr\u003e 3.4 Heap Area: How is dynamic memory allocation implemented?\u003cbr\u003e __3.4.1 Why we need heap space\u003cbr\u003e __3.4.2 Implementing the malloc memory allocator directly\u003cbr\u003e __3.4.3 From parking lot to memory management\u003cbr\u003e __3.4.4 Managing free memory fragments\u003cbr\u003e __3.4.5 Tracking memory allocation status\u003cbr\u003e __3.4.6 How to choose a piece of free memory: Allocation strategy\u003cbr\u003e __3.4.7 Allocating memory\u003cbr\u003e __3.4.8 Freeing memory\u003cbr\u003e __3.4.9 Efficiently merging free memory fragments\u003cbr\u003e 3.5 What happens at the low level when allocating memory\u003cbr\u003e __3.5.1 Heaven, Earth, and Human CPU Execution Status\u003cbr\u003e __3.5.2 Kernel State and User State\u003cbr\u003e __3.5.3 Portal: System Calls\u003cbr\u003e __3.5.4 Standard Library: Hiding System Differences\u003cbr\u003e __3.5.5 When the heap area runs out of memory\u003cbr\u003e __3.5.6 Requesting memory from the operating system: brk  \u003cbr\u003e__3.5.7 Beneath the Iceberg: Virtual Memory is the Final Boss\u003cbr\u003e __3.5.8 The Whole Story of Memory Allocation\u003cbr\u003e 3.6 How is the memory pool implemented for high-performance servers?\u003cbr\u003e __3.6.1 Memory Pools vs. General-Purpose Memory Allocators\u003cbr\u003e __3.6.2 Principles of Memory Pool Technology\u003cbr\u003e __3.6.3 Implementing a super-simple memory pool\u003cbr\u003e __3.6.4 Implementing a Slightly More Complex Memory Pool\u003cbr\u003e __3.6.5 Thread safety issues with memory pools\u003cbr\u003e 3.7 Common memory-related bugs\u003cbr\u003e __3.7.1 Returning a pointer to a local variable\u003cbr\u003e __3.7.2 Misunderstanding of pointer arithmetic\u003cbr\u003e __3.7.3 Dereferencing a problematic pointer\u003cbr\u003e __3.7.4 Reading Uninitialized Memory\u003cbr\u003e __3.7.5 Referencing already freed memory\u003cbr\u003e __3.7.6 Array indexes start from 0\u003cbr\u003e __3.7.7 Stack Overflow\u003cbr\u003e __3.7.8 Memory leak\u003cbr\u003e 3.8 Why can't SSDs be used as memory?\u003cbr\u003e __3.8.1 Difference between memory read\/write and disk read\/write\u003cbr\u003e __3.8.2 Virtual Memory Limits\u003cbr\u003e __3.8.3 SSD lifespan issues\u003cbr\u003e 3.9 Summary\u003cbr\u003e \u003cbr\u003e\u003cb\u003eChapter 4: From Transistors to CPUs: Nothing is more important than this.\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 4.1 This little toy is called a CPU.\u003cbr\u003e __4.1.1 Great Invention\u003cbr\u003e __4.1.2 Logical conjunction, logical conjunction, and logical negation\u003cbr\u003e __4.1.3 The Tao gives birth to one, one gives birth to two, two gives birth to three, and three gives birth to all things.\u003cbr\u003e __4.1.4 Where does computational power come from?\u003cbr\u003e __4.1.5 Amazing memory ability\u003cbr\u003e __4.1.6 The Birth of Registers and Memory\u003cbr\u003e __4.1.7 Hardware or Software? General Purpose Devices\u003cbr\u003e __4.1.8 Basic Hardware Technology: Machine Instructions\u003cbr\u003e __4.1.9 Software-Hardware Interface: Command Set\u003cbr\u003e __4.1.10 Circuits require conductors\u003cbr\u003e __4.1.11 A great achievement, the CPU was born!\u003cbr\u003e 4.2 What does the CPU do when it is idle?\u003cbr\u003e __4.2.1 What is the CPU usage of your computer?\u003cbr\u003e __4.2.2 Process Management and Scheduling\u003cbr\u003e __4.2.3 Checking Queue Status: A Better Design\u003cbr\u003e __4.2.4 Everything Returns to the CPU\u003cbr\u003e __4.2.5 Idle Processes and CPU Low Power States  \u003cbr\u003e__4.2.6 Breaking the Infinite Loop: Interrupts\u003cbr\u003e 4.3 How does the CPU recognize numbers?\u003cbr\u003e __4.3.1 Number 0 and positive integers\u003cbr\u003e __4.3.2 Signed Integers\u003cbr\u003e __4.3.3 Adding a negative sign to a positive number immediately produces the corresponding negative number: Sign-magnitude representation\u003cbr\u003e __4.3.4 Inversion of Sign-Magnitude Representation: 1's Complement\u003cbr\u003e __4.3.5 Adding Two Numbers That Are Not Simple\u003cbr\u003e __4.3.6 Computer-Friendly Representation: Two's Complement\u003cbr\u003e __4.3.7 Does the CPU really know the numbers?\u003cbr\u003e 4.4 When the CPU encounters an if statement\u003cbr\u003e __4.4.1 The Birth of Pipeline Technology\u003cbr\u003e __4.4.2 CPU: Megafactory and Pipeline\u003cbr\u003e __4.4.3 If if encounters a pipeline\u003cbr\u003e __4.4.4 Branch Prediction: Make the CPU guess correctly as much as possible\u003cbr\u003e 4.5 What is the relationship between the number of CPU cores and the number of threads?\u003cbr\u003e __4.5.1 Recipes and Code, Stir-fries and Threads\u003cbr\u003e __4.5.2 Work Partitioning and Blocking I\/O\u003cbr\u003e __4.5.3 Multi-core and multi-threading\u003cbr\u003e 4.6 CPU Evolution (Part 1): The Birth of Complex Instruction Sets\u003cbr\u003e __4.6.1 CPU as seen by programmers  \u003cbr\u003e__4.6.2 CPU Capabilities: Instruction Set\u003cbr\u003e __4.6.3 Abstraction: Less is more\u003cbr\u003e __4.6.4 Code also takes up storage space\u003cbr\u003e __4.6.5 The birth of an inevitable complex instruction set\u003cbr\u003e __4.6.6 Problems with Microcode Design\u003cbr\u003e 4.7 CPU Evolution (Part 2): The Birth of the Reduced Instruction Set\u003cbr\u003e __4.7.1 From Complexity to Simplicity\u003cbr\u003e __4.7.2 Philosophy of the Reduced Command Set\u003cbr\u003e __4.7.3 Difference between complex and reduced instruction sets\u003cbr\u003e __4.7.4 Command Pipeline\u003cbr\u003e __4.7.5 Become world-renowned\u003cbr\u003e 4.8 CPU Evolution (Part 2): Counterattack in a Crisis\u003cbr\u003e __4.8.1 If You Can't Beat Them, Join Them: CISC, the Same as RISC\u003cbr\u003e __4.8.2 Hyper-Threading is a killer move\u003cbr\u003e __4.8.3 Taking the Strengths and Compensating for the Weaknesses: Integrating CISC and RISC\u003cbr\u003e __4.8.4 Technology Isn't Everything: The Commercial War Between CISC and RISC\u003cbr\u003e 4.9 Mastering the CPU, stack and function calls, system calls, thread switching, and interrupt handling\u003cbr\u003e __4.9.1 Register\u003cbr\u003e __4.9.2 Stack Pointer\u003cbr\u003e __4.9.3 Instruction Address Register  \u003cbr\u003e__4.9.4 Status Register\u003cbr\u003e __4.9.5 Situational Information\u003cbr\u003e __4.9.6 Nesting and Stacks\u003cbr\u003e __4.9.7 Function Calls and Runtime Stack\u003cbr\u003e __4.9.8 System Calls and Kernel State Stack\u003cbr\u003e __4.9.9 Interrupts and the Interrupt Function Stack\u003cbr\u003e __4.9.10 Thread Switching and Kernel State Stack\u003cbr\u003e 4.10 Summary\u003cbr\u003e\u003cbr\u003e \u003cb\u003eChapter 5: Achieving Big Results with Small Things, Cash\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 5.1 Cache, the ubiquitous thing\u003cbr\u003e __5.1.1 Speed ​​Differences Between CPU and Memory\u003cbr\u003e __5.1.2 Library, Desk, Cache\u003cbr\u003e __5.1.3 There's No Free Lunch: Cache Refresh\u003cbr\u003e __5.1.4 There's No Free Lunch: Multicore Cache Coherence\u003cbr\u003e __5.1.5 Using memory as a disk cache\u003cbr\u003e __5.1.6 Virtual Memory and Disks\u003cbr\u003e __5.1.7 How does the CPU read memory?\u003cbr\u003e __5.1.8 Distributed storage support\u003cbr\u003e 5.2 How to write cache-friendly programs?\u003cbr\u003e __5.2.1 Principle of Program Locality\u003cbr\u003e __5.2.2 Using memory pools\u003cbr\u003e __5.2.3 struct structure relocation\u003cbr\u003e __5.2.4 Separation of hot and cold data\u003cbr\u003e __5.2.5 Cache-Friendly Data Structures  \u003cbr\u003e__5.2.6 Traversing a Multidimensional Array\u003cbr\u003e 5.3 Multithreaded Performance Inhibitors\u003cbr\u003e __5.3.1 The Basic Unit of Cache and Memory Interaction: The Cache Line\u003cbr\u003e __5.3.2 First Performance Killer: Cache Bounce Issues\u003cbr\u003e __5.3.3 Second Performance Killer: The False Sharing Problem\u003cbr\u003e 5.4 The Bonghwaheejehu and the Memory Barrier\u003cbr\u003e __5.4.1 Non-sequential execution of instructions: Compilers and OoOE\u003cbr\u003e __5.4.2 Cache should also be considered\u003cbr\u003e __5.4.3 Four types of memory barriers\u003cbr\u003e __5.4.4 Acquire-Release Semantics\u003cbr\u003e __5.4.5 Interfaces provided by C++\u003cbr\u003e __5.4.6 Different CPUs, Different Natures\u003cbr\u003e __5.4.7 Who Should Care About Instruction Reordering: Lock-Free Programming\u003cbr\u003e __5.4.8 Locking and Lockless Programming\u003cbr\u003e __5.4.9 Debate over command reordering\u003cbr\u003e 5.5 Summary\u003cbr\u003e\u003cbr\u003e \u003cb\u003eChapter 6: Is there a computer without input\/output?\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e 6.1 How does the CPU handle input\/output operations?\u003cbr\u003e __6.1.1 Handling Professionally: Input\/Output Machine Instructions\u003cbr\u003e __6.1.2 Memory mapping input\/output  \u003cbr\u003e__6.1.3 The nature of how the CPU reads and writes the keyboard\u003cbr\u003e __6.1.4 Polling: Keep checking\u003cbr\u003e __6.1.5 Food Delivery Ordering and Discontinuation Processing\u003cbr\u003e __6.1.6 Interrupt-driven I\/O\u003cbr\u003e __6.1.7 How does the CPU detect interrupt signals?\u003cbr\u003e __6.1.8 Difference between interrupt handling and function calls\u003cbr\u003e __6.1.9 Saving and restoring the execution status of a suspended program\u003cbr\u003e 6.2 What does the CPU do when the disk handles I\/O?\u003cbr\u003e __6.2.1 Device Controller\u003cbr\u003e __6.2.2 Should the CPU copy data directly?\u003cbr\u003e __6.2.3 Direct memory access\u003cbr\u003e __6.2.4 Summary of the entire process\u003cbr\u003e __6.2.5 Implications for Programmers\u003cbr\u003e 6.3 What happens to a program when it reads a file?\u003cbr\u003e __6.3.1 Input\/output from a memory perspective\u003cbr\u003e __6.3.2 How does the read function read a file?\u003cbr\u003e 6.4 The Secret to High Concurrency: I\/O Multiplexing\u003cbr\u003e __6.4.1 File Descriptor\u003cbr\u003e __6.4.2 How to handle multiple inputs and outputs efficiently?\u003cbr\u003e __6.4.3 Making me call instead of the other person  \u003cbr\u003e__6.4.4 Input\/Output Multiplexing\u003cbr\u003e __6.4.5 The Three Musketeers: select, poll, epoll\u003cbr\u003e 6.5 mmap: Processing Files by Reading and Writing Memory\u003cbr\u003e __6.5.1 Files and Virtual Memory\u003cbr\u003e __6.5.2 Magician Operating System\u003cbr\u003e __6.5.3 mmap vs. traditional read\/write functions\u003cbr\u003e __6.5.4 Handling large files\u003cbr\u003e __6.5.5 Dynamic Link Libraries and Shared Memory\u003cbr\u003e __6.5.6 Directly Manipulating mmap\u003cbr\u003e 6.6 How much delay will occur in each part of a computer system?\u003cbr\u003e __6.6.1 Convert to time indicator\u003cbr\u003e __6.6.2 Convert to distance indicator\u003cbr\u003e 6.7 Summary\u003c\/div\u003e\n\u003cdiv\u003e\u003c\/div\u003e\n\u003c\/div\u003e \",\"\u003cdiv\u003e\u003ch5\u003e \u003cb\u003eDetailed image\u003c\/b\u003e \u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\u003cdiv\u003e\u003cimg src=\"https:\/\/image.yes24.com\/momo\/TopCate4436\/MidCate006\/443550867.jpg\" border=\"0\" alt=\"Detailed Image 1\"\u003e\u003c\/div\u003e\u003c\/div\u003e \",\"\u003cdiv\u003e\u003ch5\u003e \u003cb\u003eInto the book\u003c\/b\u003e\n\u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e In 1984, when I started programming, 8-bit computers were just starting to hit the market in Korea, but in fact, in the US, the 80386 was already in full development following the 80286.\u003cbr\u003e Therefore, it is safe to say that the gap between the domestic computer market and the overseas computer market at that time was well over 10 years. \u003cbr\u003eAs I also discuss in this book, at the time, programming was a field accessible only to a very small number of people, and hardware design and structure were needless to say.\u003cbr\u003e So, even though it was extremely difficult to find related materials, it was a time when I had to obtain foreign books one by one through various channels or make copies and circulate them.\u003cbr\u003e One of the foreign books I had at the time was Inside the IBM PC by Peter Norton, known for Norton Utilities.\u003cbr\u003e This book explains in great detail how the PC, which was once considered a strange machine, is structured, what process the keystrokes actually go through internally before being displayed on the screen, and what happens internally in between.\u003cbr\u003e Amazingly, I still have that book.\u003cbr\u003e Even now, I sometimes take it out and read it. \u003cbr\u003eIt's such a fun book, and it's one that you discover new things every time you read it.\u003cbr\u003e It seems like we're repeating the same story over and over again, but 30 years ago, using a computer and programming were virtually synonymous.\u003cbr\u003e So every computer user was a potential software developer and hardware developer.\u003cbr\u003e Nowadays, we live in a world where even if there is no TV at home, there are at least a few computers.\u003cbr\u003e Most computer users live lives that have nothing to do with programming.\u003cbr\u003e\u003cbr\u003e\u003cbr\u003e But if you're holding this book in your hands, you've definitely already stepped foot into the world of programming. \u003cbr\u003eSo, rather than simply being satisfied with the few lines of code that are running without errors, I believe that thinking about what's happening inside them and how it affects my code has provided an opportunity for further growth.\u003cbr\u003e I'm proud to say that this book is one of the few that can help you take the first step toward this kind of growth.\u003cbr\u003e This book provides a systematic flow and conceptual understanding to those of you who are tired of looking at information scattered all over the Internet, and it also serves as a guide that sparks curiosity about a world you have never known before.\u003cbr\u003e If this book can help you write code that's even slightly better and more meaningful, it will be a great reward for me, who worked so hard to translate it.\u003cbr\u003e\n\n\u003c\/div\u003e\n\u003cdiv\u003e --- From the Translator's Note\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\u003c\/div\u003e\n\u003c\/div\u003e \",\"\u003cdiv\u003e  \u003ch5\u003e\u003cb\u003ePublisher's Review\u003c\/b\u003e\u003c\/h5\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdiv\u003e \u003cb\u003eEasy to learn with analogies and pictures\u003cbr\u003e The essence of computer systems\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e Understanding the inside of a computer changes the code.\u003cbr\u003e A deep understanding of the principles and mechanisms of computer systems can improve the readability and maintainability of the code you write.\u003cbr\u003e In addition, it can effectively optimize program performance and quickly find and resolve code execution errors or abnormal system behavior.\u003cbr\u003e Gain an in-depth understanding of the principles of computer systems.\u003cbr\u003e We will dissect the structure of a computer system, which is abstracted by layer, one by one, starting with programming languages ​​and compilers, and then learning about the operating system, processes, threads and coroutines, synchronization, and memory.\u003cbr\u003e You will also learn about the principles of implementing CPUs, caches, input\/output, file systems, networks and communications, security and encryption, and parallel computing.\u003cbr\u003e\n\n\u003c\/div\u003e\n\u003cdiv\u003e\u003c\/div\u003e\n\u003c\/div\u003e \"]\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003cdiv style=\"width:95%;padding-top:20px;padding-bottom:20px\"\u003e\n\n \u003cdiv style=\"text-align:left;font-size:16px;font-weight:bold;padding-bottom:20px\"\u003eGOODS SPECIFICS \u003c\/div\u003e\n\n\u003cdiv style=\"text-align:left;font-size:14px;line-height:1.6em;\"\u003e\n\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e - \u003cstrong\u003eDate of issue:\u003c\/strong\u003e March 11, 2024\u003c\/div\u003e\n\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e - \u003cstrong\u003ePage count, weight, size:\u003c\/strong\u003e 480 pages | 858g | 183*235*20mm\u003c\/div\u003e\n\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e - \u003cstrong\u003eISBN13:\u003c\/strong\u003e 9791140708819 \u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\n\u003c\/div\u003e\n\n\u003ccenter\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003ccenter\u003e\u003ctable\u003e\u003ctr\u003e\u003ctd style=\"height:10px\"\u003e\u003c\/td\u003e\u003c\/tr\u003e\u003c\/table\u003e\u003c\/center\u003e\n\n\u003cspan\u003e\u003c\/span\u003e\n\n\u003c\/center\u003e\n\n\n\u003c\/center\u003e","brand":"LIBRAIRIE COREENNE","offers":[{"title":"Default Title","offer_id":43893259567146,"sku":"138573","price":43.0,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0683\/2750\/5962\/files\/3ceb91ab74596fcb91dba9eec3703af9.jpg?v=1765394423","url":"https:\/\/librairie.coreenne.fr\/en\/products\/138573","provider":"LIBRAIRIE COREENNE","version":"1.0","type":"link"}