Skip to content

Kernel data structure

TODO: 各种各样的table

kernel管理着OS的一切资源,因此,它一般使用table来进行管理,比如:

table 简介 参考
进程表 记录OS中的所有的process
文件表 记录OS中所有的打开的文件 APUE
socket table 记录OS中的所有的socket - ss(8) - Linux man page
- wikipedia TCP#Resource usage
Routing table 记录路由规则 wikipedia Routing table

底层采用何种data structure来进行实现,需要考虑多重因素:

  • 查找的时间复杂度
  • 空间复杂度

TODO: Entry of table

前面介绍了table,现在介绍entry of table,一般entry of table被称为:

  • ******control block
  • ******descriptor

比如:

table entry 参见
socket table Transmission Control Block or TCB - wikipedia TCP#Resource usage

各种各样的descriptor

各种各样的descriptor,以及其对应的数据结构

Descriptor Chapter Struct Source Code
Process Descriptor 3.2. Process Descriptor task_struct - https://github.com/torvalds/linux/blob/master/include/linux/sched.h
- https://elixir.bootlin.com/linux/latest/ident/task_struct
Memory Descriptor 9.2. The Memory Descriptor mm_struct - https://elixir.bootlin.com/linux/latest/ident/mm_struct
- https://github.com/torvalds/linux/blob/master/include/linux/mm_types.h
Page Descriptor 8.1.1. Page Descriptors page - https://elixir.bootlin.com/linux/latest/source/include/linux/mm_types.h#L68

Task State Segment Descriptor

3.3. Process Switch

Global Descriptor Table

memory descriptor

signal descriptor

file descriptors

Interrupt Descriptor Table