Linux内核之进程的生命周期

Linux进程生命周期就这几种状态。
创建用fork。
终止要wait。
僵尸进程父进程不wait就得干掉。
PID不够了就炸,ulimit能防。
内存泄漏跟进程退无关,退了内核自己收。
状态看ps top。

Linux内核分析-操作系统是如何工作的(二)

上周,我在研究Linux内核的时候,发现了一个特别有趣的现象。
2 02 3 年,我发现Linux操作系统通过管理CPU进程、存储器、文件系统、设备驱动和网络接口等核心组件来实现工作,其中进程管理是CPU操作的核心。

首先,Linux的正常运行依赖于三个关键机制:存储程序原理、栈和中断支持。
就像冯·诺依曼体系结构一样,Linux的程序和数据需要预先加载到内存中。
CPU通过程序计数器(PC)逐条取出指令并执行,形成“取指-执行”循环。

栈的作用不可忽视,它为函数调用和进程切换提供数据存储支持。
用户态栈保存函数返回地址、寄存器状态、参数和局部变量,而内核栈则保存用户态上下文。
每个进程都有自己的8 KB内核栈,确保上下文隔离。

中断机制是CPU响应外部事件的关键。
硬件中断由设备触发,如键盘输入,而软件中断则通过系统调用主动触发,实现用户态到内核态的切换。

接下来,内核通过内核线程和中断处理程序管理进程。
进程切换的触发条件通常包括时间片耗尽、主动阻塞和高优先级进程就绪。

在切换过程中,内核栈弹栈,ESP指向进程Y的内核栈,EIP指向中断返回地址。
然后返回用户态,执行iret指令,恢复进程Y的用户态寄存器。
最后,CPU从进程Y的代码区继续运行,完成从X到Y的切换。

这一机制是操作系统支持并发、隔离和资源管理的核心。
虽然这个话题有点复杂,但我认为它对于理解Linux操作系统的工作原理至关重要。
对了,你有没有注意过,Linux内核中的调度策略选择和进程选择也是一个非常有趣的部分。
不过,这部分内容我就不确定了,你看着办吧。
算了。

Linux内核——块缓存,底层原理开发

块缓存是Linux内核加速I/O的关键。
缓冲头管理数据,状态、映射、内存关联是核心。
读数据先查缓存,没命中才从设备读。
写数据标记脏,异步回写。
与页缓存协作,一个页可能被多个块缓存共享。
BIO提升大块I/O效率。
缓冲区分配独立,页可能共享。
哈希表快速定位,LRU淘汰。
调优脏页回写,O_DIRECT绕过缓存。
vmstat监控,blktrace跟踪I/O。
理解交互,优化性能。
源码参考fs/buffer.c和include/linux/buffer_head.h。
你自己掂量。