进程(Process)全面概述
本文档扩展了进程的定义、属性、生命周期、管理机制及示例,涵盖 task_struct
结构、进程链表、状态与优先级、fork
函数及其写时复制示例。
一、进程基本概念
- 进程:系统进行资源分配和调度的基本单位,是程序在“某数据集合”上的一次运行活动。
- 程序 vs. 进程:
- 程序:静态指令集合。
- 进程:程序的动态执行实例,包含代码、数据和状态。
// 简单示例:使用 exec 执行外部程序
#include <unistd.h>
int main() {char *args[] = {"/bin/ls", "-l", NULL};execv(args[0], args);return 0;
}
二、task_struct 结构说明
Linux 内核中以 task_struct
结构表示进程。
struct task_struct {pid_t pid; // 进程标识符enum task_state state; // 运行状态int prio, static_prio; // 动态优先级 & 静态优先级struct mm_struct *mm; // 内存管理信息struct task_struct *parent; // 父进程指针struct list_head children; // 子进程链表头struct list_head sibling; // 在父进程的子链表中的节点// ... 其他字段:寄存器、文件描述符、会计信息等
};
示例:打印当前进程的 PID 和状态。
printf("PID=%d, State=%d, Priority=%d\n", current->pid, current->state, current->prio);