进程
- 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