操作系统 进程 学习以及思考

进程管理逻辑图

  • 将多个程序拷贝到进程中,占用内存,如图扇形区域,当酷狗进程需要资源的时候,会通过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%是读者和写者的模型

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

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

相关文章

Android Glide图片加载框架(二)源码解析之with()

文章目录一、前言二、如何阅读源码三、源码解析1、with()Android Glide图片加载框架系列文章 Android Glide图片加载框架(一)基本用法 Android Glide图片加载框架(二)源码解析之with() Android Glide图片加载框架(二…

计算机操作系统生产者和消费者模型的简单介绍

同步互斥小口诀 画图理解题目判断题目类型分析进程数目 填写进程模板补充基本代码(伪代码)补充PV代码检查调整代码 注意事项 代码是一步一步写出来的,代码是反复调整写出来的60%是生产者和消费者模型30%是读者和写者的模型 生产者和消费者 例子1 妈妈每次放放一…

Android Glide图片加载框架(二)源码解析之load()

文章目录一、前言二、源码分析1、load()Android Glide图片加载框架系列文章 Android Glide图片加载框架(一)基本用法 Android Glide图片加载框架(二)源码解析之with() Android Glide图片加载框架(二)源码…

计算机操作系统读者和写者模型的简单介绍以及思考

读者和写者 读写两组进程,共享一个文件,多个读者可以同时访问文件,多个写者不可以同时访问文件,写者和读者也不可以同时访问文件共享读;独占写特征:1,资源被谁占有;2,写者改变资源,…

Android Glide图片加载框架(二)源码解析之into()

文章目录一、前言二、源码解析1、into(ImageView)2、GlideContext.buildImageViewTarget()3、RequestBuilder.into(Target,RequestListener,RequestOptions);4、RequestBuilder.buildRequest()5、SingleRequest.obtain()6、isEquivalentTo()、isSkipMemoryCacheWithCompletePre…

2014年考研英语一翻译知识点

题目讲解网址 总结 1.做翻译题,不用看句子前后的地方,直接看要翻译的部分 2.多根据语境去翻译 3.如果是不认识的单词,一般都是我们平常经常使用/说的词的代替高级词 题目句子 It is also the reason why when we try to describe music with words, all wecan do is articul…

计算机操作系统 死锁问题

概念 条件是基础,在一定的原因下,产生结果死锁三胞胎 死锁 僵持,消耗时间,双方都占用了部分资源,不释放活锁 双方互相谦让,都不占用资源饥饿 谦让的一方一直等待,无法占有资源,导致…

武忠祥.高等数学.基础课-第一章函数 极限 连续P10

sin(1/x) 详细解析网址 1.图像 2.极限 x–>0时,函数极限不存在 sin2x 详细作图网址 1.图像 2.周期为Π f(x)周期为T,f(axb)周期为T/|a| 所以sinx周期为2Π,sin2x周期为2Π/2Π |sinx| 详细讲解网址 1.图像 2.周期:Π 3.绝对值 (1)y|sinx|的图…

算法章节 递归、排序、⼆分查找

递归 概念与特性函数调⽤函数⾃身的编程⽅式叫做递归,调⽤为”递“,返回为”归“三个条件1. ⼀个问题的解可以分解为多个⼦问题的解; 2. 分解之后的⼦问题,除了数据规模不同,求解思路跟原问题相同; 3. 存在…

codeforces 50A-C语言解题报告

50A题目网址 解题报告-others 题目解析 1.输入n x m大小的木板,使用21大小的多米诺去填满,求最多的多米诺数目 2.通过分析把木板分为奇数和偶数的情况 1)有一边是偶数的情况: 使用2去填满 2)两个边都是奇数 奇数-1偶数 还是让木板的(奇数-1)边去和2平行,再加上 (m-1)/2(n/1)…

Java命令:jps — 查看进程信息

文章目录一、简介二、常用命令1、jps2、jps -l3、jps -q4、jps -m5、jps -v6、jps失效一、简介 JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程。 功能: 显示当前所有java进程pid的命令,我们可以通过这个命令来查看到底启…

操作系统概述 记录操作系统相关知识

操作系统 现代计算机系统由一个或多个处理器、主存、打印机、键盘、鼠标、显示器、网络接口以及各种输入/输出设备构成。上面提到的这些东西都属于硬件资源,用户不会直接和硬件进行交互,计算机安装了一层软件,这层软件能够通过响应用户输入的…

JDK工具使用大全

文章目录一、简介一、简介 在JDK的bin目录下有很多命令行工具: 常用工具使用详解如下: Java命令:jps — 查看进程信息 Java命令:jstack — 获取线程dump信息 Java命令:jmap — 打印指定进程的共享对象内存映射或…

Linux进程 excel族函数的用法

介绍 使用fork创建一个进程之后,经常会在新进程中调用exec函数执行别的程序当前进程调用exec函数之后,这个进程会被完全替代换成新的程序,即便如此仍然是同一个进程,进程ID不变函数族 execl execlp execle execvp execvpe头文件 …

C++primer 12章 动态内存和智能指针

C引入智能指针的目的 使用智能指针来管理动态分配的对象,当一个对象应该被释放的时候,指向他的智能指针确保自动释放它 内存分配 静态内存:局部static对象、类static数据成员、定义在任何函数之外的变量栈内存:定义在函数内的非…

Mac下iTerm2的安装与配置

目录一、iTerm2简介二、下载以及安装三、iTerm2主题配置四、配置Oh My Zsh1、安装方式(1)一键安装(2)手动安装3、切换zsh4、修改主题五、配置Meslo字体六、声明高亮七、自动建议填充八、iTerm2快速隐藏和显示九、iTerm2隐藏用户名…

Java命令:jinfo — 查看进程参数

目录一、简介二、常用命令1、jinfo -flags pid : 打印当前指定java进程中已经设定的所有JVM参数信息2、jinfo -flag pid : 打印指定名称的参数3、jinfo -flag [|-] pid : 打开或关闭参数4、jinfo -sysprops pid : 打印当前java进程中设定的系统环境参数一、简介 jinfo 是 JDK …

C++primer第八章 IO库 8.1 IO类

IO库设施 istream (输入流)类型,提供输入操作。ostream (输出流)类型,提供输出操作。cin,—个 istream对象,从标准输入读取数据。cout, 一个ostream对象,向标准输出写入数据。cerr…

2014年英语一作文partB漫画作文

题目 Write an essay of 160-200 words based on the following drawing.In your essay you should describe the drawing brieflyexplain its intended meaning,give your comments 做题点 1.使用三段式,第一段:图片内容;第二段:图片暗示;第三段:写自己的评论 2.描述图片…

Spring Cloud 系列之 Nacos 配置中心

目录一、Nacos简介二、Nacos安装及配置1、环境准备2、安装包下载(1)源码方式(2)发行包方式3、启动Nacos服务4、Nacos数据库配置(1)MySQL数据源(2)初始化 MySQL 数据库(3&…