栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

软考笔记——2.1进程管理、同步互斥、死锁、线程

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

软考笔记——2.1进程管理、同步互斥、死锁、线程

1、操作系统知识

操作系统的作用:通过资源管理提高计算机系统的效率;改善人机界面向用户提供友好的工作环境

操作系统的特征:并发性、共享性、虚拟性、不确定性

操作系统的功能:进程管理、存储管理、文件管理、设备管理、作业管理

操作系统的分类:批处理操作系统、分时操作系统(轮流使用CPU工作片)、实时操作系统(快速响应)、网络操作系统、分布式操作系统(物理分散的计算机互联系统)、微机操作系统(Windows)、嵌入式操作系统

计算机启动的基本流程为:BIOS -> 主引导记录 ->操作系统

 2、进程的组成和状态

进程的组成:进程控制块PCB(唯一标志)、程序(描述进程要做什么)、数据(存放进程执行时所需数据)

进程基础的状态时下左图中的三态图,这是系统自动控制时只有三种状态,而右图中的五态,是多了两种状态:静止就绪和静止阻塞,需要人为的操作才会进入对应状态,活跃就绪即就绪,活跃阻塞即等待。

 可知,当人为干预后,进程将被挂起,进入静止状态,此时,需要认为激活,才能恢复到活跃状态,之后的本质还是三态图。

3、前驱图

前驱图:用来表示哪些任务可以并行执行,哪些任务之间有顺序关系,具体如图所示

 可知,ABC可以并行执行,但是必须ABC都执行完之后,才能执行D,这就确定了两点:任务间的并行、任务间的先后顺序

4、进程资源图

进程资源图:用来表示进程和资源之间的分配和请求关系,如图所示

P代表进程,R代表资源,R方框中有几个圆球就表示有几个这种资源,在图中,R1指向P1,表示R1有一个资源已经分配给了P1,P1指向R2,表示P1还需要请求一个R2资源才能执行

阻塞节点:某进程所请求的资源已经全部分配完毕,无法获取所需资源,该进程被阻塞了无法继续。如图中P2(R1的资源已经分配给P1和P3了,没有多余的资源了,所以P2没有R1的资源,造成阻塞)

非阻塞节点:某进程所请求的资源还有剩余,可以分配给该进程继续运行。如上图中P1、P3(R2把其中两个资源给到P2和P3,还有一个资源可以给P1也可以给P3,所以非阻塞)

当一个进程资源图中所有进程都是阻塞节点时,即陷入死锁状态

进程资源图的化简方法:先看系统还剩下多少资源没有分配,再看有哪些进程是不阻塞的,解这把不阻塞的进程的所有边都去掉,形成一个孤立的点,再把系统分配给这个进程的资源收回来,这样系统剩余的空间资源便多了起来,接着又去看看剩下的进程有哪些是不阻塞的,然后又把它们逐个变成孤立的点。最后,所有的资源和进程都变孤立的点。图中P3是不阻塞的,故P3为化简图的开始,把P3孤立,再回收分配给它的资源,可以看到P1也变为不阻塞节点了,故化简顺序为:P3->P1->P2或者P3->P2->P1

5、同步和互斥

互斥:某资源(即临界资源)再同一时间内只能由一个任务单独使用,使用时需要加锁,使用完后解锁才能被其他任务使用;如打印机

同步:多个任务可以并发执行,只不过有速度上的差异,在一定情况下停止等待,不存在资源是否单独或共享的问题;如自行车和汽车

临界资源:各进程间需要以互斥方式对其进行访问资源

临界区:指进程中对临界资源实施操作的那段程序。本质是一段代码

互斥信号量:对临界资源采用互斥访问,使用互斥信号量后其他进程无法访问,初值为1

同步信号量:对共享资源的访问控制,初值一般是共享资源的数量

 6、信号量操作

p操作:申请资源,S=S-1,若S>=0,则执行p操作的进程继续执行;若S<0(S不能等于0,因为S=0表示S原来是1,1表示有一个可用资源),则置该进程为阻塞状态(因为无可用资源),并将其出入阻塞队列

v操作:释放资源,S=S+1,若S>0,则执行v操作的进程继续执行;若S<=0,则从阻塞状态唤醒一个进程,并将其插入就绪队列(此时因为缺少资源被p操作阻塞的进程可以继续执行),然后执行v操作的进程继续。

 【例题】假设某系统采用非抢占式优先级调度算法,若该系统有两个优先级相同的进程P1和P2,各进程的程序段如下所示,若信号量S1和S2的初值都为0.进程P1和P2并发执行后a、b和c的结果分别为:

 解析:

7、死锁

 当一个进程在等待永远不可能发生的事件时,就会产生死锁,若系统中有多个进程处于死锁状态,就会造成系统死锁

死锁的产生要满足四个必要条件:

  • 资源互斥
  • 每个进程占有资源并等待其他资源
  • 系统不能剥夺进程资源
  • 进程资源图是一个环路

死锁产生后,解决措施是打破四大条件,有以下方法:

  • 死锁预防:采取某种策略限制并发进程对于资源的请求,破坏死锁产生的四个条件之一,使系统任何时刻都不满足死锁的条件
  • 死锁避免:一般采用银行家算法来避免,银行加算法,就是提前计算出一条不会死锁的资源分配方法,才分配资源,否则不分配资源,相当于借贷,考虑对方还得起才借钱,提前考虑好以后,就可以避免死锁
  • 死锁检测:允许死锁产生,但系统定时运行一个检测死锁的程序,若检测到系统只能发生死锁,则设法加以解除
  • 死锁解除:即死锁发生后的解除方法,如强制剥夺资源,撤销进程等

死锁计算问题:系统内有n各进程,每个进程都需要R个资源,那么其发生死锁的最大资源数位n*(R-1)。其不发生死锁的最小资源数为n*(R-1)+1 

【例题】某系统中有3个并发进程竞争资源R,每个进程都需要5个R,那么至少有( 13 )个R,才能保证系统不会发生死锁

 8、线程

传统的进程有两个属性:可拥有资源的独立单位;可独立调度和分配的基本单位

引入线程后,线程是独立调度的最小单位,进程是拥有资源最小单位,线程可以共享进程的公共资源、全局变量、代码、文件等资源,但不能共享线程独有的资源,如线程的栈指针等标识数据

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1009240.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号