# The Linux Kernel/About

The book's title page and structure were originally influenced by the article "Splitting the Kernel" in the Linux Device Drivers book, which included a diagram. The diagram's colorful matrix design was borrowed from the Interactive map of the Linux kernel. Additionally, the layered presentation of the information in the book was inspired by the OSI model's layers. Number of layers and functionalities intentionally are near to the magical number seven.

## Layers

Applications and libraries in User mode above the kernel can be associated with Application layer of OSI model.
Upper layers:
    User space interfaces - Facade of the kernel. It is mostly represented by system calls. It can be associated with Presentation layer of OSI model.
    Virtual - provides aggregated services to upper layer, named after virtual memory and Virtual File System. Similar to Session layer.
Middle layers:
    bridges - manages interoperability, named after Bridge pattern. Similar to Transport layer.
    logical - provides logical implementations. Named after logical memory, address and logical file systems. Similar to Network layer.
Lower layers, similar to Data link layer:
    devices control - abstractions and control of HW interfaces. Classes of devices. HW independent generic devices.
    hardware interfaces - direct HW interfaces. HW depended drivers.

## Functionalities

The functionalities Processing, Memory, Storage and Networking look very familiar and obvious while the functionalities Human Interface and System need some explanation. The Human Interface functionality covers topics which are associated more with human users than with fundamental computing. Obviously HID (Human Interface Devices) belongs to this functionality hence the name and Multimedia also belongs here. Character devices, despite that are used as byte streams in System and Storage, are assigned to HI too. System functionality covers fundamental and common functions. Common System calls infrastructure of the kernel is described under this functionality. Specific system calls and interfaces are described under another corresponding functionalities.
The two-dimensional layout instead of a linear TOC layout allows effective organization of the book content and index existed docs and man pages.

## Contribution

The book needs contributors. Here are the guidelines:
* Make articles complete, continuous and appealing.
** Fix typos and reword.
** Keep consistent formatting.
* Keep info updated by replacing obsolete content with modern one.
* Share your knowledge and experience about the kernel.
* Explore the source and describe it.
* Add explanations to incomplete sections.
* Copy paste text from Wikipedia.
* Add links to externals resources using templates:
** Wikipedia articles
** https://elixir.bootlin.com/linux/latest/source
** https://www.kernel.org/doc/html/latest/
** https://man7.org/linux/man-pages/
** Other external links

### Paragraph template

🔧 TODO
🗝️ Acronyms and/or key terms
    API – Application Program Interface
🖱️ GUI
    man 1 git-gui – a portable graphical interface to Git
⚲ APIs
    man 1 intro – introduction to user commands
    man 2 intro – introduction to system calls
    man 4 intro – introduction to special files
    uapi$_{inc}$ – users-space API
    man 2 syscall ↪
       entry_SYSCALL_64$_{id}$ ↯ call hierarchy:
          do_syscall_64$_{id}$
🛠️ Utilities
    man 1 ls – lists directory contents
👁️ Example
    samples$_{src}$
⚙️ Internals
    printk$_{id}$
    kernel$_{src}$
    tools/testing/selftests$_{src}$
🚀 Advanced features
📖 References
    The Linux Kernel documentation$_{doc}$
    Documentation for /proc/sys/kernel/$_{doc}$
📚 Further reading
    https://lore.kernel.org/
       LKML
       linux-doc ML
    KernelNewbies ML
💾 Historical
    https://tldp.org/LDP/lki/
    https://tldp.org/HOWTO/KernelAnalysis-HOWTO.html
    https://www.kernel.org/doc/html/
Thank you