阿里巴巴怎么做企业网站宣传,百度搜索推广创意方案,永久免费网站怎么建,兼职做网站访问量和数据进程管理逻辑图 将多个程序拷贝到进程中#xff0c;占用内存#xff0c;如图扇形区域#xff0c;当酷狗进程需要资源的时候#xff0c;会通过I/O子系统取用资源的过程中#xff0c;会放弃对cpu的占用#xff0c;cpu就会处理别的进程#xff0c;因此提高了cpu的利用率占用内存如图扇形区域当酷狗进程需要资源的时候会通过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动态性状态的转换存储在PCB4结构性(描述组织) 进程 程序PCB程序指令段程序段和数据段5独立性资源分配给每一个进程分配的空间都是隔离的
进程的结构 编译
编译过程中将.c文件转化为.o文件将内部代码转化为程序段和数据段具体转化如下ab - 32其中a是变量名字在编译的时候所有的数据会汇聚在一起所有的指令也会汇聚在一起。将数据存储到数据段指令存储到程序段(指令段)。
链接
将.o文件中的所有数据段放在一起所有的程序段放在一起。然后形成exe运行程序程序运行的时候将程序代码从磁盘拷贝到内存中 也就是将数据段和程序段从磁盘复制到内存中并且创建一个pcb模板记录到内存中
PCB
运行软件将程序从磁盘拷贝到内存(将其指令段和程序段拷贝到内存上)上运行的同时会创建一个PCB(档案)PCBPCB是进程存在的唯一标识PCB存储的内容进程标识符唯一性进程的数字标识数字代表程序进程的当前状态新建、就绪、堵塞、运行、结束进程的优先级VIP用于后面的程序调度代码的入口地址程序由磁盘拷贝到内存中入口的地址是指拷贝到内存中的起始地址指向内存代码的外存地址标识本段代码是从磁盘哪个区域拷贝过来的指向磁盘进入内存的时间从磁盘拷贝到内存的完成的时间代码段指针指向代码段数据段指针指向数据段堆栈指针CPU在不同进程之间切换用于保存现场信息
进程的状态与控制 就绪使用PCB里面的PID代表进程使当前状态为ready标识就绪使用pcb进行排队PCB process control block通过调整PCB内部参数的数值控制不同的进程进程状态转换图-目的便于OS监控和调度*进程程序运行 需要同时具备 PCB 内存 CPU每种状态拥有了哪些资源什么时候需要状态装换状态装换需要做什么事情进程的控制1分配(申请) PCB 内存 CPU2回收 PCB 内存 CPU3修改PCB 中进程的当前状态例子点击QQCPU将代码复制到内存并且开辟QQ_PCB并修改当前状态为ready由新建状态变成了就绪状态通过pcb内部代码运行的入口地址找到QQ程序的入口地址cpu分配由就绪状态变成了运行状态改状态信息为run。cpu运行一段时间就会由一个程序跳转到另外一个程序假设QQ占有的cpu时间到了就会释放cpucpu会到360进程因此qq从运行状态变成了就绪状态。QQ发消息因为发消息需要网卡发消息的时候会释放CPU由由运行状态变成阻塞block状态当得到I/o请求将阻塞状态变成就绪状态关闭qq程序或者异常退出会使得qq进程终止归还 内存、删除pcb交还CPU注意顺序问题
进程之间通信 IPCInter 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会到第二级一次执行第二级的时间片会比第一级的时间片长执行方式和上面一致直到有程序执行完退出。甘特图
生产计划进度图描述多个进程之间的进度关系调度准则介绍
1cpu利用率 尽可能忙碌 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的标志位为flagB的标志位为flagflag为true表示占有资源flag为false表示不占有资源。A在对临界资源的抢夺之前会看B的标志位如果为true表明B占有资源A就不可以抢占资源如果为false则抢占资源并修改标志位将自己的标志位修改为true双标志后检查法
基于双标志先检查法的优化因为双方太谦让而导致的bug交换了两行代码的先后顺序先申明自己要抢资源但是会导致无限等待和饥饿问题peterson算法
真正实现互斥引入一个变量信号量的由来
信号量使cpu在进入临界区之前停下来统一APIp和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%是读者和写者的模型