{"product_id":"139446","title":"Learning the Structure and Principles of the Linux Kernel Through Debugging 1 ","description":"\u003ccenter\u003e\u003cdiv style=\"text-align:center\"\u003e\u003cimg src=\"https:\/\/tmgdisk01.cafe24.com\/images\/vs\/4172\/sv\/3jXPBvo6KMAH9iu20Cmm5sMOmtGwVr.png?v=1765074920\" 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 Learning the Structure and Principles of the Linux Kernel Through Debugging 1 \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\/90085976\/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 a new Linux system developer to a 5-year developer needs to know to get started\u003cbr\u003e Major subsystems of the Linux kernel!\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e This book explains the Linux kernel in an easy and friendly way, just like a friendly senior developer sitting next to a new employee in a real-world development situation and explaining the Linux kernel in detail.\u003cbr\u003e 『Learning the Structure and Principles of the Linux Kernel through Debugging 1』 analyzes the latest version (LTS: 4.19) of the Linux kernel source in detail by following the function flow and explains the operating principles of the kernel by utilizing debugging tools such as ftrace and TRACE32. \u003cbr\u003eIt also covers how to modify the source code of the Linux kernel directly on the Raspberry Pi, install it, and then debug the kernel.\u003cbr\u003e The kernel debugging methods introduced in each chapter can be directly applied to practical development.\u003cbr\u003e\n\u003c\/div\u003e\u003c\/div\u003e\n\u003cdiv\u003e\u003cul\u003e\u003cli\u003e You can preview some of the book's contents.\u003cbr\u003e \u003cspan\u003ePreview\u003c\/span\u003e\n\n\u003c\/li\u003e\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\u003e▣ Chapter 1: Introduction and Outlook for Linux\u003c\/b\u003e\u003cbr\u003e 1.1 Why should I learn Linux and the Linux kernel?\u003cbr\u003e __1.1.1 Why should I learn Linux?\u003cbr\u003e __1.1.2 Why should I learn the Linux kernel?\u003cbr\u003e 1.2 The Future of Linux\u003cbr\u003e __1.2.1 What is an operating system?\u003cbr\u003e __1.2.2 What operating system are we using?\u003cbr\u003e 1.3 History of Linux\u003cbr\u003e __1.3.1 The Birth of Unix\u003cbr\u003e __1.3.2 1991: The Rise of Linus Torvalds\u003cbr\u003e __1.3.3 Why is Linux so popular?\u003cbr\u003e 1.4 Where is Linux used?\u003cbr\u003e __1.4.1 Android\u003cbr\u003e __1.4.2 Automobile\u003cbr\u003e __1.4.3 Internet of Things (IoT) devices  \u003cbr\u003e1.5 Embedded Linux Development Group\u003cbr\u003e __1.5.1 Linux Kernel Community\u003cbr\u003e __1.5.2 CPU Vendor\u003cbr\u003e __1.5.3 SoC Vendor\u003cbr\u003e __1.5.4 Board Vendors and OEMs\u003cbr\u003e 1.6 What do I need to know to be good at embedded Linux development?\u003cbr\u003e __1.6.1 device driver\u003cbr\u003e __1.6.2 Linux Kernel\u003cbr\u003e __1.6.3 CPU Architecture\u003cbr\u003e __1.6.4 Build Script and Git\u003cbr\u003e 1.7 Raspberry Pi and the Linux Kernel\u003cbr\u003e __1.7.1 Raspberry Pi Lab Board\u003cbr\u003e __1.7.2 Linux kernel version\u003cbr\u003e __1.7.3 Raspbian version\u003cbr\u003e __1.7.4 ARM architecture\u003cbr\u003e 1.8 Summary\u003cbr\u003e\u003cbr\u003e \u003cb\u003e▣ Chapter 2: Raspberry Pi Setup\u003c\/b\u003e\u003cbr\u003e 2.1 What is Raspberry Pi?\u003cbr\u003e 2.2 Setting up the Raspberry Pi\u003cbr\u003e __2.2.1 Preparation for Raspberry Pi practice\u003cbr\u003e __2.2.2 Raspberry Pi Installation\u003cbr\u003e __2.2.3 Raspberry Pi Basic Settings\u003cbr\u003e 2.3 Building the Raspberry Pi Kernel\u003cbr\u003e __2.3.1 Raspbian version and kernel source version\u003cbr\u003e __2.3.2 Download the Raspbian kernel source code\u003cbr\u003e __2.3.3 Raspbian Linux Kernel Build\u003cbr\u003e __2.3.4 Installing the Raspbian Linux Kernel  \u003cbr\u003e__2.3.5 Generating preprocessing code\u003cbr\u003e __2.3.6 Structure of the Linux kernel source\u003cbr\u003e 2.4 objdump binary utility\u003cbr\u003e 2.5 Precautions when using Raspberry Pi\u003cbr\u003e 2.6 Summary\u003cbr\u003e\u003cbr\u003e \u003cb\u003e▣ Chapter 3: Kernel Debugging and Code Learning\u003c\/b\u003e\u003cbr\u003e 3.1 What is debugging?\u003cbr\u003e __3.1.1 Debugging is a shortcut to problem-solving skills\u003cbr\u003e __3.1.2 Debugging and Code Learning Skills\u003cbr\u003e 3.2 printk\u003cbr\u003e 3.3 dump_stack() function\u003cbr\u003e 3.4 ftrace\u003cbr\u003e __3.4.1 What is ftrace?\u003cbr\u003e __3.4.2 How to set up ftrace?\u003cbr\u003e __3.4.3 How to analyze ftrace messages?\u003cbr\u003e __3.4.4 How to extract ftrace logs?\u003cbr\u003e __3.4.5 ftrace is a guide to kernel code analysis\u003cbr\u003e 3.5 The Legend of Embedded Debuggers: TRACE32\u003cbr\u003e 3.6 Debugfs driver code for kernel debugging\u003cbr\u003e 3.7 Summary\u003cbr\u003e\u003cbr\u003e \u003cb\u003e▣ Chapter 4: Process\u003c\/b\u003e\u003cbr\u003e 4.1 Process Introduction\u003cbr\u003e __4.1.1 What is a process?\u003cbr\u003e __4.1.2 What is a task?\u003cbr\u003e __4.1.3 What is a thread?\u003cbr\u003e 4.2 Checking the process\u003cbr\u003e __4.2.1 Checking the process list with the ps command\u003cbr\u003e __4.2.2 Checking processes in ftrace\u003cbr\u003e 4.3 How to create a process?  \u003cbr\u003e__4.3.1 Introduction to the _do_fork() function\u003cbr\u003e __4.3.2 Processing flow of the _do_fork() function when creating a user-level process\u003cbr\u003e __4.3.3 Flow of _do_fork() function when creating a kernel process\u003cbr\u003e 4.4 User-level process execution practice\u003cbr\u003e __4.4.1 Basic user-level process execution practice and ftrace log analysis\u003cbr\u003e __4.4.2 Process termination with exit() function and ftrace log analysis\u003cbr\u003e 4.5 Kernel Threads\u003cbr\u003e __4.5.1 What is a kernel thread?\u003cbr\u003e __4.5.2 Types of kernel threads\u003cbr\u003e __4.5.3 How to create a kernel thread?\u003cbr\u003e 4.6 Creation process of kernel internal processes\u003cbr\u003e __4.6.1 _do_fork() function\u003cbr\u003e __4.6.2 Analysis of the copy_process() function\u003cbr\u003e __4.6.3 Analysis of the wake_up_new_task() function\u003cbr\u003e 4.7 Analysis of the process termination process\u003cbr\u003e __4.7.1 Understanding the process termination flow\u003cbr\u003e __4.7.2 Analysis of the do_exit() function\u003cbr\u003e __4.7.3 Analysis of the do_task_dead() function\u003cbr\u003e __4.7.4 Behavior after calling the do_task_dead() function\u003cbr\u003e 4.8 Task Descriptor (task_struct structure)\u003cbr\u003e __4.8.1 Fields that identify the process  \u003cbr\u003e__4.8.2 Saving process state\u003cbr\u003e __4.8.3 Relationships between processes\u003cbr\u003e __4.8.4 Process Linked List\u003cbr\u003e __4.8.5 Process execution time information\u003cbr\u003e 4.9 Thread Information: thread_info Structure\u003cbr\u003e __4.9.1 What is the thread_info structure?\u003cbr\u003e __4.9.2 Analyzing the thread_info structure\u003cbr\u003e __4.9.3 Where is the address of the thread_info structure?\u003cbr\u003e __4.9.4 Detailed analysis of context information\u003cbr\u003e __4.9.5 Detailed analysis of the cpu field\u003cbr\u003e __4.9.6 Analysis of thread_info structure initialization code\u003cbr\u003e 4.10 Macro functions for accessing the task descriptor of a process\u003cbr\u003e __4.10.1 What is the current macro?\u003cbr\u003e __4.10.2 Analysis of the current_thread_info() macro function\u003cbr\u003e 4.11 Process Debugging\u003cbr\u003e __4.11.1 Debugging glibc's fork() function with gdb\u003cbr\u003e __4.11.2 Execution Tracing Using Linux Utility Programs\u003cbr\u003e 4.12 Summary\u003cbr\u003e\u003cbr\u003e \u003cb\u003e▣ Chapter 5: Interrupts\u003c\/b\u003e\u003cbr\u003e 5.1 Introduction to Interrupts\u003cbr\u003e __5.1.1 What is an interrupt?\u003cbr\u003e __5.1.2 Key Concepts of Linux Kernel Interrupts\u003cbr\u003e __5.1.3 Why you need to know interrupts  \u003cbr\u003e__5.1.4 Interrupt processing flow in the Linux kernel\u003cbr\u003e 5.2 Interrupt Context\u003cbr\u003e __5.2.1 What is interrupt context?\u003cbr\u003e __5.2.2 Checking interrupt context with ftrace and kernel log\u003cbr\u003e __5.2.3 What is the in_interrupt() function?\u003cbr\u003e __5.2.4 What happens when scheduling in interrupt context?\u003cbr\u003e 5.3 When is an interrupt handler called?\u003cbr\u003e __5.3.1 Interrupt Vector Analysis\u003cbr\u003e __5.3.2.\u003cbr\u003e Check stack push from interrupt vector\u003cbr\u003e __5.3.3.\u003cbr\u003e Analyzing the call flow of an interrupt handler\u003cbr\u003e 5.4 How to register an interrupt handler?\u003cbr\u003e __5.4.1 Analysis of the interrupt handler registration process\u003cbr\u003e __5.4.2 Debugging the initialization process of an interrupt handler\u003cbr\u003e __5.4.3 Setting flags when registering an interrupt handler\u003cbr\u003e 5.5 Interrupt Descriptor\u003cbr\u003e __5.5.1 What is an interrupt descriptor?\u003cbr\u003e __5.5.2 How to store the number of interrupt occurrences?\u003cbr\u003e 5.6 When should interrupts be disabled?\u003cbr\u003e 5.7 Interrupt Debugging\u003cbr\u003e __5.7.1 \/proc\/interrupts  \u003cbr\u003e__5.7.2 ftrace interrupt event\u003cbr\u003e __5.7.3 Identifying interrupt handler functions with ftrace\u003cbr\u003e 5.8 Summary\u003cbr\u003e\u003cbr\u003e \u003cb\u003e▣ Chapter 6: Interrupt Second Half Processing\u003c\/b\u003e\u003cbr\u003e 6.1 What is the second half of the interrupt technique?\u003cbr\u003e __6.1.1 Reasons for applying the latter half of the interrupt technique\u003cbr\u003e __6.1.2 What happens if you do a lot of work in interrupt context?\u003cbr\u003e __6.1.3 What is Top Half\/Bottom Half?\u003cbr\u003e __6.1.4 Types of techniques for handling the latter half of interrupts\u003cbr\u003e __6.1.5 Which interrupt second half processing technique should I apply?\u003cbr\u003e 6.2 Threaded IRQ\u003cbr\u003e __6.2.1 What is IRQ?\u003cbr\u003e __6.2.2 Check IRQ thread\u003cbr\u003e 6.3 How to create an IRQ thread?\u003cbr\u003e __6.3.1 When is an IRQ thread created?\u003cbr\u003e __6.3.2 Debugging IRQ thread creation process on Raspberry Pi\u003cbr\u003e 6.4 Who will run the IRQ thread and when?\u003cbr\u003e __6.4.1 Analysis of the code that wakes up the IRQ thread\u003cbr\u003e __6.4.2 Analysis of the irq_thread() function, the IRQ thread handler\u003cbr\u003e __6.4.3 Summary of the entire execution flow of the IRQ thread\u003cbr\u003e 6.5 IRQ Thread Debugging Practice  \u003cbr\u003e__6.5.1 Checking IRQ thread operation using ftrace\u003cbr\u003e __6.5.2 IRQ thread creation practice\u003cbr\u003e __6.5.3 IRQ thread handling function execution time measurement\u003cbr\u003e 6.6 Introduction to Soft IRQ\u003cbr\u003e __6.6.1 What is Soft IRQ Service?\u003cbr\u003e __6.6.2 Overall flow of Soft IRQ\u003cbr\u003e __6.6.3 When to use Soft IRQ as a second half technique?\u003cbr\u003e __6.6.4 Why should I know about Soft IRQ?\u003cbr\u003e 6.7 Soft IRQ Service\u003cbr\u003e __6.7.1 Soft IRQ Service\u003cbr\u003e __6.7.2 When should a soft IRQ service handler be registered?\u003cbr\u003e __6.7.3 Practice registering a soft IRQ service handler\u003cbr\u003e 6.8 When to request Soft IRQ service?\u003cbr\u003e __6.8.1 Overall Flow of Soft IRQ Service Request\u003cbr\u003e __6.8.2 Analysis of the raise_softirq() function\u003cbr\u003e __6.8.3 Analysis of the irq_stat global variable\u003cbr\u003e __6.8.4 How and who checks whether a soft IRQ service has been requested?\u003cbr\u003e 6.9 Who handles Soft IRQ service and when?\u003cbr\u003e __6.9.1 Where is the Soft IRQ service execution entry point?\u003cbr\u003e __6.9.2 Check Soft IRQ Service Request\u003cbr\u003e __6.9.3 Running Soft IRQ Service\u003cbr\u003e __6.9.4 Waking up the ksoftirqd thread\u003cbr\u003e 6.10 ksoftirqd thread  \u003cbr\u003e__6.10.1 What is a ksoftirqd thread?\u003cbr\u003e __6.10.2 When will the ksoftirqd thread be woken up?\u003cbr\u003e __6.10.3 Analysis of the ksoftirqd handler run_ksoftirqd() function\u003cbr\u003e 6.11 About Soft IRQ Contexts\u003cbr\u003e __6.11.1 Where does the soft IRQ context start?\u003cbr\u003e __6.11.2 When does a soft IRQ context start?\u003cbr\u003e __6.11.3 Check Soft IRQ Context\u003cbr\u003e 6.12 Tasklet\u003cbr\u003e __6.12.1 What is a tasklet?\u003cbr\u003e __6.12.2 Tasklet data structure\u003cbr\u003e __6.12.3 How do I register a tasklet?\u003cbr\u003e __6.12.4 Understanding the entire execution flow of a tasklet\u003cbr\u003e __6.12.5 How do I request a tasklet execution?\u003cbr\u003e __6.12.6 When should a tasklet be executed?\u003cbr\u003e 6.13 Soft IRQ Debugging\u003cbr\u003e __6.13.1 Introducing ftrace's Soft IRQ Event\u003cbr\u003e __6.13.2 Checking the number of Soft IRQ service executions using \/proc\/softirqs\u003cbr\u003e 6.14 Summary\u003cbr\u003e\u003cbr\u003e \u003cb\u003e▣ Chapter 7: Work Queue\u003c\/b\u003e\u003cbr\u003e 7.1 Introduction to Work Queue\u003cbr\u003e __7.1.1 Key Concepts of Work Queues\u003cbr\u003e __7.1.2 Features of Work Queue\u003cbr\u003e __7.1.3 Comparison of Work Queues with Other Interrupt-Late Techniques  \u003cbr\u003e__7.1.4 Process of designing the latter half of the interrupt code using the work queue\u003cbr\u003e __7.1.5 Why you need to know the work queue well\u003cbr\u003e 7.2 Types of work queues\u003cbr\u003e __7.2.1 Analysis of the alloc_workqueue() function\u003cbr\u003e __7.2.2 7 Work Queues\u003cbr\u003e 7.3 What is Work?\u003cbr\u003e __7.3.1 work_struct structure\u003cbr\u003e __7.3.2 How to initialize a work?\u003cbr\u003e 7.4 How to queue work to a work queue?\u003cbr\u003e __7.4.1 Let's look at example code for queuing work to a work queue.\u003cbr\u003e __7.4.2 The process of queuing work into a work queue in the overall work queue flow diagram\u003cbr\u003e __7.4.3 Analysis of the interface function that queues work to the work queue\u003cbr\u003e __7.4.4 __queue_work() function analysis\u003cbr\u003e __7.4.5 Analysis of internal work queue functions called by the __queue_work() function\u003cbr\u003e 7.5 Who runs the work and when?\u003cbr\u003e __7.5.1 Analysis of the worker_thread() function, the starting point of work execution\u003cbr\u003e __7.5.2 Analysis of the process_one_work() function\u003cbr\u003e 7.6 What is a worker thread?\u003cbr\u003e __7.6.1 Workers and Worker Threads\u003cbr\u003e __7.6.2 worker structure\u003cbr\u003e __7.6.3 Who creates worker threads and when?  \u003cbr\u003e__7.6.4 Analysis of the create_worker() function that creates a worker thread\u003cbr\u003e __7.6.5 Analysis of the work queue kernel function called in the create_worker() function\u003cbr\u003e __7.6.6 worker_thread() function analysis\u003cbr\u003e 7.7 Workqueue Practice and Debugging\u003cbr\u003e __7.7.1 ftrace workqueue event\u003cbr\u003e __7.7.2 Verifying WorkQ operation using ftrace on Raspberry Pi\u003cbr\u003e __7.7.3 Interrupt second half processing practice and log analysis\u003cbr\u003e 7.8 Delay Walk\u003cbr\u003e __7.8.1 What is Delay Walk?\u003cbr\u003e __7.8.2 Overall flow of delay work\u003cbr\u003e __7.8.3 How to initialize delay work?\u003cbr\u003e __7.8.4 Where is the starting point for delayed walk execution?\u003cbr\u003e __7.8.5 Who will queue the delay work and when?\u003cbr\u003e 7.9 Creating a Delay Walk on a Raspberry Pi\u003cbr\u003e __7.9.1 Contents and writing method of patch code\u003cbr\u003e __7.9.2 ftrace log settings\u003cbr\u003e __7.9.3 ftrace log analysis\u003cbr\u003e 7.10 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\/TopCate3024\/MidCate003\/302322956.jpg\" border=\"0\" alt=\"Detailed Image 1\"\u003e\u003c\/div\u003e\u003c\/div\u003e \",\"\u003cdiv\u003e\u003ch5\u003e \u003cb\u003ePublisher's Review\u003c\/b\u003e\n\u003c\/h5\u003e\u003c\/div\u003e\n\u003cdiv\u003e  \u003cdiv\u003eCovers the key subsystems of the Linux kernel that anyone from a new Linux system developer to a developer with five years of experience needs to know to get started!\u003cbr\u003e\u003cbr\u003e This book explains the Linux kernel in an easy and friendly way, just like a friendly senior developer sitting next to a new employee in a real-world development situation and explaining the Linux kernel in detail.\u003cbr\u003e This book analyzes the Linux kernel source code of the latest version (LTS: 4.19) in detail by following the function flow and explains the kernel's operating principles by utilizing debugging tools such as ftrace and TRACE32.\u003cbr\u003e We also cover how to install the Linux kernel by modifying its source code directly on the Raspberry Pi, and then debugging the kernel.\u003cbr\u003e The kernel debugging methods introduced in each chapter can be directly applied to practical development.\u003cbr\u003e\u003cbr\u003e \u003cb\u003e▣ [Part 1] Kernel Debugging (ftrace), Processes, Interrupts, Second Half of Interrupts, Work Queue\u003c\/b\u003e\u003cbr\u003e \u003cbr\u003eFirst, we will introduce how to use ftrace along with how to debug the kernel.\u003cbr\u003e It covers the process that runs the kernel and the detailed operating principles of how the kernel handles interrupts.\u003cbr\u003e We will discuss the IRQ threads (threaded IRQ) that handle the second half of interrupts, the Soft IRQ technique, and the work queue that handles the second half in the kernel.\u003cbr\u003e\u003cbr\u003e \u003cb\u003e▣ [Part 2] Timers, synchronization, scheduling, system calls, signals, virtual file systems, and memory management\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003e Covers the operating principles and synchronization techniques (spin locks, mutexes) of how the kernel manages the flow of time.\u003cbr\u003e It explains the detailed implementation of scheduling, which manages the execution flow of multiple processes, and how system calls and signals are handled in the kernel.\u003cbr\u003e It covers how the kernel manages memory and the virtual file system that allows various file systems to coexist and run.\u003cbr\u003e\u003cbr\u003e \u003cbr\u003eThe appendix details how to utilize the Linux kernel mailing list and how to contribute to the Linux kernel.\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\"\u003e GOODS 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 May 12, 2020\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 708 pages | 1,350g | 188*240*29mm\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 9791158391980\u003c\/div\u003e\n\n\u003cdiv style=\"width:100%;margin-bottom:5px;line-height:1.6em;font-size:14px\"\u003e - \u003cstrong\u003eISBN10:\u003c\/strong\u003e 1158391986 \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":43893356724266,"sku":"139446","price":52.0,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0683\/2750\/5962\/files\/1d2f57a93324c1286e51aeed23a7b1d8.jpg?v=1765398223","url":"https:\/\/librairie.coreenne.fr\/en\/products\/139446","provider":"LIBRAIRIE COREENNE","version":"1.0","type":"link"}