一.进程
1.进程概念
1.1进程的定义
进程是程序在某个数据集上的一次运行活动
| 结构 | 说明 |
|---|---|
| 进程控制块 PCB | 进程存在的唯一标识,包括进程描述信息、控制信息、资源分配信息等。 |
| 程序段 | 能被进程调度到 CPU 执行的代码。 |
| 数据段 | 进程对应的程序加工处理的原始数据。 |
1.2.进程的特征
- 动态性:进程是程序的一次执行,动态产生和消失
- 并发性:多个进程可以同时存在于内存中,在一段时间内同时运行。
- 异步性:进程按照各自的速度前进
- 独立性:进程是一个能独立运行、独立接受调度的单位。
1.3.进程和程序的区别
- 进程(程序的一次执行过程)是动态的,程序(一组指令的有序集合)是静态的。
- 进程是暂存的,在内存驻留;程序是长存的,在介质上长期保存。
- 一个程序可能会有多个进程。
1.4.进程的状态
| 状态 | 说明 |
|---|---|
| 创建态 | 进程正在被创建,尚未转到就绪态。 |
| 就绪态 | 进程已处于准备运行的状态,获得了除处理机外的一切资源。 |
| 运行态 | 进程正在处理机上运行。 |
| 阻塞态 | 进程正在等待某一事件而暂停运行,如等待某资源可用或等待 IO 流完成。 |
| 结束态 | 进程正常结束或中断退出。 |
1.5.进程状态变迁
- 就绪 ==> 运行: 进程调度
- 运行 ==> 就绪: 时间片到 / 被强占
- 运行 ==> 阻塞:请求服务 / 等待信号
- 阻塞 ==> 就绪:服务完成 / 信号来到
1.6.Linux 进程状态
- 可运行态: 就绪态和运行态都称为可运行态
- 阻塞态:浅度阻塞(可以被唤醒)/深度阻塞(不可被唤醒)
- 僵死态:进程终止执行,释放大部分资源
- 挂起态:进程被挂起

1.7.进程控制块(Process Control Block, PCB)
- 描述进程状态,资源,和与相关进程关系的数据结构
- PCB 是进程的标志
- 创建进程时创建PCB,进程撤销时PCB同时撤销
由此:进程 = 程序 + PCB,每创建一个PCB,就创建了一个进程

PCB中的基本成员:
- name (ID): 进程名称(标识符)
- status:状态
- next:指向下一个PCB的指针(方便操作系统遍历进程)
- start_addr:程序地址
- priority:优先级
- cpu_status:现场保留区(堆栈)
- common_info:进程通信
- process_family:家族
- own_resource:资源
1.8 进程的同步和互斥
同步:若干个进程为了合作完成某一共同任务,需要相互协调运行步伐,一个进程开始某个操作之前必须要求另一个进程已经完成某个操作,否则只能等待。
互斥:多个进程由于共享了独占性资源,必须协调各进程对资源的存取顺序,以确保没有任何两个或者以上的进程同时进行存取操作。
经典同步问题:生产者和消费者
1.9 孤儿进程和僵尸进程
孤儿进程(Orphan Process) 是指在操作系统中,父进程已经终止或退出,但其子进程仍然在运行的情况。这些子进程失去了与父进程的联系,因此被称为“孤儿进程”。
操作系统会将这些孤儿进程的父进程设置为 init 进程(在 Linux 系统中,通常是 PID 为 1 的进程),由 init 进程负责管理它们的生命周期。
孤儿进程的产生原因
- 父进程意外终止:父进程由于崩溃、被强制终止或异常退出,未能正确等待子进程结束。
- 父进程未调用
wait()或waitpid():父进程没有显式地等待子进程结束,导致子进程在父进程退出后继续运行。
孤儿进程的特点
- 父进程为 init:孤儿进程的父进程会被操作系统重新设置为 init 进程。
- 不会成为僵尸进程:孤儿进程最终会被 init 进程回收,因此不会成为僵尸进程。
- 资源占用:孤儿进程会继续占用系统资源,直到它们自己退出或被终止。
孤儿进程与僵尸进程的区别
| 特性 | 孤儿进程 | 僵尸进程 |
|---|---|---|
| 定义 | 父进程已终止,子进程仍在运行。 | 子进程已终止,但父进程未回收其资源。 |
| 父进程 | 被操作系统重新设置为 init 进程。 | 仍然是原来的父进程。 |
| 资源占用 | 占用系统资源,直到退出或被终止。 | 不占用系统资源,但占用进程表项。 |
| 处理方式 | 由 init 进程回收。 | 需要父进程调用 wait() 或 waitpid() 回收。 |
孤儿进程的处理
- 由 init 进程回收:操作系统会自动将孤儿进程的父进程设置为 init 进程,由 init 进程负责回收其资源。
- 避免孤儿进程:
- 父进程应显式调用
wait()或waitpid()等待子进程结束。 - 使用信号处理机制(如
S
- 父进程应显式调用

最低0.47元/天 解锁文章
1576

被折叠的 条评论
为什么被折叠?



