跳到主要内容

Kernel

Reference

Kernel

  • Static
    • Source Code
    • Compile
    • LFS
  • Dynamic
    • Kernel API
    • Linux
    • FileSystem
      • /
      • sysfs/procfs

Source Code

Kconfig/Kbuild

  • Kernel Config
  • Kernel Build

Start

  • Kernel Setup: linux/arch/x86/boot/header.S
  • Init: linux/arch/x86/boot/main.c

System Call

  • linux/arch/x86/entry/syscalls/syscall_64.tbl
  • linux/arch/x86/entry/syscalls/syscall_32.tbl
  • linux/arch/x86/include/asm/unistd.h

Assembly System Call Number

  • linux/arch/sh/include/uapi/asm/unistd_64.h
  • linux/arch/x86/include/generated/uapi/asm/unistd_32.h

Linux Headers

  • /usr/src

Header Files

  • /usr/include

Boot

// arch/x86/boot/header.S
_start()
// arch/x86/boot/main.c
main()

Kernel SubSystem

Process Scheduler

Context Switch

TypeCost
Virtual Server
Process
Thread
System Call
Interrupt/Exception
Function Call

MMU(Memory Management Unit)

  • Page(Minimum Memory Unit)

    • getconf PAGE_SIZE
    • blockdev
  • Cache(Page Cache/CPU & Memory/Read File)

    • /sys/devices/system/cpu/cpu0/cache
  • Buffer(Buffer Cache/Memory & Disk/Write Block)

    # To free pagecache:
    echo 1 > /proc/sys/vm/drop_caches
    # To free dentries and inodes:
    echo 2 > /proc/sys/vm/drop_caches
    # To free pagecache, dentries and inodes:
    echo 3 > /proc/sys/vm/drop_caches

VFS(Virtual FileSystem)

  • Super Block(File System Metadata)
  • Inode(File Metadata)
  • Dentry(Directory Entry)
  • File

Networking Unit

IPC(Inter-Process Communication)

  • Socket
    • man socket
  • Unix Domain Socket
  • File
  • Signal
  • Pipe/Named Pipe
  • Message Queue
  • Semaphore
  • Shared Memory
  • DBUS(Desktop IPC)

File System

/proc

  • /proc/kallsyms

Misc