Linux 进程管理

概述:

Linux进程管理子系统主要负责进程的创建,调度,同步和终止。主要组件及其相互关系如下图表示:

+-------------------------------------------------+
|              进程管理子系统                       |
| +-----------------—+     +-------------------+   |
| |     进程创建      |     |     进程终止      |    |
| |(fork,vfork,clone)|     |(exit,exit_group)|   |
| +------------------+      +------------------+    |
|          |                        ^             |
|          V                        |              |
| +-----------------—+     +------------------+     |
| |     进程调度(CFS)|     |     信号传递      |    |
| |(fork,vfork,clone|     |-kill,sigaction    |    |
| +------------------+      +-----------------+    |
|          |                        ^              |
|          V                        |              |
| +-----------------—+     +------------------+     |
| |     上下文切换    |     |   进程间通信(IPC) |    |
| |(task_switch)    |     |   -管道,套接字, |    |
| | -保存/恢复寄存器  |     |   -共享buffer    |    |
| | -切换内存映射    |     |    -futex         |    |
| +------------------+     +------------------+    |
|          |                                      |
|          V                                      |
| +-----------------—+     +------------------+    |
| |     进程状态      |     |   资源统计和控制  |    |
| |-TASK_RUNNING     |     |  -cgrops, rlimit|    |
| |-TASK_INTERRUPTIBLE|     | -OOM Killer     |    |
| |-TASK_UNINTERRUPTIBLE|  |                  |    |'
| |-TASK_STOP        |     |                  |    |
| |-TASK_DEAD        |     |                  |    |
| +------------------+     +-----------------+    |
+-------------------------------------------------+

工作流程

1.创建:分配并初始化task_struct,加入全局任务链表。
2.调度:调度器根据策略和优先级将任务放入相应的运行队列。
3.上下文切换:CPU空闲时,task_switch将当前任务的状态保存并加载下一个任务的状态。
4.运行状态:任务不同的进程状态之间的切换,收I/O,信号等时间驱动。
5.信号处理:信号可以中断任务,导致任务变化或直接终止。
6进程间通信:通过IPC机制实现协作与同步。
7.终止:任务完成后调用exit,释放资源并通知父进程,随后资源统计子系统更新使用统计,必要时出发OOM Killer.

posted @ 2026-07-01 11:42  knight_xsx  阅读(3)  评论(0)    收藏  举报