进程管理逻辑图

  • 将多个程序拷贝到进程中,占用内存,如图扇形区域,当酷狗进程需要资源的时候,会通过I/O子系统取用资源的过程中,会放弃对cpu的占用,cpu就会处理别的进程,因此提高了cpu的利用率(I/O低速,cpu高速)
  • qq想要知道键盘输入的结果,他就会拜托I/O子系统去取键盘输入的结果,这个时候会放弃CPU的占用,CPU会重新分配给其他应用程序。当I/O取到键盘输入的数值,会把结果返回给QQ
  • 死锁中对于资源的抢占不仅仅是cpu,也有键盘、鼠标、U盘等I/O资源

  • I/O低速 CPU高速
  • 当QQ需要使用I/O获取数据的时候,会由先前的获得CPU状态变成等待CPU状态,这个过程是因为I/O阻塞从而主动放弃CPU。然后进入排队队列,状态为I/O中,阻塞。
  • 因为不同的进程对资源的要求以及获取速度的不同,有可能获得了CPU但是状态还是阻塞中,所以会短暂的获取CPU然后立刻放弃CPU,进入排队队列。这会造成CPU的资源浪费。
  • PCB存储的就是多进程状态图的状态信息

  • 排队,形成一个循环队列;只有就绪状态的进程才可以获取cpu,处于阻塞状态的进程无法获取cpu
  • 阻塞状态的成员获得cpu之后,因为I/O状态没有转备好数据,立刻放弃cpu。这个过程是低效的,应该按照进程的属性排成两个队列

  • 队列分成两种,就绪队列(I/O完)和阻塞队列(I/O),提高了CPU的利用率

进程的由来

  • 1,如果将一个程序所依赖的所有功能弄到一个进程的话,如图所示,如果网络功能进行网络资源的访问,涉及到I/O会释放对CPU的占用,因此其余的功能,比如渲染、物理引擎计算等等也会失去CPU的占用,软件会卡死;
  • 2,如果为软件的不同功能都分配一个进程,每个进程实现不同的功能,多个进程会导致时空开销大,而且存储状态信息的工具PCB有限,因此引入了线程的概念。
  • 3,两个功能进程之间切换。时空开销具体体现在上下文切换,上下文切换,是指上面涉及到的就绪、阻塞、运行状态的转换,如果切换过于频繁,在挑选PCB和修改PCB的信息,时间效率会降低;cpu执行qq程序,后切换到LOL程序,在回到qq程序,这个过程会涉及到状态信息的保存,利用栈保存当前信息,因为栈需要开辟空间,因此会带来空间开销。
  • 3,线程,将功能转化为线程。解决了进程上述提到的问题。进程是线程的容器,进程和线程同时存在。
  • 4,进程和进程之间并发,线程和线程之间并发(同一个进程不同线程;不同进程的不同线程)
  • 新事物的出现,在解决旧的矛盾的同时也会引入新的矛盾

进程和程序的区别

  • 1,程序是静态的,进程是动态的。程序就是代码,但是进程会涉及到状态的转换,就绪、阻塞和运行之间的切换,这个过程是动态的
  • 2,进程是程序的一次执行过程。
  • 3,程序和进程不是一一对应的,即以下两点
  • 一个程序对应多个进程-->多开 word程序打开不同的文档
  • 一个进程对应多个程序-->UI界面进程:QQ 360 LOL

进程的特征

  • 1,并行
  • 2,异步
  • 3,动态性:状态的转换;存储在PCB
  • 4,结构性:(描述,组织) 进程 = 程序+PCB;程序:指令段(程序段)和数据段
  • 5,独立性:资源分配,给每一个进程分配的空间都是隔离的

进程的结构

编译

  • 编译过程中,将.c文件转化为.o文件,将内部代码转化为程序段和数据段,具体转化如下:
  • a+b -> 3+2;其中a是变量名字,在编译的时候,所有的数据会汇聚在一起,所有的指令也会汇聚在一起。将数据存储到数据段,指令存储到程序段(指令段)。

链接

  • 将.o文件中的所有数据段放在一起,所有的程序段放在一起。然后形成exe运行程序
  • 程序运行的时候,将程序代码从磁盘拷贝到内存中, 也就是将数据段和程序段从磁盘复制到内存中,并且创建一个pcb模板,记录到内存中

PCB

  • 运行软件,将程序从磁盘拷贝到内存(将其指令段和程序段拷贝到内存上)上运行的同时会创建一个PCB(档案),PCB
  • PCB是进程存在的唯一标识
  • PCB存储的内容:
  • 进程标识符:唯一性,进程的数字标识,数字代表程序
  • 进程的当前状态:新建、就绪、堵塞、运行、结束
  • 进程的优先级:VIP,用于后面的程序调度
  • 代码的入口地址:程序由磁盘拷贝到内存中,入口的地址是指拷贝到内存中的起始地址,指向内存
  • 代码的外存地址:标识本段代码是从磁盘哪个区域拷贝过来的,指向磁盘
  • 进入内存的时间:从磁盘拷贝到内存的完成的时间
  • 代码段指针:指向代码段
  • 数据段指针:指向数据段
  • 堆栈指针:CPU在不同进程之间切换,用于保存现场信息

进程的状态与控制

  • 就绪:使用PCB里面的PID代表进程,使当前状态为ready,标识就绪;使用pcb进行排队
  • PCB :process control block,通过调整PCB内部参数的数值,控制不同的进程
  • 进程状态转换图-目的:便于OS监控和调度
  • *进程程序运行 需要同时具备 PCB + 内存 + CPU
  • 每种状态拥有了哪些资源?
  • 什么时候需要状态装换?
  • 状态装换需要做什么事情?(进程的控制)
  • 1,分配(申请) PCB + 内存 + CPU
  • 2,回收          PCB + 内存 + CPU
  • 3,修改PCB 中进程的当前状态
  • 例子

  • 点击QQ,CPU将代码复制到内存,并且开辟QQ_PCB,并修改当前状态为ready,由新建状态变成了就绪状态;通过pcb内部代码运行的入口地址,找到QQ程序的入口地址,cpu分配,由就绪状态变成了运行状态,改状态信息为run。cpu运行一段时间就会由一个程序跳转到另外一个程序,假设QQ占有的cpu时间到了,就会释放cpu,cpu会到360进程,因此qq从运行状态变成了就绪状态。
  • QQ发消息,因为发消息需要网卡,发消息的时候会释放CPU,由由运行状态变成阻塞block状态,当得到I/o请求,将阻塞状态变成就绪状态
  • 关闭qq程序或者异常退出,会使得qq进程终止,归还 内存、删除pcb,交还CPU,注意顺序问题

进程之间通信 IPC(Inter process communication)

os实现进程之间通信

  • 1,为什么要通信?安全性和交互性,不同进程之间创建之后,都会在内存上分配一段内存,彼此内存空间不可见(内存隔离),这个目的是为了提高安全性。但是如何在保证安全性的前提下实现进程之间交互,就需要进程通信
  • 2,通信的例子?粘贴复制,实现word和txt之间内容拷贝;天影天堂下载电影,自动启动迅雷下载,通信的内容就是电影的链接;网站登录,第三方登录选择QQ登录

  • 1,共享内存 2,消息传递 3,管道通信
  • 最后一个是管道通信,因为os可以实现和不同进程之间的通信,因此不同进程可以通过连接通信管道,实现进程之间的通信
  • 半双工是指每次双方只有一个人讲话,不可以同时说话

三级调度

  • 中级调度,比如使命召唤,整个游戏有100G,但是内存只有8G,游戏运行的时候,会根据游戏场景变化和人物的变化,动态切换,即将磁盘数据拷贝到内存中执行,对于执行完的数据,要不丢弃,要不复制到磁盘。解决内部不够问题,以及提高了内存的利用率。
  • 高级调度,第一次将数据从磁盘拷贝到内存

  • 低级调度,程序已经到达内存,cpu一个一个来执行,抢夺cpu

进程调度算法

FCFS算法 + 调度过程  first come first service

  • 算法思想:先来先服务,一次运行一个程序,只有前面的程序结束之后,才会运行下一个程序
  • 调度方式:不可剥夺,非抢占(抢占cpu)。非抢占,主动放弃;抢占,是被迫放弃。按照磁盘拷贝到内存的顺序,PCB形成一个队列,按照这个队列依次执行程序。只有前面的程序释放,后面的程序才有机会得到cpu来执行。
  • 调度时机:一个进程结束
  • 特点 : 利长不利短,利于需要占据cpu长的程序,不利于占用cpu短的程序
  • 利CPU忙,不利I/O忙;因为排队,CPU不停歇,非常忙碌;如果io频繁,会增加大量的I/O时间
  • 不利分时、实时系统;分时:cpu在不同的进程之间切换;实时,立刻调动cpu到指定的进程执行。FCFS算法不满足分时和实时系统以上的条件
  • 典型案例:打印机 银行窗口

时间片轮转算法 + 调度过程

  • 算法思想:分时间轮流获取CPU(按照队列的顺序),循环队列,适用于分时操作系统,每个进程运行指定的时间片长度然后释放cpu
  • 调度方式:可剥夺,抢占的方式
  • 调度时机:时间片用完(抢占);程序结束(主动,非剥夺)
  • 程序的运行时间如何得到的? 利用cpu的频率,得到一个周期的时间 (1/n = T),然后利用计时器(计数器)不断计数,从而得到一个时间,也就是每个进程占用执行多长时间,10ms。
  • 特点:1,时间片大小很讲究,不能太大,也不能太小
  • 2,时间片太大,退化为FCFS
  • 3,时间片太小,时空开销很大,
  • 4,适用于分时系统

SJF算法 短作业优先

  • 算法思想:优先选择短作业,运行时间由程序员提供
  • 调度方式:非剥夺 非抢占
  • 调度时机:程序结束的时候;阻塞时I/O请求
  • 特点:
  • 1,利短不利长(长饥饿)
  • 2,不可以保证紧迫作业及时运行,(用户、程序员可能提供虚假的运行时间)
  • 3,平均等待时间、平均周转时间最少
  • 4,吞吐量很大

优先级调度算法 + 调度过程

  • 算法思想:优先级级别高的优先执行,PCB里面会存一个信息,表明优先级信息
  • 调度方式:抢占式,可剥夺式;非抢占式,非剥夺式
  • 调度时机:程序结束的时候;阻塞时(I/O请求);更高优先级进程进入队列的时候
  • 特点
  • 1,满足紧迫作业的要求
  • 2,特别适用于实时系统中
  • 3,动态优先级 静态优先级
  • *优先级翻转问题

高响应比优先算法

  • 算法思想:优先选择响应比高的进程作业
  • 调度方式:无 主要用在调度作业中,从磁盘拷贝到内存
  • 调度时机 无
  • 特点:
  • 1,是FCFS(利长不利短)和SJF(利短不利长)的结合体,利用响应比来结合两者,综合利用彼此之间的优势
  • 2,克服了饥饿兼顾了长作业,有使得短作业先运行
  • 相关概念
  • 提交时间:程序从磁盘拷贝到内存,构建完成PCB
  • 等待时间:当程序拷贝到内存之后,如果有其他程序正在占用CPU,那么就需要等待,
  • 响应比rp = (等待时间 +运行服务时间)/ 运行服务时间
  • 占用CPU时间少的进程可以有限执行
  • 等待时间一定,服务时间增大,响应比越小,进程运行越靠后执行
  • 等待时间一定,服务时间减少,响应比越大,进程运行越靠前执行
  • 等待很长时间的进程也会有机会运行
  • 服务时间一定,等待时间越大,响应比越大,进程靠前执行
  • 服务时间一定,等待时间越小,响应比越小,进程靠后执行

多级反馈队列调度算法

  • 算法思想:FCFS + 优先级 + 时间片轮转 (结合体  )
  • 调度方式 综合
  • 调度时机 综合
  • 特点
  • 1,短作业优先
  • 2,周转时间短
  • 3,长作业也会得到处理

例子

  • 假设QQ、360和LOL一次来处理,分成5个级别,只有一次CPU,在第一级CPU每次执行10分钟,当QQ转型完成之后,会在第二级排队等待,cpu会执行360 10分钟,360运行完10分钟会在第二级等待,cpu执行LOL。如果第一级没有等待程序,cpu会到第二级一次执行,第二级的时间片会比第一级的时间片长,执行方式和上面一致,直到有程序执行完退出。

甘特图

  • 生产计划进度图
  • 描述多个进程之间的进度关系

调度准则介绍

1,cpu利用率  ,尽可能忙碌 FCFS

  • 11到13阶段 QQ和LOL都没有占用CPU,属于cpu空闲
  • 空闲率 = (13 - 11)/ 30
  • 使用率 = 1 - 空闲率

2,吞吐量

  • 一个程序开始到结束算一个,计算单位时间内完成程序的数量。
  • SJF算法:尽可能使执行时间最短的优先执行,因此吞吐量最大

3,周转时间

  • 结束时间到提交时间的时间差就是周转时间
  • 平均周转时间 = 所有进程的周转时间 / 进程的数量
  • 带权周转时间 = 周转时间 / 服务时间(运行时间)  永远大于1
  • 平均带权周转时间 = 所有进程的带权周转时间 / 进程的数量

4,等待时间

  • 开始时间减去提交时间

5,服务时间(运行时间)

  • 结束时间减去开始时间

调度准则之评价调度算法

同步互斥逻辑图

并发性 异步性 独立性

  • 并发性:多个进程同时执行
  • 异步性:cpu执行每个进程的代码行数,处理逻辑不同,不具有预测性
  • 独立性:进程之间不通信

临界资源和临界区

  • 临界资源:一次只能被一个进程所使用的资源
  • 软件层面:共享变量
  • 硬件层面:打印机 网卡 键盘
  • 和平精英:两个人抢同一把枪,如何判定这把枪属于哪个人?这个枪属于临界资源,需要在前面添加信号量(交通灯),信号量开始和结束的段落是临界区,信号量使得cpu在获取临界资源前进行检查,是否可以占有
  • 竞争和互斥相关
  • 同步和合作相关,体现在代码执行的运行次序方面

互斥的硬件实现方法

互斥的软件实现方法

单标志法:

  • 令牌环网(轮流传递的思想),生死系于别人;对于一个变量进行操作,使用这个变量代表说话人的身份

双标志法

  • 每个人有自己的标志
  • 但是双方可能同时检查对方的标志,有漏洞,双方同时修改,导致bug,不会同时出现为true的情形,但是会出现同时为false的情形
  • 对临界资源,竞争双方先看对方的标志位,如果对方没有对临界资源的抢占,就自己对临界资源进行抢占,并且更新标志位
  • 比如A和B抢夺资源,A的标志位为flag,B的标志位为flag;flag为true表示占有资源,flag为false,表示不占有资源。A在对临界资源的抢夺之前,会看B的标志位,如果为true,表明B占有资源,A就不可以抢占资源,如果为false,则抢占资源,并修改标志位,将自己的标志位修改为true

双标志后检查法

  • 基于双标志先检查法的优化,因为双方太谦让而导致的bug
  • 交换了两行代码的先后顺序
  • 先申明自己要抢资源,但是会导致无限等待和饥饿问题

peterson算法

  • 真正实现互斥
  • 引入一个变量

信号量的由来

  • 信号量使cpu在进入临界区之前停下来
  • 统一API,p和v操作;p是等待,v是释放的意思

信号量的工作原理

伪代码

信号量实现同步

  • 初始的时候,将信号量设为0,当P0进程执行的时候,P(S),本质上是wait(s),s.value-1小于0,进入等待
  • cpu执行P1进程,V(s)本质上是signal(s),唤醒P0进程,实现了P1进程优先在P0进程之前执行,因此使用信号量实现了进程之间的同步操作

信号量实现互斥

  • cpu先执行P0,后执行P1,不会产生互斥现象
  • cpu先执行P1,后执行P0,不会产生互斥现象
  • cpu先执行P0,期间执行P1,能达到互斥
  • cpu先执行P1,期间执行P0,能达到互斥

同步互斥小口诀

  • 画图理解题目
  • 判断题目类型
  • 分析进程数目 填写进程模板
  • 补充基本代码(伪代码)
  • 补充PV代码
  • 检查调整代码

注意事项

  • 代码是一步一步写出来的,代码是反复调整写出来的
  • 60%是生产者和消费者模型
  • 30%是读者和写者的模型

操作系统 进程 学习以及思考相关推荐

  1. 《王道操作系统》学习笔记总目录+思维导图

    本篇文章是对<2021王道操作系统>所有知识点的笔记总结归档,虽说是2021年的,但是这些都是最核心的底层基础知识,过多少年都不会有很大的变化,核心都差不多. 我的武功秘籍:note.bi ...

  2. 操作系统原理学习笔记(二十一)-对换

    文章首发及后续更新:https://mwhls.top/1350.html 新的更新内容请到mwhls.top查看. 无图/无目录/格式错误/更多相关请到上方的文章首发页面查看. 操作系统原理学习笔记 ...

  3. 操作系统——进程之处理机调度

    操作系统--进程之处理机调度 一.处理机调度的本概念和层次 1.高级调度(作业调度) 2.中级调度(内存调度) 3.低级调度(进程调度) 二.进程调度的时机.切换与过程.方式 1.进程调度的时机 2. ...

  4. 操作系统 - 进程和内存

    操作系统 - 进程和内存 操作系统内核和Shell 系统调用 进程管理 1. 进程控制块PCB 2. 进程的状态 3. 进程通信 3.1 共享存储 3.2 管道 Or 无名管道 3.3 有名管道 3. ...

  5. 操作系统——进程和线程的区别

    操作系统--进程和线程的区别 最近学习了操作系统中的进程和线程这两个知识点,昨天老师给我们出了一道题:进程和线程的区别.听完题目后一脸懵逼,只想到了进程的一部分概念,回来之后就查书,找到了答案. 1. ...

  6. linux学 java_[操作系统]Linux学习第二步(Java环境安装)

    [操作系统]Linux学习第二步(Java环境安装) 0 2017-05-19 00:02:21 jdk版本:jdk-8u131-linux-x64.rpm 注:以下操作在root用户或具有root权 ...

  7. 学术分享丨机器人学习的思考

    2020-12-01 21:15:31 随着学会的队伍不断发展壮大,分支机构的发展愈发完善,丰富多彩的分支活动与学术分享也频频呈现.今年以来,CAAI认知系统与信息处理专委会积极倡导学会"疫 ...

  8. 焦李成院士:进化优化与深度学习的思考

    来源:AI科技评论 作者:焦李成 整理:维克多 编辑:青暮 2021年12月17日,西安电子科技大学人工智能学院教授.欧洲科学院外籍院士.IEEE Fellow焦李成受邀参加2021中国计算机大会&q ...

  9. 程序员应知——学习、思考与分享

    有人说,程序员是个苦差事,一辈子总是要不停地学习,学习新的技术,学习新的架构,学习新的工具,一旦一段时间不学习,就会发现其他人嘴里冒出来的新鲜词,自己已经搞不懂是什么了. 的确,作为程序员,学习很重要 ...

  10. linux 进程管理 ppt,linux操作系统-进程管理和打印管理.ppt

    <linux操作系统-进程管理和打印管理.ppt>由会员分享,可在线阅读,更多相关<linux操作系统-进程管理和打印管理.ppt(25页珍藏版)>请在装配图网上搜索. 1.进 ...

最新文章

  1. 『假如我是面试官』RabbitMQ我会这样问!
  2. MPB:中科院城环所杨军组-​​淡水浮游细菌群落采集、过滤与保存
  3. Webpack安装、打包过程及开发过程超详细教程(专治看不懂学不会)
  4. 单元测试之JUnit 5 参数化测试使用手册
  5. 如何开启开源之旅(一)
  6. Cere Network 将于 Republic、DAO Maker 和 Polkastarter 上进行公售
  7. Few-shot learning和Meta-learning
  8. 中国行政划分代码(身份证号码前六位)
  9. 计算机无法进入pe系统,u盘启动盘无法进入pe解决方法
  10. [狗子的PM之路]PM的数据分析思路
  11. [MATLAB]matlab鼠标操作画两圆,做出两圆的公切线
  12. java开发名言_java实现收藏名言语句台词的app
  13. ELK环境部署(一)--基础环境配置
  14. 水果店开业前尝试做地推活动
  15. ArcGIS earth 1.0 beta体验报告——给我一个按钮我将转动整个地球
  16. excel 表做下拉框_Excel工作表的组合框下拉列表
  17. zblog 全站ajax,ZBlog全站缓存
  18. 复现《nature communications》图表(一):一模一样的Figure1
  19. win7java浏览器崩溃_win7系统IE浏览器出现各种崩溃问题的解决方法
  20. Calendar的DAY_OF_MONTH, DAY_OF_YEAR, DATE的区别

热门文章

  1. Web前端开发之CSS学习笔记5—溢出、浮动、层叠
  2. 视频直播 linux 推流,linux rtmp服务器搭建推流
  3. xp系统远程计算机需要网络打印机驱动,xp系统如何设置网络打印机共享
  4. C#读取Excel文件(*.xls)|*.xls(2种方法)
  5. 2000级2班同学聚会邀请函
  6. 201671030110词频统计软件项目报告
  7. Delicious Retouch 5—PS磨皮插件
  8. 阿里云对象存储OSS及CDN加速配置
  9. Typora配置阿里云图床详细教程(PicGo+阿里云OSS)
  10. c#Word模板转PDF,c#word模板生成新的word