skip to main content
Skip header Section
Linux Kernel DevelopmentJuly 2010
Publisher:
  • Addison-Wesley Professional
ISBN:978-0-672-32946-3
Published:02 July 2010
Pages:
480
Skip Bibliometrics Section
Bibliometrics
Skip Abstract Section
Abstract

Linux Kernel Development details the design and implementation of the Linux kernel, presenting the content in a manner that is beneficial to those writing and developing kernel code, as well as to programmers seeking to better understand the operating system and become more efficient and productive in their coding. The book details the major subsystems and features of the Linux kernel, including its design, implementation, and interfaces. It covers the Linux kernel with both a practical and theoretical eye, which should appeal to readers with a variety of interests and needs. The author, a core kernel developer, shares valuable knowledge and experience on the 2.6 Linux kernel. Specific topics covered include process management, scheduling, time management and timers, the system call interface, memory addressing, memory management, the page cache, the VFS, kernel synchronization, portability concerns, and debugging techniques. This book covers the most interesting features of the Linux 2.6 kernel, including the CFS scheduler, preemptive kernel, block I/O layer, and I/O schedulers. The third edition of Linux Kernel Development includes new and updated material throughout the book: An all-new chapter on kernel data structures Details on interrupt handlers and bottom halves Extended coverage of virtual memory and memory allocation Tips on debugging the Linux kernel In-depth coverage of kernel synchronization and locking Useful insight into submitting kernel patches and working with the Linux kernel community

Cited By

  1. Wang K, Wu S, Li S, Huang Z, Fan H, Yu C and Jin H (2024). Precise control of page cache for containers, Frontiers of Computer Science: Selected Publications from Chinese Universities, 18:2, Online publication date: 1-Apr-2024.
  2. Rajput P, Doumanidis C and Maniatakos M ICSPatch Proceedings of the 32nd USENIX Conference on Security Symposium, (6861-6876)
  3. Bilbao C, Saez J and Prieto-Matias M (2023). Divide&Content: A Fair OS-Level Resource Manager for Contention Balancing on NUMA Multicores, IEEE Transactions on Parallel and Distributed Systems, 34:11, (2928-2945), Online publication date: 1-Nov-2023.
  4. ACM
    Chen G, Hu Z and Jin D Integrating I/O Time to Virtual Time System for High Fidelity Container-based Network Emulation Proceedings of the 2022 ACM SIGSIM Conference on Principles of Advanced Discrete Simulation, (37-48)
  5. ACM
    Geissler S, Lange S, Linguaglossa L, Rossi D, Zinner T and Hossfeld T (2021). Discrete-Time Modeling of NFV Accelerators that Exploit Batched Processing, ACM Transactions on Modeling and Performance Evaluation of Computing Systems, 6:3, (1-27), Online publication date: 30-Sep-2021.
  6. ACM
    Palyvos-Giannas D, Mencagli G, Papatriantafilou M and Gulisano V Lachesis Proceedings of the 22nd International Middleware Conference, (365-378)
  7. ACM
    Reghenzani F, Massari G and Fornaciari W (2019). The Real-Time Linux Kernel, ACM Computing Surveys, 52:1, (1-36), Online publication date: 31-Jan-2020.
  8. ACM
    Yang C and Shinjo Y Obtaining hard real-time performance and rich Linux features in a compounded real-time operating system by a partitioning hypervisor Proceedings of the 16th ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments, (59-72)
  9. Hwang J, Cai Q, Tang A and Agarwal R TCP ≈ RDMA Proceedings of the 17th Usenix Conference on Networked Systems Design and Implementation, (127-140)
  10. ACM
    Awad M, Ashkiani S, Johnson R, Farach-Colton M and Owens J Engineering a high-performance GPU B-Tree Proceedings of the 24th Symposium on Principles and Practice of Parallel Programming, (145-157)
  11. ACM
    Wu X, Sherwood T, Chong F and Li Y Protecting Page Tables from RowHammer Attacks using Monotonic Pointers in DRAM True-Cells Proceedings of the Twenty-Fourth International Conference on Architectural Support for Programming Languages and Operating Systems, (645-657)
  12. ACM
    Lochmann A, Schirmeier H, Borghorst H and Spinczyk O LockDoc Proceedings of the Fourteenth EuroSys Conference 2019, (1-15)
  13. ACM
    Gebai M and Dagenais M (2018). Survey and Analysis of Kernel and Userspace Tracers on Linux, ACM Computing Surveys, 51:2, (1-33), Online publication date: 31-Mar-2019.
  14. ACM
    Garcia-Garcia A, Saez J, Castro F and Prieto-Matias M LFOC Proceedings of the 48th International Conference on Parallel Processing, (1-10)
  15. Carabaño J, Westerholm J and Sarjakoski T (2018). A compiler approach to map algebra, Geoinformatica, 22:2, (211-235), Online publication date: 1-Apr-2018.
  16. Chalios C, Georgakoudis G, Tovletoglou K, Karakonstantis G, Vandierendonck H and Nikolopoulos D (2018). DARE, International Journal of High Performance Computing Applications, 32:1, (74-88), Online publication date: 1-Jan-2018.
  17. ACM
    Bushouse M and Reeves D Hyperagents Proceedings of the Eighth ACM Conference on Data and Application Security and Privacy, (212-223)
  18. ACM
    Matias R and Ferreira A Kloadavg Proceedings of the 33rd Annual ACM Symposium on Applied Computing, (1122-1128)
  19. ACM
    Abal I, Melo J, Stănciulescu Ş, Brabrand C, Ribeiro M and Wąsowski A (2018). Variability Bugs in Highly Configurable Systems, ACM Transactions on Software Engineering and Methodology, 26:3, (1-34), Online publication date: 12-Jan-2018.
  20. Wu Y, Wang F, Hua Y, Feng D, Hu Y, Tong W, Liu J and He D (2017). I/O Stack Optimization for Efficient and Scalable Access in FCoE-Based SAN Storage, IEEE Transactions on Parallel and Distributed Systems, 28:9, (2514-2526), Online publication date: 1-Sep-2017.
  21. ACM
    Liu J, Li D, Yuan C, Liu H and Tang Y A Novel Pre-fetching Strategy of Memory Object Caching System Proceedings of the 12th Chinese Conference on Computer Supported Cooperative Work and Social Computing, (115-121)
  22. ACM
    Stefanovici I, Schroeder B, O'Shea G and Thereska E (2017). Treating the Storage Stack Like a Network, ACM Transactions on Storage, 13:1, (1-27), Online publication date: 24-Mar-2017.
  23. ACM
    Meyer R, Wagner J, Farkas B, Horsinka S, Siegl P, Buchty R and Berekovic M (2016). A Scriptable Standard-Compliant Reporting and Logging Framework for SystemC, ACM Transactions on Embedded Computing Systems, 16:1, (1-28), Online publication date: 28-Feb-2017.
  24. Feliu J, Sahuquillo J, Petit S and Duato J (2017). Perf&Fair, IEEE Transactions on Computers, 66:5, (905-911), Online publication date: 1-May-2017.
  25. Stefanovici I, Schroeder B, O'Shea G and Thereska E sRoute Proceedings of the 14th Usenix Conference on File and Storage Technologies, (197-212)
  26. Gottesman Y and Etsion Y NeSC The 49th Annual IEEE/ACM International Symposium on Microarchitecture, (1-12)
  27. ACM
    Wen E, Seah W, Ng B, Liu X and Cao J UbiTouch Proceedings of the 2016 ACM International Joint Conference on Pervasive and Ubiquitous Computing, (286-297)
  28. ACM
    Donyanavard B, Mück T, Sarma S and Dutt N SPARTA Proceedings of the Eleventh IEEE/ACM/IFIP International Conference on Hardware/Software Codesign and System Synthesis, (1-10)
  29. ACM
    Park J, Kang D and Eom Y File Defragmentation Scheme for a Log-Structured File System Proceedings of the 7th ACM SIGOPS Asia-Pacific Workshop on Systems, (1-7)
  30. ACM
    Kim S, Kwon S, Kim J and Jeong J (2015). Controlling physical memory fragmentation in mobile systems, ACM SIGPLAN Notices, 50:11, (1-14), Online publication date: 28-Jan-2016.
  31. ACM
    Hsiu P, Tseng P, Chen W, Pan C and Kuo T (2016). User-Centric Scheduling and Governing on Mobile Devices with big.LITTLE Processors, ACM Transactions on Embedded Computing Systems, 15:1, (1-22), Online publication date: 20-Feb-2016.
  32. Lelli J, Scordino C, Abeni L and Faggioli D (2016). Deadline scheduling in the Linux kernel, Software—Practice & Experience, 46:6, (821-839), Online publication date: 1-Jun-2016.
  33. Oliveira D and Oliveira R (2016). Timing analysis of the PREEMPT RT Linux kernel, Software—Practice & Experience, 46:6, (789-819), Online publication date: 1-Jun-2016.
  34. Song W, Choi H, Kim J, Kim E, Kim Y and Kim J PIkit Proceedings of the 25th USENIX Conference on Security Symposium, (37-51)
  35. Pietrantuono R, Russo S and Trivedi K Emulating environment-dependent software faults Proceedings of the First International Workshop on Complex faUlts and Failures in LargE Software Systems, (34-40)
  36. ACM
    Kim M, Koo J, Lee H and Geraci J (2015). Memory Management Scheme to Improve Utilization Efficiency and Provide Fast Contiguous Allocation without a Statically Reserved Area, ACM Transactions on Design Automation of Electronic Systems, 21:1, (1-23), Online publication date: 2-Dec-2015.
  37. ACM
    Kim S, Kwon S, Kim J and Jeong J Controlling physical memory fragmentation in mobile systems Proceedings of the 2015 International Symposium on Memory Management, (1-14)
  38. ACM
    Ahmed I, Roussev V and Ali Gombe A Robust Fingerprinting for Relocatable Code Proceedings of the 5th ACM Conference on Data and Application Security and Privacy, (219-229)
  39. ACM
    Wang T, Liu D, Wang Y and Shao Z (2015). Towards Write-Activity-Aware Page Table Management for Non-volatile Main Memories, ACM Transactions on Embedded Computing Systems, 14:2, (1-23), Online publication date: 25-Mar-2015.
  40. Chen D, Chen Y, Chen L, Hsu M and Chiang K (2015). A Machine Learning Method for Power Prediction on the Mobile Devices, Journal of Medical Systems, 39:10, (1-11), Online publication date: 1-Oct-2015.
  41. ACM
    Kim H, Kim S, Jeong J and Lee J (2014). Virtual asymmetric multiprocessor for interactive performance of consolidated desktops, ACM SIGPLAN Notices, 49:7, (29-40), Online publication date: 25-Sep-2014.
  42. ACM
    Kannan R, Jo J and Go H Improved event driven architecture for tizen sensor framework Proceedings of the 1st International Conference on Mobile Software Engineering and Systems, (75-78)
  43. ACM
    Tseng P, Hsiu P, Pan C and Kuo T User-Centric Energy-Efficient Scheduling on Multi-Core Mobile Devices Proceedings of the 51st Annual Design Automation Conference, (1-6)
  44. ACM
    Kim H, Kim S, Jeong J and Lee J Virtual asymmetric multiprocessor for interactive performance of consolidated desktops Proceedings of the 10th ACM SIGPLAN/SIGOPS international conference on Virtual execution environments, (29-40)
  45. ACM
    de Oliveira D and de Oliveira R Mapping of the synchronization mechanisms of the Linux kernel to the response-time analysis model Proceedings of the 29th Annual ACM Symposium on Applied Computing, (1543-1544)
  46. ACM
    Abal I, Brabrand C and Wasowski A 42 variability bugs in the linux kernel Proceedings of the 29th ACM/IEEE International Conference on Automated Software Engineering, (421-432)
  47. ACM
    Chen S, Lin H, Chen K, Chang Y, Yew P and Ho C A systematic methodology for OS benchmark characterization Proceedings of the 2013 Research in Adaptive and Convergent Systems, (404-409)
  48. ACM
    Lameter C (2013). NUMA (Non-Uniform Memory Access): An Overview, Queue, 11:7, (40-51), Online publication date: 1-Jul-2013.
  49. ACM
    Lameter C (2013). An overview of non-uniform memory access, Communications of the ACM, 56:9, (59-54), Online publication date: 1-Sep-2013.
  50. ACM
    Salomie T, Alonso G, Roscoe T and Elphinstone K Application level ballooning for efficient server consolidation Proceedings of the 8th ACM European Conference on Computer Systems, (337-350)
  51. ACM
    Jeong J, Kim H, Hwang J, Lee J and Maeng S (2013). Rigorous rental memory management for embedded systems, ACM Transactions on Embedded Computing Systems, 12:1s, (1-21), Online publication date: 1-Mar-2013.
  52. ACM
    Kim H, Jeong J, Hwang J, Lee J and Maeng S Scheduler support for video-oriented multimedia on client-side virtualization Proceedings of the 3rd Multimedia Systems Conference, (65-76)
  53. ACM
    Bathen L, Gottscho M, Dutt N, Nicolau A and Gupta P ViPZonE Proceedings of the eighth IEEE/ACM/IFIP international conference on Hardware/software codesign and system synthesis, (33-42)
  54. Khoroshilov A, Mutilin V, Novikov E, Shved P and Strakh A Towards an open framework for c verification tools benchmarking Proceedings of the 8th international conference on Perspectives of System Informatics, (179-192)
  55. Ko B, Kim Y and Kim T Performance improvement of I/O subsystems exploiting the characteristics of solid state drives Proceedings of the 2011 international conference on Computational science and its applications - Volume Part III, (528-539)
  56. ACM
    Gotsman A and Yang H Modular verification of preemptive OS kernels Proceedings of the 16th ACM SIGPLAN international conference on Functional programming, (404-417)
  57. ACM
    Gotsman A and Yang H (2011). Modular verification of preemptive OS kernels, ACM SIGPLAN Notices, 46:9, (404-417), Online publication date: 18-Sep-2011.
  58. Chu S, Hsiao C, Chiu P and Lin H User adjustable process scheduling mechanism for a multiprocessor embedded system Proceedings of the 6th WSEAS international conference on Applied computer science, (346-351)
  59. ACM
    Choi J, Baek S and Shin S Design and implementation of a kernel resource protector for robustness of Linux module programming Proceedings of the 2006 ACM symposium on Applied computing, (1477-1481)
  60. ACM
    Corrêa M, Zorzo A and Scheer R Operating system multilevel load balancing Proceedings of the 2006 ACM symposium on Applied computing, (1467-1471)
  61. Lin B, Dinda P and Lu D User-Driven Scheduling of Interactive Virtual Machines Proceedings of the 5th IEEE/ACM International Workshop on Grid Computing, (380-387)
Contributors
  • International Business Machines

Recommendations

Reviews

Jeffrey B. Putnam

The growth of open-source software has surely been good for the software development industry. It has also been good for those who like to tinker, understand, and even just play around. Surely, of all the open-source projects, Linux is at the forefront; it has grown from a toy to a major player. Linux consists of two major pieces: the kernel and the supporting code (which includes most of what users see, including compilers, shells, graphical user interface (GUI) systems, applications, and Web servers). This book covers the Linux kernel (although it also discusses supporting systems in passing). The kernel is a fascinating beast in itself: it has thousands of contributors and millions of lines of code; it supports a huge variety of devices on a number of central processing units (CPUs); and it is always moving (which way it is currently going-sometimes forward, sometimes backward-often depends on who is measuring what). Furthermore, it contains both code that is at the edge of operating system (OS) development and code that has been around for years. The source code is available to anyone, and anyone can read it and change it. (Getting changes incorporated into a distributed kernel is rather more difficult, however.) The complication, naturally, is that kernel code doesn't look like most user-level code, since the runtime environment for the kernel has very different constraints. Because of the different environment and the different requirements for a kernel, kernel code uses a specific set of coding practices, data structures, and locking mechanisms. The book covers the basic organization of the Linux kernel, and it discusses many things that are specific to kernels in general (for example, scheduling, process management, memory management, device drivers, and synchronization) and Linux in particular. This book is a good starting place for beginners because the level of detail is just about right: not so high as to ignore the interesting topics, nor so low as to overwhelm readers with long stretches of code. (In fact, most of the actual code snippets are less than a page long.) As a result, it is ideal supplementary reading for an introduction to an OSs course. For people who are interested in coding in the kernel, or for an OSs course that focuses more on implementation details, this book could be used nicely as a primary text, with a secondary text (such as Understanding the Linux kernel [1]), the Linux kernel source itself, and the Linux kernel mailing list providing more detail. The writing is clear and well organized, providing pointers to Linux 2.6.34. (The current release is 2.6.38, and version 2.6.39 is in the release candidate stage.) Since the kernel is a moving target (although much more stable than earlier in its lifetime), some changes are inevitable. In summary, though this is not a replacement for a general OSs text, it is an excellent introduction to the Linux kernel and to OS implementation in general. It is also quite a good read: it's sometimes casual, sometimes precise, and leavened with humor. Online Computing Reviews Service

Access critical reviews of Computing literature here

Become a reviewer for Computing Reviews.