Linux Kernel Principles
Last updated
Was this helpful?
Last updated
Was this helpful?
āđāļāļāļĢāđāđāļāļĨ (Kernel) āļŠāļēāļĄāļēāļĢāļāđāļĒāļāļāļāļāļĄāļēāđāļāđ 3 āļāļĢāļ°āđāļ āļ āđāļāđāđāļāđ
Monolithic kernel āđāļāđāļ Linux Kernel, MS-DOS, Microsoft Windows 9x Series
Micro kernel āđāļāđāļ AIX, AmigaOS, Android OS, Haiku, L4 microkernel family āđāļāđāļāļāđāļ
Hybrid kernel āđāļāđāļ BeOS kernel, NetWare kernel, ReactOS kernel, NT kernel Windows NT kernel (Windows 2000/Windows XP/Windows 2003/Windows Vista), 8.XNU kernel (āđāļāđāđāļ Mac OS X) āđāļāđāļāļāđāļ
āđāļĨāļ°āđāļāđāļāļāļĩāđāļāļĢāļēāļāļāļąāļāļāļĩāļ§āđāļēāļĨāļĩāļāļļāļāļāđāļāļāļĢāđāđāļāļĨāđāļāļĒāļŠāđāļ§āļāđāļŦāļāđāļāļąāđāļāļāļ°āđāļāđāļāļāļāļīāļ monolithic kernel āļāļķāđāļāļŦāļĄāļēāļĒāļāļķāļāļŦāļāđāļēāļāļĩāđāļŦāļĨāļąāļāđāļāļĒāļŠāđāļ§āļāđāļŦāļāđāļāļāļāļĢāļ°āļāļāļāļāļīāļāļąāļāļīāļāļēāļĢāļāļ°āļāļđāļāđāļĢāļĩāļĒāļāļāđāļēāļ Kernel āļāļąāđāļāļŦāļĄāļ āļāļąāļāđāļŠāļāļāđāļāļĢāļđāļāļāđāļēāļāļĨāđāļēāļ
āđāļāļāļāđāļēāļāļāļēāļ Micro Kernel āļāļĩāđāļāļēāļāļŠāđāļ§āļāļāļāļāļĢāļ°āļāļāļāļāļīāļāļąāļāļīāļāļēāļĢāļĒāļąāļāļāļāļāļģāđāļ Kernel āđāļāđāļ āļāļēāļĢāļŠāļ·āđāļāļŠāļēāļĢāļĢāļ°āļŦāļ§āđāļēāļāđāļāļĢāđāļāļŠ (inter-process communication) āļāļēāļĢāļāļąāļāļĨāļģāļāļąāļāļāļēāļāļāļāļāļāļļāļāļāļĢāļāđāļāļīāļāļāļļāļ/āđāļāļēāļāđāļāļļāļ (basic input/output scheduling) āļāļēāļĢāļāļąāļāļāļēāļĢāļŦāļāđāļ§āļĒāļāļ§āļēāļĄāļāļģ (memory management) āļŠāđāļ§āļāļŦāļāđāļēāļāļĩāđāļāļ·āđāļāđāļāļ°āļāļģāļ āļēāļĒāļāļāļ Kernel āļāļąāļ§āļāļĒāđāļēāļāđāļāđāļ drivers, network stack, file systems
āļĨāļĩāļāļļāļāļāđāļāļāļĢāđāđāļāļĨāļāļķāđāļāđāļāđāļāļāļąāļ§āļāļĨāļēāļāļŠāļģāļāļąāļāļāļāļāļĢāļ°āļāļāļāļāļīāļāļąāļāļīāļāļēāļĢāļĨāļĩāļāļļāļāļāđāđāļāļāļēāļĢāļāļīāļāļāđāļāļĢāļ°āļŦāļ§āđāļēāļāļŪāļēāļĢāđāļāđāļ§āļĢāđāđāļĨāļ°āļāļāļāļāđāđāļ§āļĢāđ āđāļāļĒāļŪāļēāļĢāđāļāđāļ§āļĢāđāļāļąāđāļāļŦāļĄāļēāļĒāļāļķāļāļāļļāļāļāļĢāļāđāļāđāļēāļāđāļ āļēāļĒāđāļāđāļĨāļ°āļāļļāļāļāļĢāļāđāļĢāļāļāļāđāļēāļāđāļāļĢāļ·āđāļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđ āļāļąāļ§āļāļĒāđāļēāļāđāļāđāļ āļŦāļāđāļ§āļĒāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļāļĨāļēāļ āļŦāļāđāļ§āļĒāļāļ§āļēāļĄāļāļģ āļāļēāļĢāđāļāđāļŠāļāļāļāļĨ āļŪāļēāļĢāđāļāļāļīāļŠāļāđ āļāļļāļāļāļĢāļāđāļāļīāļāļāļļāļāđāļĨāļ°āđāļāļēāļāđāļāļļāļ āđāļĄāļēāļŠāđ āļāļĩāļĒāđāļāļāļĢāđāļ āđāļāđāļāļāđāļ āļŠāļģāļŦāļĢāļąāļāļāļāļāđāļ§āļĢāđāļāļąāđāļāļāļĢāļ°āļāļāļāđāļāļāđāļ§āļĒāđāļāļĢāđāļāļĢāļĄāļāļāļāļĢāļ°āļāļāļāļāļīāļāļąāļāļīāļāļēāļĢāđāļĨāļ°āđāļāļĢāđāļāļĢāļĄāļāļĢāļ°āļĒāļļāļāļāđāļāđāļēāļāđ āđāļāļĒāļ āļēāļĒāđāļ Kernel āļāļ°āļāļĢāļ°āļāļāļāđāļāļāđāļ§āļĒ 2 āļŠāđāļ§āļāļŠāļģāļāļąāļāļāļ·āļ Kernel Module āđāļĨāļ° Device Driver āļāļąāđāļāļŠāļāļāļāļ°āļāļģāļŦāļāđāļēāļāļĩāđāđāļāļāļēāļĢāļāļđāđāļĨāļāļąāļāļāļēāļĢāļāļēāļĢāļĢāđāļāļāļāļāļāļĩāđāđāļāļīāļāļāļķāđāļāļāļēāļāļŪāļēāļĢāđāļāđāļ§āļĢāđāđāļĨāļ°āļāļāļāļāđāđāļ§āļĢāđ āđāļĨāđāļ§āļāļģāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāļāđāļāļĄāļđāļĨāđāļāđāļāļ·āđāļāļāļāđāļāđāļāļ·āđāļāļŠāđāļāļāđāļāđāļŦāđāļĢāļ°āļāļāļāļāļīāļāļąāļāļīāļāļēāļĢāļāđāļāđāļ āđāļāļ·āđāļāđāļŦāđāļāļĢāļīāļŦāļēāļĢāļāļąāļāļāļēāļĢāļāļēāļĢāđāļāđāļāļēāļāļāļĢāļąāļāļĒāļēāļāļĢāļāļąāđāļāļŦāļĄāļāđāļāđāļāļĒāđāļēāļāļĄāļĩāļĢāļ°āļāļ
āļāļļāļāđāļāđāļāļŠāļģāļāļąāļāļāļĩāļāļāļļāļāļŦāļāļķāđāļāļāļ·āļāļĨāļĩāļāļļāļāļāđāļāļāļĢāđāđāļāļĨāļŠāļēāļĄāļēāļĢāļāļĢāļāļāļĢāļąāļāļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļĩāđāļĄāļĩāļāļĒāļđāđāļāļąāđāļāđāļāđāđāļāļāļāļĩāļāļāļāļāļķāļāļāļąāļāļāļļāļāļąāļ āļāļķāđāļāļŠāļēāļĄāļēāļĢāļāļāļđāļĢāļēāļĒāļāļ·āđāļāđāļāđāļāļēāļāđāļāđāļĢāļāļāļāļĢāļĩ /arch
āđāļāļĒāļŠāļēāļĄāļēāļĢāļāđāļĒāļāđāļāđāļāļāļĨāļļāđāļĄāļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāđāļāđ 2 āđāļāļāļāļ·āļāđāļāļ 32 āļāļīāļ āđāļāđāļ arm, avr32, blackfin, m68k, microblaze, mips, score, sparc, um, x86, powerpc āđāļĨāļ°āļāļĨāļļāđāļĄāļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāđāļāļ 64 āļāļīāļ āđāļāđāļ alpha, arm64, ia64, sparc64, tile, x86_64, powerpc
āļĢāļēāļĒāļĨāļ°āđāļāļĩāļĒāļāļāļāļāđāļāđāļĨāļ°āļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāđāļŦāļĨāđāļēāļāļĩāđāļāļąāļāļāļąāļāļāļēāļŠāļēāļĄāļēāļĢāļāđāļāđāļēāđāļāļāđāļēāļāđāļāļīāđāļĄāđāļāļīāļĄāđāļāđāļāļēāļāđāļāđāļĢāļāļāļāļĢāļĩ arch/<arch>/Kconfig
, arch/<arch>/README
āļŦāļĢāļ·āļāđāļāđāļāđāļĢāļāļāļāļĢāļĩ Documentation/<arch>/
āļāļāļāļāļēāļāļāļąāđāļāļĨāļĩāļāļļāļāļāđāļāļāļĢāđāđāļāļĨāļĒāļąāļāļāļđāļāļāļĢāļąāļāļāļĢāļļāļāđāļāđāļāļ āļēāļĒāđāļ āđāļŦāđāļāļģāļāļēāļāđāļāđāļāļĒāđāļēāļāļĄāļĩāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļ āđāļĨāļ°āļĄāļĩāļāļ§āļēāļĄāļĒāļ·āļāļŦāļĒāļļāđāļāļŠāļđāļāļāļąāļāļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļĩāđāļŦāļĨāļēāļāļŦāļĨāļēāļĒāļāļĒāđāļēāļāļāđāļāđāļāļ·āđāļāļāđāļĨāļ°āļĢāļāļāļĢāļąāļāļāļēāļĢāđāļāđāļēāļāļąāļāđāļāđāļāļąāļāļĄāļēāļāļĢāļēāļāļēāļāļŪāļēāļĢāđāļāđāļ§āļĢāđāļĢāļļāđāļāđāļŦāļĄāđāđāđāļāđāļĒāļąāļāļāļāđāļāđāļĢāļąāļāļāļēāļĢāļāļ§āļāļāļļāļĄāļāļēāļāļāļđāđāđāļāļĩāđāļĒāļ§āļāļēāļāļāļĩāđāļāļđāđāļĨāļāļāļĢāđāļŠāđāļāđāļāļāļēāļāļāļąāđāļ§āđāļĨāļāđāļāļ·āđāļāđāļĄāđāđāļŦāđāđāļāļĢāđāļāļāļāđāļāļāđāļāđāļāļāļĩāđāđāļĄāđāļāļķāļāļāļĢāļ°āļŠāļāļāđāļŦāļĢāļ·āļāļŠāļĢāđāļēāļāļāļ§āļēāļĄāđāļĄāđāļāļĨāļāļāļ āļąāļĒāđāļŦāđāļāļąāļāļĢāļ°āļāļāđāļāļĒāļĢāļ§āļĄ
āļŠāļģāļŦāļĢāļąāļāļāļąāļāļāļąāļāļāļēāļĢāļ°āļāļāļŠāļĄāļāļāļāļĨāļāļąāļāļāļąāļ§āļŠāļēāļĄāļēāļĢāļāļāļĩāđāļāļ°āđāļĨāļ·āļāļāđāļāđāļāļąāļāļāđāļāļąāđāļāļāļēāļāļāļąāļ§āđāļāļĨāļĩāļāļļāļāļāđāļāļāļĢāđāđāļāļĨāđāļāļ·āđāļāđāļŦāđāđāļŦāļĄāļēāļ°āļŠāļĄāļāļąāļāļĢāļ°āļāļāļŪāļēāļĢāđāļāđāļ§āļĢāđāļāļĩāđāļĄāļĩāļāļĒāļđāđāļāļāļāļāļĢāđāļāļŠāļĄāļāļāļāļĨāļĢāļ§āļĄāļāļąāđāļāļŠāļēāļĄāļēāļĢāļāđāļĨāļ·āļāļāđāļāļĢāđāļāļĢāļĄāļāļĢāļ°āļĒāļļāļāļāđāļāļēāļāļāļąāļ§āļāļĩāđāļāđāļāļāļāļēāļĢāđāļŦāđāļāļģāļāļēāļāļāļĒāļđāđāđāļāļāļāļĢāđāļāļŠāļĄāļāļāļāļĨāļāļąāļāļāļąāļ§āđāļāđ
āđāļāļĒāļāļāļāļīāļāļļāļ 2-3 āļāļĩ āļāļ°āļĄāļĩāļāļēāļĢāļāļāļāļĢāļļāđāļāđāļŠāļāļĩāļĒāļĢ (stable) āļāļāļāļĨāļĩāļāļļāļāļāđāļāļāļĢāđāđāļāļĨāļāļĩāđāđāļāđāļāđāļĨāļāļāļđāđ āđāļāđāļ 1.0.x, 2.0.x, 2.2.x, 2.4.x, 2.6.x, 3.0.x āđāļĄāļ·āđāļāļĄāļĩāļāļēāļĢāļāļąāļāļāļēāļāļĢāļąāļāļāļĢāļļāļāļāļąāļāļāđāļāļąāđāļāđāļŦāļĄāđāđāđāļāđāļēāđāļāđāļĨāļ°āļĄāļĩāļāļēāļĢāđāļāļĨāļĩāđāļĒāļāđāļāļĨāļāđāļāđāļāļāļļāļāđāļŦāļāđ āļāđāļāļ°āļāļāļāđāļĨāļāļĢāļļāđāļāđāļāļĒāđāļāđāđāļāđāļāđāļĨāļāļāļĩāđ āđāļāđāļ 2.1.x, 2.3.x, 2.5.x āđāļāđāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļĢāļąāļāļāļĢāļļāļāđāļāļĨāļĩāđāļĒāļāđāļāļĨāļāđāļāļĢāļ°āļāļąāļāđāļĨāđāļāļĨāļāļĄāļē (Minor release) āļāļ°āđāļāđāđāļāļĨāļĩāđāļĒāļāđāļĨāļāļĢāļļāđāļāļŦāļĨāļąāļāļāļĩāđāļŠāļēāļĄ āđāļāđāļ 2.5.12, 2.6.39
āļāļąāđāļāđāļāđāļāļĩ āļ.āļĻ. 2003 āļāļķāļ āļ.āļĻ. 2011 āļĢāļļāđāļ 2.6.x āđāļāđāļāļĢāļļāđāļāļāļĩāđāļĄāļĩāļĢāļ°āļĒāļ°āļāļēāļĢāđāļāđāļāļēāļāļĒāļēāļ§āļāļēāļāļĄāļēāļāđāļāđāļāļāļīāđāļĻāļĐ āļāļēāļāđāļāļ·āđāļāļāļĄāļēāļāļēāļāļāđāļ§āļāļāļąāđāļāđāļāđāļāļĒāļļāļāļāļāļāļāļēāļĢāđāļāļīāļāđāļāđāļĨāļ°āđāļāļĨāļĩāđāļĒāļāđāļāļĨāļāļāļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđāļĢāļ§āļĄāļāļąāđāļāļāļļāļāļāļĢāļāđāļāļēāļĢāđāļāđāļ§āļĢāđāļ āļēāļĒāđāļāđāļāļĢāļ·āđāļāļāđāļĨāļ°āļāļļāļāļāļĢāļāđāļāđāļāļāđāļ§āļāļĢāļāļāļāđāļēāļāļāļĒāđāļēāļāļĢāļļāļāđāļĢāļāđāļĨāļ°āļĒāļąāļāđāļāđāļāļāļēāļĢāđāļāļīāļāļāļķāđāļāļāļāļāļĒāļļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđāļāļāļīāļāļāļāļāļē āđāļāđāļ Laptop, Netbook, Mobile Internet Device, Smart Phone, Tablet
āđāļāļāļĩāđāļŠāļļāļāļĨāļĩāļāļļāļāļāđāļāļāļĢāđāđāļāļĨāļĢāļļāđāļ 3.0 āļāđāđāļĢāļīāđāļĄāļāļĢāļ°āļāļēāļĻāđāļāđāļāļāļēāļāļāļēāļĢāđāļāđāļāļ·āļāļ āļāļĢāļāļāļēāļāļĄ āļāļĩāļ.āļĻ. 2011 āļāļķāđāļāđāļāđāļāļāļēāļĢāđāļāļĨāļĩāđāļĒāļāļāļĒāļąāļāļāļąāļ§āđāļĨāļāļāļēāļ 2.6 āđāļāļŠāļđāđ 3.0 āļāļĩāđāļĒāļēāļ§āļāļēāļāđāļāđāļāļĨāļąāļāđāļĄāđāđāļāđāđāļāđāļāļāļēāļĢāđāļāđāđāļāđāļāļĢāļ°āļāļąāļāđāļāđāļāļĄāļēāļāđāļāđāļāļĒāđāļēāļāđāļ āļāļāļēāļāļ āļēāļĒāđāļāļĨāļĩāļāļļāļāļāđāļāļāļĢāđāđāļāļĨ 3.x āļāļ°āļĄāļĩāļāļāļēāļāđāļāļĒāļĢāļ§āļĄāļāļĒāļđāđāļāļĢāļ°āļĄāļēāļ 434 MB āļāđāļ§āļĒāļāļģāļāļ§āļāđāļāļĨāđāļāļķāļ 39,400 āļāļ§āđāļēāđāļāļĨāđ (āļĄāļēāļāļāļ§āđāļē 14,800,000 āļāļĢāļĢāļāļąāļ) āļāļąāļāļāļąāđāļāļāđāļēāļāđāļāļāļāļēāļĢāļāļ°āļāļģāļāļēāļĢāļāļĩāļāļāļąāļāđāļŦāđāļĄāļĩāļāļāļēāļāđāļĨāđāļāļāļĩāđāļŠāļļāļāļāļ§āļĢāļāļ°āđāļāđāļāļāļēāļĄāļŠāļāļļāļĨ .xz
(āļĨāļāļĨāļāđāļāđāļāđāļāļĢāļ°āļĄāļēāļ 85.7%)
āļāļĢāļāļĩāļāļēāļĢāļāļąāļāļāļēāļĢāļ°āļāļāļŠāļĄāļāļāļāļĨāļāļąāļāļāļąāļ§āļāļąāđāļāļŠāļēāļĄāļēāļĢāļāđāļāđāļĨāļĩāļāļļāļāļāđāļāļāļĢāđāđāļāļĨāđāļĨāđāļāļāļĩāđāļŠāļļāļāļāđāļ§āļĒāļāļāļēāļāđāļāļĩāļĒāļ 1.3 MB āđāļāļ·āđāļāđāļŦāđāđāļŦāļĄāļēāļ°āļŠāļĄāļāļąāļāļāđāļāļāļģāļāļąāļāļāļāļāļāļĢāļąāļāļĒāļēāļāļĢāļ āļēāļĒāđāļāļāļāļĢāđāļāđāļĄāļ·āđāļāđāļāļĩāļĒāļāļāļąāļāđāļāļĢāļ·āđāļāļāļāļāļĄāļāļīāļ§āđāļāļāļĢāđāļāļąāđāļ§āđāļ
arch/<architecture>
Architecture specific code
arch/<architecture>/include/asm
Architecture and machine dependent headers
arch/<architecture>/mach-<machine>
Machine/board specific code
block
Block layer code
COPYING
Linux copyright conditions (GNU GPL)
CREDITS
Linux main contributors
crypto/
Cryptographic libraries
Documentation/
Kernel Documentation. Donât miss!
drivers/
All device drivers expect sound ones (usb, pci..)
fs/
Filesystems (fs/ext3/, etc.)
include/
Kernel headers
include/linux
Linux kernel core headers
init/
Linux initialization (including main.c)
ipc/
Code used for process communication
Kbuild
Part of the kernel build system
Kernel/
Linux kernel core (very small!)
lib/
Misc library routines
MAINTAINERS
Maintain of each kernel part. Very Useful!
Makefile
Top Linux Makefile (Set arch and version)
mm/
Memory Management code
net/
Network support codes (not drivers)
README
Overview and Build Instructions
REPORTING-BUGS
Bug report instruction
samples/
Sample codes (markers, kprobes, kobjects)
scripts/
Scripts for internal or external uses
security/
Security Model Implementation (SELinux...)
sound/
Sound support codes and drivers
usr/
Code to generate an initramfs cpio archive.