跳到主要内容

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​