- 基本概念
- 操作系统的核心-内核
- shell
- 用户和组
- 单根目录层级、目录、链接和文件
- 文件 I/O 模型
- 程序
- 进程
- 内存映射
- 静态库和动态库
- 进程间通信及同步
- 信号
- 线程
- 进程组和 shell 任务控制
- 会话、控制终端和控制进程
- 伪终端
- 日期和时间
- 客户端/服务端架构
- 实时性
- /proc 文件系统
- 系统编程概念
- 系统调用
- 库函数
- 标准 C 语言函数库:GNU C 语言函数库 (glibc)
- 处理来自系统调用和库函数的错误
- 文件 I/O:通用的 I/O 模型
- 通用 I/O
- 打开一个文件:open
- 读取文件内容:read
- 数据写入文件:write
- 关闭文件:close
- 改变文件偏移量:lseek
- 通用 I/O 以外的操作:ioctl
- 深入探究文件 I/O
- 原子操作和竞争条件
- 文件控制操作:fnctl
- 打开文件的状态标识
- 文件描述符和打开文件之间的关系
- 复制文件描述符
- 在文件特定偏移量处的 I/O:pread 和 pwrite
- 分散输入和集中输出:readv 和 writev
- 截断文件:truncate 和 ftruncate
- 非阻塞 I/O
- 大文件 I/O
- /dev/fd 目录
- 创建临时文件
- 进程
- 进程和程序
- 进程号和父进程号
- 进程内存布局
- 虚拟内存管理
- 栈和栈帧
- 命令行参数
- 环境列表
- 执行非局部跳转:setjmp 和 longjmp
- 内存分配
- 在堆上分配内存
- 调整 program break:brk 和 sbrk
- malloc 和 free
- 其他方法
- 在堆栈上分配内存:alloca
- 用户和组
- 密码文件:/etc/passwd
- shadow 密码文件:/etc/shadow
- 组文件:/etc/group
- 获取用户和组的信息
- 密码加密和用户认证
- 进程凭证
- 实际用户 ID 和实际组 ID
- 有效用户 ID 和有效组 ID
- Set-User-ID, Set-Group-ID 程序
- 保存 set-user-ID, 保存 set-group-ID
- 文件系统用户 ID 和组 ID
- 获取和修改进程凭证
- 时间
- 日历时间
- 时间转换函数
- 时区
- 地区
- 更新系统时钟
- 软件时钟
- 进程时间
- 系统限制与选项
- 系统限制
- 在运行时获取系统限制【选项】
- 运行时获取与文件相关的限制【选项】
- 不确定的限制
- 系统选项
- 系统和进程信息
/proc
文件系统
- 获取与进程有关的信息:
/proc/PID
/proc
目录下的系统信息
- 访问
/proc
文件
- 系统标识
uname()
- 文件 I/O 缓冲
- 文件 I/O 的内核缓冲: 缓冲区高速缓存
- stdio 库的缓冲
- 控制文件 I/O 的内核缓冲
- 向内核提出 I/O 模式建议
- 绕过缓冲区高速缓存: 直接 I/O
- 混合使用库函数和系统调用进行文件 I/O
- 系统编程概念
- 设备专用文件
- 磁盘和分区
- 文件系统
- inode
- 虚拟文件系统
- 日志文件系统
- 单根目录层级和挂载点
- 文件系统的挂载和卸载: mount, umount, umount2
- 高级挂载特性
- 在多个挂载点挂载文件系统
- 多次挂载同一挂载点
- 基于每次挂载的挂载标识
- 绑定挂载
- 递归绑定挂载
- 虚拟内存文件系统: tmpfs
- 获得与文件系统有关的信息: statvfs()
- 文件属性
- 获取文件信息: stat
- 文件时间戳: utime, utimes, utimensat, futimens
- 文件属主: chown, fchown, lchown
- 文件权限
- 普通文件的权限
- 目录权限
- 权限检查算法
- 检查对文件的访问权限: access
- Set-User-ID, Set-Group-ID, Sticky 位
- 进程的文件模式创建掩码: umask
- 更改文件权限: chmod, fchmod
- Inode 标志
- 扩展属性 (Extend Attribute)
- 访问控制列表
- ACL 权限检查算法
- ACL 的长短文本格式
- ACL_mask 型 ACE 和 ACL 组分类
- getfacl 和 setfacl 命令
- 默认 ACL 与文件创建
- ACL 在实现上的限制
- ACL API
- 目录与链接
- 目录与【硬】链接
- 符号【软】链接
- 创建和移除【硬】链接: link, unlink
- 更改文件名: rename
- 使用符号链接: symlink, readlink
- 创建和移除目录: mkdir, rmdir
- 移除一个文件或目录: remove
- 读目录: opendir, readdir
- 文件树遍历: nftw
- 进程的当前工作目录
- 针对目录文件描述符的相关操作
- 改变进程的根目录: chroot
- 解析路径名: realpath
- 解析路径名字符串: dirname, basename
- 监控文件事件
- inotify API
- inotify 事件
- 读取 inotify 事件
- 队列限制和
/proc
文件
- 监控文件的就有系统: dnotify