进程的描述
进程的描述
进程的定义
- 为什么要引入进程
为了使程序可以并发执行,并且可以对并发执行的程序加以描述和控制
- PCB的作用是什么
描述进程的基本情况,进而使得系统可以控制和管理进程。
3.进程的组成
PCB +程序段 + 数据段
- 进程的定义
进程是程序的执行过程,是系统进行资源分配和调度的一个独立单位。
进程的特征
1.动态性
进程的实质是程序的执行过程。
进程由创建而产生,由调度而执行,由撤销而消亡。
- 并发性
指多个进程共存于内存之中并且能在一段时间内并发执行。
引入进程的目的就是使程序能并发执行。
- 独立性
一个进程能够独立运行、独立获得资源、独立接受调度的基本单位。
- 异步性
进程按异步方式运行,按各自独立的、不可预知的速度向前推进。
进程的基本状态
- 就绪状态
指该进程分配到了除CPU的所有必要资源,只要一获得CPU立马就能运行
如果有多个处于就绪状态的队列,OS会按照一定的规律排出就绪队列
- 运行状态
在单处理机系统之中,只会有一个进程处于运行状态
- 阻塞状态
正在执行的进程由于发生某件事而无法继续执行,此时会发生进程调度,从就绪队列中选择一个就绪进程运行,而将此进程放入阻塞队列。
进程基本状态之间的转换
创建状态
-
创建PCB的过程
-
进程申请空白PCB并写入控制和管理进程的信息
-
分配资源
-
将该进程状态转换为就绪并将其放入就绪队列中
2.引入创建状态的意义
引入创建状态是为了保证进程的调度必须要在创建工作完成后进行,以保证对PCB操作的完整性
同时也增加了系统调度的灵活性,当系统性能不足时可以不将资源分配给进程,使其一直处于创建状态
终止状态
1.进程终止的步骤
- OS进行善后处理
- 清空PCB,并将PCB空间返还给OS
2.进程终止的条件
- 进程达到了自然终止点
- 出现了无法克服的错误
- 被OS所终止
- 被其他有终止权的进程终止
3.一进入终止态就会被清零嘛
不是的,会先保留状态码和一些计时统计数据供其他进程收集,一旦其他进程收集完成就会立马撤销PCB并且将PCB空间还给OS
4.引入创建状态和终止状态后的进程转换情况
挂起操作
1.为什么要引入挂起操作
为了系统和用户观察与分析进程的需要
- 终端用户在发现程序有问题后对进程进行研究
- 父进程希望考察和修改该子进程或者协调子进程间的活动
- 系统调节负荷
- 操作系统希望检查进程运行过程中的状态信息
2.挂起操作的作用是什么
使线程进入静止状态,例如在运行状态下就会暂停执行,在就绪状态下就不接受调度
3.三个基本状态间的转换
4.五个基本状态间的转换
少了创建态到ReadyA和ReadyS的转换
创建态到ReadyS是因为系统资源不够,未能完成资源分配
5.关于挂起的一些小知识
- 挂起和释放使用Suspend原语和Active原语完成
- 静止挂起可以转变为静止就绪,这说明这期间IO是可以独立运行的
PCB
1.PCB的作用
为了便于系统描述和管理进程,OS为每个进程专门定义了一个数据结构--PCB,PCB是OS中最重要的记录型的数据结构。
总的来说PCB将一个不能并发执行的环境改造成了可以并发执行的环境。
- 作为独立运行基本单位的标志
当一个程序配置了PCB之后就表示它已经是一个能在多道程序环境下独立运行的合法的基本单位了,它已经取得了OS为它服务的权力了。
事实上,PCB已经成为了进程存在于OS中的唯一标志。 - 实现间断性运行方式
多道程序环境下,程序不是一直执行的,其在每个时间点处在其生命周期中的某一个部分。
PCB的出现使得程序因阻塞而停止运行时可以保留自己的信息,在被再次调度运行时可以恢复CPU的现场信息。 - 提供进程管理所需要的信息
当调度程序调度到某进程时,只能根据PCB中的信息找到程序和数据的起始地址。
当进程需要访问文件或者IO的时候也需要借助于PCB中的信息。 - 提供进程调度所需要的信息
PCB中保留了进城当前的状态供进程调度使用,并且在进程调度之时,往往还需要优先级、等待时间等信息 - 实现与其他进程的同步与通信
PCB中含有用于信号量机制的信号量信息,以及用于进程通信的区域或通信队列指针等。
2.PCB的信息
- 进程标识符
进程标识符用于唯一的标识一个进程,一个进程通常由两个标识符- 外部标识符
为了方便用户对进程的访问,设置外部标识符。
由创建者提供,通常由数字和字母组成。
为了描述家族关系,通常还有父进程标识符和子进程标识符
还可以设置用户标识符,用以标识该进程所属的用户 - 内部标识符
方便系统对进程的使用。
数字标识符,是一个进程的序号。
- 外部标识符
- 处理机状态
处理机状态信息,也称为处理机上下文,主要由处理机中各种寄存器内容组成。- 通用寄存器:用户可视寄存器
- 指令计数器
- 程序状态字寄存器:含有状态信息,例如条件码、执行方式、中断屏蔽标志
- 用户栈指针寄存器:指向用户进程相关系统栈的栈顶
- 进程调度信息
- 进程状态
- 进程优先级
- 进程调度所需要的其他信息
- 事件,即阻塞原因
- 进程控制信息
- 程序和数据的地址
- 进程同步和通信机制
- 资源清单
- 链接指针,给出了本进程所在队列的下一个进程的PCB的始址
3.PCB的组织方式
- 线性方式
将系统中所有的PCB都组织在一张线性表中,并且该表的起始地址存放在内存的专用区域中
优点在于实现简单并且开销小,缺点在于每次查找时都需要扫表,所以适合PCB不多的场景下。 - 链接方式
通过链接字将具有相同状态的PCB链接成一个队列,形成就绪队列,若干个阻塞队列和空闲队列。
根据阻塞原因不同将PCB分成多个PCB阻塞队列 - 索引方式
系统根据所有进程状态不同建立几张索引表,并把索引表在内存中的起始地址记录在内存的一些专用单元中。每个索引表的表目中记录具有相应状态的某个PCB在PCB表中的地址。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!