Why Linux Uses Its Bus, Device, and Driver Model – A Deep Dive
The presentation walks through Linux’s bus, device, and driver architecture, covering concepts such as decoupling, unified interfaces, sysfs, class views, power management, ACPI matching, automatic module loading, and kernel objects like kobject, kref, and subsys, illustrating why the kernel is designed this way.
This article shares a slide deck created several years ago that explains the design of Linux’s bus, device, and driver model. It aims to clarify why Linux adopts this architecture and what the main design principles are.
The slides cover the following topics:
Imagining an Ethernet controller on a board
Decoupling components
Providing a unified interface
Understanding the bus, device, and driver relationship
Matching devices to drivers
Distinguishing devices from drivers
Using the /sys filesystem
Viewing devices through /class Bus chaining and power management
Describing devices in DTS and drivers in C code
Matching ACPI entries to drivers
Automatic loading of driver modules
Sysfs modalias mechanism
Driver override capabilities
Kernel object ( kobject) fundamentals
Reference counting with kref Kernel sets via kset Subsystem handling with subsys Each slide (illustrated by the accompanying images) demonstrates the concept, often with diagrams of the kernel’s internal structures, showing how these mechanisms work together to achieve modularity, extensibility, and reliable power management in the Linux kernel.
Linux Code Review Hub
A professional Linux technology community and learning platform covering the kernel, memory management, process management, file system and I/O, performance tuning, device drivers, virtualization, and cloud computing.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
