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.
浙公网安备 33010602011771号