软件工程

Ch 3 文件IO

本文深入探讨Unix/Linux文件I/O核心机制,涵盖文件描述符操作、共享、原子操作及高级I/O策略。详细解析open/read/write等系统调用、文件表与inode结构、以及描述符复制原理。同时对比缓冲I/O、直接I/O与内存映射(mmap)的性能差异与应用场景,涉及预读技术、同步操作(fsync)和块对齐要求,为开发者优化文件系统性能提供关键技术指导。

2026年1月26日

Ch 5 标准 IO stdio.h

本文深入探讨C语言标准IO库(stdio.h)的核心机制,重点解析流的概念与缓冲区的三种模式。详细介绍了全缓冲、行缓冲和无缓冲的工作原理及其应用场景,如磁盘文件全缓冲、终端行缓冲和错误流无缓冲。同时涵盖字符/行IO、格式化输入输出以及内存流与临时文件的实现。通过自动缓冲区管理和优化的块长度操作,标准IO库有效减少了系统调用次数,提升了程序性能与安全性。

2026年1月26日

Ch 7 进程环境

探索进程的运行环境与生命周期。本文详解进程的终止方式,包括正常退出(如从main返回、调用exit)与异常终止(如调用abort、收到信号)。深入分析进程环境变量(environ指针、getenv/putenv操作)的存储与管理机制,以及程序内存空间的经典布局(栈、堆、初始化/未初始化数据段等)。同时,介绍了动态内存分配函数(malloc、calloc、realloc、free)的工作原理与潜在的内存泄露问题,并讲解了使用setjmp和longjmp实现非局部跳转以处理深层嵌套错误的方法。

2026年1月26日

Ch 8 进程控制

本篇文章深入解析了UNIX/Linux系统中的进程控制机制,涵盖了进程ID分配与复用原则、fork系统调用实现原理及其共享机制、写时复制技术、父子进程执行顺序等关键技术点。详细阐述了进程创建、终止(exit)、等待(wait/waitpid)以及程序替换(exec)的核心操作流程,并介绍了进程会计与调度策略,为深入理解系统级并发编程提供了重要理论基础。

2026年1月26日

Ch 10 信号

本文档详细阐述了操作系统信号机制的核心概念与技术实现。信号是处理异步事件的IPC方法,可由终端、硬件异常、kill函数或软件条件(如SIGSEGV)产生。内核支持忽略(除SIGKILL/SIGSTOP)、捕捉(执行用户函数)或执行默认动作三种处理方式。关键点包括:使用signal()注册回调函数、信号在exec后的重置、子进程对处理方式的继承、信号处理程序的可重入性要求、以及信号的产生、未决与递送状态。文档还涵盖了信号屏蔽与阻塞递送、信号集数据结构、中断系统调用的处理,并以abort函数的强制终止行为为例,说明了信号在进程同步与异常清理中的应用。

2026年1月26日

Ch 11 线程

文章深入解析多线程编程的核心机制与应用优势,涵盖线程创建(pthread_create)、线程终止的三种方式及其对进程的影响、关键数据结构以及线程同步技术。重点介绍了互斥量、读写锁、条件变量和屏障等同步原语,以解决资源竞争与协调问题,确保数据安全与程序高效运行。适用于提升程序吞吐量、响应时间及资源共享效率。

2026年1月26日

Ch 12 线程控制

本文深入探讨了多线程编程中的核心控制机制。文章详细解析了线程的系统限制、状态管理(结合与分离)、可重入函数、线程私有数据(如errno)、fork操作对互斥锁的影响以及并发文件读写问题。关键技术点包括使用sysconf查询线程资源、通过pthread_atfork处理fork后的锁清理,以及利用pread/pwrite函数实现线程安全的原子I/O操作,以解决多线程环境下的数据一致性问题。

2026年1月26日

Ch 14 高级IO

本文探讨了UNIX环境高级I/O技术的核心机制。详细解析了使用`fcntl`实现的POSIX记录锁,包括其共享读锁与独占写锁的类型、区间操作及与数据库锁的相似性,并说明了其在`fork`与`exec`环境下的继承行为。文章进一步对比了系统编辑器的局限性,并深入介绍了I/O多路转接技术(`select`与`poll`)、POSIX异步I/O(AIO控制块与异步读写操作)以及存储映射I/O(`mmap`)的原理与应用要点,为开发者处理高效、并发文件操作提供了关键技术指导。

2026年1月26日

Ch 15 进程间通信

本文探讨了Unix/Linux系统中的核心进程间通信机制。主要内容包括:匿名管道在父子进程间的单向数据传输;命名管道支持不相关进程通信,常用于客户端/服务器架构;XSI IPC中的消息队列、信号量和共享存储,分析其引用计数和标识符管理的优缺点;以及性能更优的POSIX信号量,通过计数和阻塞机制实现进程同步。文章系统比较了不同技术的关键特征和应用场景,帮助开发者选择适合的高效通信方法。

2026年1月26日

Ch 17 高级进程间通信

本文探讨UNIX域套接字作为同一主机内进程间通信的高效解决方案。核心主题在于其相比因特网套接字更优的性能,因其无需网络协议处理,仅专注于数据传输。关键技术点包括其作为全双工管道(fd 管道)的通信能力,支持socketpair创建匿名套接字,或绑定.socket地址创建命名套接字。应用上,它不仅解决了传统消息队列无法使用select/poll进行多路复用的限制,更通过send_fd实现进程间文件描述符的直接传递,使进程能够共享文件偏移量,避免了大量数据拷贝,极大地提升了效率。

2026年1月26日