进程之舞:操作系统中的启动、状态转换与唤醒艺术

 
✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭
~✨✨

🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。

我是Srlua,在这里我会分享我的知识和经验。🎥

希望在这里,我们能一起探索IT世界的奥妙,提升我们的技能。🔮

记得先点赞👍后阅读哦~ 👏👏

📘📚 所属专栏:操作系统

欢迎访问我的主页:Srlua小谢获取更多信息和资源。✨✨🌙🌙

目录

进程队列

1.线性方式

2.链接方式

3.索引方式

进程管理

进程图

进程创建

1.引起创建进程的事件:

2.进程的创建过程(创建原语)

进程终止

1.引起进程终止的事件

2.终止进程的主要操作过程!

进程阻塞

1.引起进程阻塞的事件

2.进程阻塞的过程

进程唤醒

唤醒过程


进程队列

为了便于查找,系统把所有的PCB用适当的方式组织起来,一般有以下三种形式

(1)线性方式

(2)链接方式

(3)索引方式

1.线性方式

优点:管理简单,不需要额外的开销,容易实现。

缺点:限定了最大进程数目;降低调度效率,挑选一个适合运行的PCB须对表项扫描,平均要花费查半个PCB表长的时间;不适合频繁进程调度。

早期的UNIX系统就是采用这种方式。


2.链接方式

  • 把处于同一状态的进程按照一定方式链接成一个队列。

>就绪队列

>阻塞队列:根据不同的阻塞原因组织成多个阻塞队列

  等待磁盘I/0队列

  • 等待磁带I/O队列每一个队列有一个专用队列指针指出该队列中第一个进程PCB所在位置。 
  • 现代Unix采用这种方式。

 ​ 

  • 链接方式优点

管理方便,PCB进程数目不受限制,使用灵活,检索速度和内存使用效率可以提高

  • 链接方式缺点

动态分配内存的算法比较复杂;队列的操作(如挂链,摘链)也花费时间


3.索引方式

用索引表记载进程的PCB地址

相同状态的进程在同一索引表中;

不同状态的,分别设置各自的PCB索引表

  • 就绪索引表
  • 阻塞索引表

 ​ 

  • 索引方式优点

索引方式是线性表方式的改进,克服了线性表的缺点,检索速度快

  • 索引方式缺点

通常须采用多张索引表,增加所占内存空间;加大管理难度

  • 由于单CPU的计算机系统中,任何时候只有一个进程处于运行状态。
  • 系统专门设置一个指针指向当前运行进程的PCB。
  • UNIX系统中就有一个CURPRO指针,指向现运行进程的PCB。

进程管理

进程图

进程图(进程家族图)--Process Graph

  • 描述进程家族关系的有向树一棵进程树表示一个家族,根结点是祖先。
  • 一个子进程只有一个父进程
  • A——B: A是B的父进程   B是A的子进程

进程创建

1.引起创建进程的事件:

(1)系统初始化:当开机引导OS时,会创建许多进程

(2)派生新进程:应用进程利用系统调用创建一个或多个进程,使新进程以并发方式完成特定任务,

(3)用户请求:为完成用户提出的某些请求

(4)调度新作业:批处理系统中为每个提交的作业创建相应的进程

2.进程的创建过程(创建原语)

        PCB是进程存在的唯一标识,所以创建一个进程的主要任务是为其建立一个PCB。

使用创建原语创建进程的过程

  • 申请一个空闲的PCB
  • 为新进程分配空间
  • 初始化PCB
  • 将新进程插入就绪队列

UNIX/Linux中的fork()系统调用实现进程创建功能。

​ 

进程终止

1.引起进程终止的事件

(1)正常终止

(2)异常终止

(3)外部干扰:进程应外界的请求而终止运行

2.终止进程的主要操作过程!
  • 找到指定进程的PCB,终止该进程的运行
  • 回收该进程所占用的全部资源
  • 终止其所有子孙进程,回收它们所占用的全部资源。
  • 将被终止进程的PCB从原来队列中摘走,以后由父进程从中获取数据,并释放它

进程阻塞

1.引起进程阻塞的事件

        处于运行状态的进程,在其运行过程中期待某一事件发生,当被等待的事件还没有发生时,由进程自己执行阻塞原语,使自己由运行态变为阻塞态。

  • 等待键盘输入:
  • 等待磁盘的数据传输完成;
  • 等待其它进程发送一个信息

当某进程期待的事件已经到来时,唤醒进程

2.进程阻塞的过程
  • 立即停止当前进程的执行
  • 将现行进程的CPU现场保存
  • 将该进程的现行状态由“运行”改为阻塞
  • 转到进程调度程序

进程唤醒

处于阻塞状态的进程不能唤醒自己,必须由它的合作进程用唤醒原语唤醒它。

唤醒过程

唤醒原语执行过程如下:

  1. 把阻塞进程从相应的阻塞队列中摘下。

  2. 将现行状态改为就绪状态,然后把该进程插入就绪队列中。

  3. 如果被唤醒的进程比当前运行进程的优先级更高则设置重新调度标志。

​​

希望对你有帮助!加油!

若您认为本文内容有益,请不吝赐予赞同并订阅,以便持续接收有价值的信息。衷心感谢您的关注和支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/519256.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nmaptocsv.py脚本无法处理结果的备用工具

python nmaptocsv.py -i test.nmap -f ip-fqdn-port-protocol-service-version。 一: 使用背景: 使用一些其他的端口扫描软件,指纹识别可能有些端口 如一次:11011端口是mysql数据库但是别的软件扫不出来是mysql,借助nmap对1101…

基类指针指向派生类对象,基类不带虚函数,子类带虚函数产生的异常分析

基类指针指向派生类对象,基类不带虚函数,子类带虚函数产生的异常分析 基类指针指向派生类对象,指针的起始地址一定是指向基类起始地址的 这种情况下,当基类没有虚函数,而子类存在虚函数时,就会出现问题&am…

lqb省赛日志[1/37]

一只小蒟蒻备考蓝桥杯的日志 文章目录 笔记mod进制转换轻轻崩溃前缀和 差分双指针(夹逼)人脑思维...->计算机思维历史遗留问题1--22年B组初赛历史遗留问题2--试题 基础练习 阶乘计算 刷题心得小结 笔记 mod 进制转换 进制转换——颠覆小蒟蒻认知了…

Java开发从入门到精通(一):Java的基础语法高阶

Java大数据开发和安全开发 (一)Java的流程控制1.1 分支语句1.1.1 IF分支语句第一种IF语句第二种IF-ELSE语句第三种IF-ELSE IF-ELSE语句if语句使用的几个常见问题 1.1.2 switch分支语句switch分支的执行流程switch分支的导学案例:电子备忘录if、switch的比较&#xf…

回南天的解决方案

广东的回南天还是那么湿,各种短视频在秀。 墙上流水 楼顶滴水 厕所镜子看不到人 出门滑行 衣服永远是湿的 湿度100%! 那么这个让人难受的回南天,除关门关窗,还有没有更好的解决方案??(小…

论文阅读_世界模型

1 2 3 4 5 6 7 8英文名称: World Models 中文名称: 世界模型 链接: https://arxiv.org/abs/1803.10122 示例: https://worldmodels.github.io/ 作者: David Ha, Jurgen Schmidhuber 机构: Google Brain, NNAISENSE, Swiss AI Lab, IDSIA (USI & SUPSI) 日期: 27 Mar 2018 引…

django中URL配置和视图渲染

前提: 使用django-admin startproject XXX创建了一个django项目【项目目录为project】 django-admin startproject project 一:控制器配置 在项目的根目录创建一个Controller目录,后续所有的控制器方法都放在此目录下 这里我们在Control…

vue基础教程(4)——深入理解vue项目各目录

博主个人微信小程序已经上线:【中二少年工具箱】。欢迎搜索试用 正文开始 专栏简介1. 总览2. node_modules3.public4.src5.assets6.components7.router8.stores9.views10.App.vue11.main.js12.index.html 专栏简介 本系列文章由浅入深,从基础知识到实战…

Vue+OpenLayers7入门到实战:OpenLayers7如何使用gifler库来实现gif动态图图片叠加到地图上

返回《Vue+OpenLayers7》专栏目录:Vue+OpenLayers7 前言 OpenLayers7本身不支持gif图片作为图标要素显示到地图上,所以需要通过其他办法来实现支持gif图片。 本章介绍如何使用OpenLayers7在地图上使用gifler库先生成canvas画板,然后通过canvas画板的重绘事件来重新渲染地图…

OpenAI-Sora学习手册

通过Sora看2024红利:文生视频,虽然AI不一定是风口,但一定是未来深入到生活工作,乃至思考的必备工具。 目录 Sora介绍 Sora基础介绍 Sora官方网址 Sora的价值 1.物理世界的交互 2.创意世界的绽放 3.多角色、更精准、更细节…

vue3基础教程(3)——引入ui框架iview(viewui)

博主个人微信小程序已经上线:【中二少年工具箱】。欢迎搜索试用 正文开始 专栏简介1. 下载iview2.更新资源3.引入插件4.运行项目 专栏简介 本系列文章由浅入深,从基础知识到实战开发,非常适合入门同学。 零基础读者也能成功由本系列文章入门…

Ajax、Axios、Vue、Element与其案例

目录 一.Ajax 二.Axios 三.Vue 四.Element 五.增删改查案例 一.依赖:数据库,mybatis,servlet,json-对象转换器 二.资源:elementvueaxios 三.pojo 四.mapper.xml与mapper接口 五.service 六.servlet 七.html页…