进程
-
fork:复制当前进程创建子进程。父子进程地址空间独立(写时复制 COW)
-
vfork:创建子进程但共享父进程地址空间,子进程必须立刻 exec/exit,否则会破坏父进程
-
clone:fork/pthread/container 的底层基础
-
execve:在当前进程中装载新程序
-
pause:进程挂起
-
exit / exit_group:线程、进程退出
-
wait:等待子进程退出,不 wait 就会产生僵尸进程
-
waitpid:等待指定 PID 的子进程
-
wait3:wait + 资源使用统计(rusage)
-
wait4:新一代
-
getpid:获取当前进程 PID
-
getppid:获取父进程 PID
-
setpgid:把进程加入/创建进程组
-
setsid:创建新会话
-
tcgetpgrp:查询前台进程组
-
tcsetpgrp:设置前台进程组
-
setuid:改变进程有效 UID
-
setgid:改变进程有效 GID
-
capset:设置 Linux Capability
-
prctl:通用进程控制接口
-
seccomp:系统调用过滤沙箱
-
getrlimit:查询进程资源限制(栈大小、文件数、CPU时间等)
-
setrlimit:设置进程资源限制(ulimit 的内核接口)
线程
-
setjmp:保存执行上下文
-
longjmp:非正常跳转
-
futex:用户态自旋 + 内核阻塞的最底层锁与条件变量原语
-
set_robust_list:线程异常退出时自动解锁 futex
-
sleep:秒级睡眠(基于 alarm + pause 实现)
-
nanosleep:纳秒级高精度睡眠
-
clock_nanosleep:指定时钟源的精确睡眠(单调/实时时钟)
内存
-
malloc:C 库堆分配器,内部用 brk + mmap 管理内存池
-
free:释放 malloc 分配的块(可能不立即归还内核,只回到用户态缓存)
-
mmap:分配虚拟内存,现代 malloc 的主力
-
munmap:销毁一个 VMA 映射区域,直接把虚拟地址空间还给内核
-
brk / sbrk:堆扩展,malloc 的老路径
-
remap_file_pages:重排页映射
-
msync:将内存映射区域的修改内容同步到磁盘文件
-
sync:刷新所有脏页
-
fsync:刷新某个 FD 的数据 + 元数据
-
fdatasync:只刷数据(更快)
-
mprotect:修改某个 VMA 的访问权限(R/W/X)
-
madvise:向内核提示该内存区域的使用模式(顺序访问/随机/不要换出等)
-
mincore:查询驻留页
IO
-
select:最早期的 I/O 多路复用接口,使用位图扫描 fd,O(n),有 1024 限制
-
poll:改进 select,使用数组,突破 fd 上限,但仍是 O(n)
-
pselect:select + 原子信号屏蔽控制,解决 select 信号竞态问题
-
epoll:Linux 专用高性能事件通知机制,O(1) 级,基于就绪事件回调
- epoll_create:创建 epoll 实例(一个内核事件调度对象)
- epoll_ctl:向 epoll 注册、修改、删除监听的 fd 及事件
- epoll_wait:等待内核推送就绪事件(阻塞或超时)
-
eventfd / signalfd / timerfd:把信号/定时器/事件变成 epoll fd
-
io_uring:新一代内核异步 I/O 框架(替代 epoll + aio)
-
read / write:从 FD 读取 / 写入字节流(同步阻塞 IO)
-
pread / pwrite:带偏移的读写,不改变文件指针(线程安全)
-
sendfile / copy_file_range:内核零拷贝文件传输
-
readn / writen:保证读满 / 写满
-
readv / writev:向量 I/O,一次 IO 读写多个 buffer,减少 syscall 次数
文件
-
open:打开或创建文件,返回文件描述符 fd
-
openat:相对某个目录 fd 打开文件(解决路径竞态、沙箱安全)
-
openat2:新一代 open,支持 RESOLVE_* 沙箱约束
-
creat:等于open(O_CREAT|O_WRONLY|O_TRUNC)
-
close:关闭 FD,引用归零则释放资源
-
mkdir / rmdir:创建/删除目录
-
mount / umount:挂载/卸载
-
pivot_root:切换根文件系统
-
rename:重命名路径
-
unlink:删除文件名(目录项),可能延迟真正释放 inode
-
link / symlink:创建硬链接 / 符号链接
-
dup / dup2 / dup3:FD 复制与重定向(共享同一 file 结构)
-
lseek:改变"文件读写指针偏移"
-
SEEK_DATA / SEEK_HOLE:查询稀疏文件数据/空洞区间
-
ioctl:万能控制通道
-
fcntl:通用 fd 控制(flags、锁、dup),epoll / NIO 的开关
- O_NONBLOCK:非阻塞
- F_SETFL:修改 flag
- F_SETLK:文件锁
- F_DUPFD:复制 FD
- FD_CLOEXEC:exec 时自动关闭
-
stat(path):通过路径查询 inode 信息
-
lstat(path):通过链接查询 inode 信息
-
fstat(fd):通过fd 查询 inode 信息
-
fstatat(dirfd,path,flags):相对目录查询
-
statx:新一代扩展 stat
-
access:按真实 UID/GID 测权限
-
faccessat:相对目录版测权限
-
chmod:路径权限修改
-
fchmod:FD权限修改
-
fchmodat:相对目录权限修改
-
chown 改属主
-
fchown:改FD
-
fchownat:改相对目录
-
lchown:改链接本身
信号
-
kill:向指定 PID 发送信号(可杀、可唤醒、可通知)
-
tgkill / gkill:向指定线程发送信号(线程级 kill)
-
abort:发送 SIGABRT 给自己并生成 core dump
-
sigaction:安装信号处理函数
-
sigprocmask:设置当前线程的信号屏蔽字
-
sigpending:查询当前被屏蔽但已到达的信号
-
sigsuspend:原子性解除屏蔽并进入睡眠,直到信号到来
-
sigqueue:带数据的信号发送(实时信号)
时间
-
clock_gettime:读取指定时钟源的当前时间(ns 精度)
-
clock_getres:查询该时钟的分辨率
-
clock_settime:设置系统实时时钟
-
setitimer:设置进程间隔定时器,到期发送 SIGALRM/SIGVTALRM
-
alarm:setitimer(ITIMER_REAL) 的秒级简化接口
-
ualarm:微秒级 alarm
-
timerfd_create:创建一个"定时器文件描述符"
-
timerfd_settime:启动/修改定时器
-
timerfd_gettime:查询剩余时间
-
hrtimer:高精度定时器核心
-
jiffies:低精度时间轮刻度
-
timekeeping:时钟源管理层
限制
- sysconf:查询系统范围内的运行时限制或配置信息
- _SC_OPEN_MAX:每进程最大打开文件数
- _SC_PAGESIZE:页面大小
- pathconf:查询指定路径(目录或文件)相关的运行时限制
- _PC_NAME_MAX:目录项名最大长度
- _PC_PATH_MAX:路径最大长度
- fpathconf:查询已经打开的文件描述符对应文件/路径的运行时限制
设备
-
mknod:创建字符设备、块设备或命名管道(FIFO)文件。用户空间系统调用,内核创建 cdev 或 block_device
-
open / release:设备文件的打开和关闭操作
-
kmalloc / kfree:分配任意大小的内核内存
-
vmalloc / vfree:分配虚拟连续但物理不连续的内存
-
get_free_page:分配单页物理内存,返回页对齐指针,常用于 DMA 或 page cache
-
ioperm:设置单个端口 I/O 访问权限(通常给 root 使用)
-
iopl:设置整个进程的 I/O 权限级别(ring 0-3),可以直接执行 in/out 指令
-
inb/outb/inw/outw:直接访问 I/O 端口的指令(x86 体系)
-
request_region / release_region:内核请求/释放 I/O 端口范围,防止冲突
Socket
-
bind:将套接字绑定到本地 IP + 端口。TCP/UDP 服务器必须调用。
-
listen:监听 socket;SYN 半连接队列、accept 完成队列
-
connect:客户端发起连接请求,阻塞直到 TCP 三次握手完成
-
accept:从内核连接队列中取出一个"已完成三次握手的 socket"
-
send / recv:基本字节流 I/O(TCP/UDP 可用),阻塞或非阻塞模式
-
sendmsg / recvmsg:支持向量 I/O、控制消息 ancillary data、recv out-of-band 等高级功能
-
close:触发 FIN / ACK / TIME_WAIT 的关闭协议
-
SO_LINGER:close 时控制 FIN 行为
-
shutdown:半关闭套接字(禁止读或写),但套接字仍有效,可继续另一方向通信
-
getsockopt / setsockopt
- TCP_NODELAY:禁用 Nagle
- SO_RCVBUF:接收缓冲
- SO_SNDBUF:发送缓冲
- SO_REUSEADDR:端口复用
- SO_KEEPALIVE:心跳
-
getsockname / getpeername:返回本地/对端 IP 端口
-
sockatmark:判断是否到达 OOB(Out Of Band)数据边界
-
socket:创建 TCP/UDP/RAW 等套接字,返回文件描述符
-
socketpair:创建一对本地(AF_UNIX)双向通信套接字,用于进程间通信(IPC)
-
domain/type/protocol:socket 参数,用于指定 AF_INET/AF_UNIX、SOCK_STREAM/RAW、IPPROTO_TCP/UDP
UDP
- sendto:向一个"无连接 socket"直接投递一个 IP 数据报
- recvfrom:从内核 UDP 收包队列中取出一个完整数据报,并告诉你是谁发的。
- dg_echo:验证 recvfrom / sendto 是否正确工作
- dg_cli:dg_echo 的客户端
- mcast_join:多播加入
inet
- inet_aton:把字符串 IPv4 → struct in_addr(二进制)
- inet_ntoa:把 struct in_addr → 字符串 IPv4
- inet_pton:字符串 → 二进制地址(IPv4/IPv6)
- inet_ntop:二进制地址 → 字符串(IPv4/IPv6)
路由
- sysctl
- tcp_fin_timeout:FIN 等待时长
- tcp_tw_reuse:TIME_WAIT 复用
- ip_forward:是否路由转发
- rmem_max / wmem_max:socket 最大缓冲
- tcp_syncookies:SYN flood 防护
- get_ifi_info
- 网卡名:eth0 / wlan0
- IP 地址
- 子网掩码
- 广播地址
- 是否 UP
- 是否支持多播
数据链路
- BPF(Berkeley Packet Filter 分组过滤器)
- tcpdump 的过滤规则
- 防火墙 iptables/nftables
- Android 的 netd / VPN / SELinux 网络隔离
- DLPI(Data Link Provider Interface):ARP / IP / PPP
- libpcap:用户态抓包库,基于 BPF 或 pcap 驱动抓取网络流量,可用于 tcpdump/wireshark
- pcap_open_live
- pcap_compile
- pcap_loop