「操作系统」进程状态模型

本篇文章想简单谈谈进程状态模型的演变.

 

 

进程

 

进程由程序代码, 相关数据集与进程控制块(Process control block, 简称PCB)所构成. 当处理器开始执行这段代码时, 我们将执行的实体称为进程, 即计算机中已运行的程序.

与进程相关的一些控制信息都保存在进程控制块中, 进程控制块是操作系统支持多进程的关键. 进程控制块中的状态字段用于记录进程目前所处的状态.

进程派生即在一个进程中创建一个新进程, 原先的进程为父进程, 新进程为子进程.

 

 

两状态进程模型

 

两状态进程模型认为某个时刻, 一个进程要么是”运行”状态, 要么就是”非运行”状态.

进程创建后为”非运行”状态, 获得CPU调度后转变为”运行”状态, 失去调度则转变为”非运行”状态, 周而复始, 直到程序执行完毕, 释放所占用资源.

二状态模型非常简洁, 实际上由于处理器同时只能执行一个进程, 而进程常常会等待I/O发生, 此时处理器是空闲的, 为了尽可能利用处理器, 由此衍生出五状态模型.

 

 

五状态进程模型

 

除了新增”新建”和”结束”两状态, 还增加了”阻塞”状态.

"运行"至"阻塞"状态

处理器执行的进程在等待I/O时, 会从”运行”状态置为”阻塞”状态, 此时处理器会从”就绪”状态的进程中选择一个执行.

 

"阻塞"至"就绪"状态

等到I/O事件发生后, 进程才从”阻塞”状态置为”就绪”状态, 并在就绪队列中等待被处理器再次调度执行.

 

"新建"至"就绪"状态

"新建"状态时, 仅仅创建了PCB的信息. "新建"到"就绪"需要经过加载, 即为程序在内存中开辟相应空间.

 

“运行”至”就绪”状态

状态转变是由于时间片的缘故, 处理器虽然同时只能执行一个程序, 但分时操作系统会设置一个时间片, 即每个进程可获得一段处理器执行时间. 多个进程按序获得处理器调用, 并执行时间片的时间, 从而营造出多个程序是同时运行的假象. 进程执行满相应时间片的时间后, 会从”运行”状态置为”就绪”状态.

 

五状态模型看上去比较完善了, 但实际上还是会有问题.

我们知道只有在内存中的程序才会被处理器调用执行, 故所有等待被执行的程序都要首先被放入内存, 但内存是有限的, 有可能会出现不能调入所有待执行程序的情况, 而处理器速度非常快, 所以会出现内存中所有进程都被处理器执行了一遍, 都在等待I/O事件(即都是”阻塞”状态), 此时处理器空闲了, 却不能处理未进入内存的待执行程序.

针对上面这个问题, 可以通过不断增加内存大小来解决. 但还是有问题, 内存价格与大小是指数相关的, 不能一味增加大小. 因此操作系统引入了挂起(交换)的概念, 即内存已满时, 操作系统会将内存中等待I/O的进程(即”阻塞”状态)移动到硬盘中, 并从硬盘中调入新的"就绪"进程. 换出的进程被放置在挂起队列中, 由此引申出了七状态模型.

 

 

七状态进程模型

 

相较于五状态模型, 新增了”挂起就绪”与”挂起阻塞”两个状态, 通过交换技术分别对应”就绪”与”阻塞”状态. 前两者在硬盘中, 后两者在内存中.

 

 

参考:

<操作系统-精髓与设计原理>(第八版) 第三章 进程描述和控制

 

文中如有不当之处, 还望包容和指出, 感谢~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值