2.2 进程的描述
目录
程序和进程的区别:
- 程序是静态的,可以理解为类的定义
- 进程是动态的,可以理解为类的生命周期
进程的特点:
- 动态性
- 并发性
- 独立性
- 异步性
时间片到 ---->【就绪】<--- 因为等待资源分配
↑ 进程调度 ---↙ 而唤醒
| | ↑
| | |
| ↓ |
【运行】--> 因为等待某个事件 ----->【阻塞】
而阻塞
上面的模型只是简单的模拟
PCB
PCB(Process Control Block)进程控制块,用于描述进程的基本信息和运行状态。
PCB 的内容:
- 进程标识符:唯一标识一个进程
- 处理机状态:包括程序计数器、寄存器、程序状态字等
- 进程调度信息:包括进程的优先级、调度队列指针等
- 进程控制信息:包括进程的状态、进程的父子关系、进程的事件、进程的特权等
- 进程所拥有的资源信息:包括打开的文件列表、内存资源、I/O 资源等
- 与其他进程的关系:包括进程链指针、同步和通信机制等
PCB 创建:
- 进程进入创建状态
- 为进程分配一个唯一的进程标识符
- 为进程分配一个 PCB
- 初始化 PCB,包括进程的状态、进程的父子关系、进程的事件、进程的特权等
- 将进程的 PCB 插入到就绪队列中
PCB 销毁:
- 进程进入终止状态
- 释放进程所占用的资源
- 释放进程的 PCB
- 将进程的 PCB 从就绪/阻塞队列中移除
挂起和激活
由于各种需求,于是将挂起和对应的激活操作加入到了原语中。
↗---- <挂起> -----↘
<时间片到> ----> [动态就绪] <-- <激活> <-- [静态就绪]
↑ <进程调度> ---↙ ↑ ↑
| | 因为等待资源分配 |
| | 而<唤醒> |
| ↓ ↑ |
[运行] | <唤醒>
| | |
| | |
↓ | |
因为等待某个事件 --> [动态阻塞] --> <挂起> --> [静态阻塞]
而<阻塞> ↖--- <激活> -----↙