操作系统第二章(四)

2.7进程通信

1.低级通信:在进程间交换数据量少的进程通信方式。一般只传送一个和几个字节的信息,达到控制进程执行速度的作用(例如进程的同步与互斥)。信号量机制就是一种低级通信方式,它作为同步工具是卓有成效的,但作为通信工具则不够理想。(传输效率低。通信对用户不透明)

2.高级通信:用户可以直接利用操作系统所提供的一组通信命令,高效地传送大量数据的一种通信方式。 (传输效率高。通信过程对用户是透明的)

3.三种基本通信方式:

(1)共享存储系统:设置一个共享空间,互斥地访问共享空间。其存在两种结构:基于数据结构(低级);基于存储区的共享(高级)

(2)消息传递系统:传递结构化的消息。系统提供“发送/接受”原语。消息传递共两种方式:直接通信方式(消息直接发送到消息队列),间接通信方式(消息先发送到中间体)。

(3)管道通信方式:写满时,不能再写;读空时,不能再读。没写满,不能读;没读空,不能写。

2.8死锁问题

哲学家进餐:

产生死锁的原因:

(1)竞争临界资源:当系统中供多个进程共享的临界资源(如打印机、公用队列等)的数目不能满足诸进程的需要时,会引起诸进程对资源的竞争而产生死锁。这个问题在多道程序系统中是无法解决的。可剥夺性资源: CPU和主存;不可剥夺性资源:磁带机、打印机等

(2)进程推进顺序不当:进程在运行过程中,请求和释放资源的顺序不当,也同样会导致死锁的产生。这个问题在多道程序系统中是可以解决的。

产生死锁的必要条件:

1.互斥条件:每一资源被分配给一个进程,或者空闲。    

2.占有并请求条件:已分配到了一些资源的进程可以申请新的资源。    

3.不可剥夺条件:进程所获得的资源在未使用完毕之前,资源申请者不能强行地从资源占有者手中夺取资源,而只能由该资源的占有者进程自行释放。    

4.循环等待条件:链中的每一个进程都在等待相邻进程所占用的资源。

死锁的防止:

1.静态资源分配法

2.摒弃“不可剥夺条件” :进程在需要资源时才提出请求。

3.有序资源使用法(摒弃“循环等待条件”)

银行家算法:

描述:每当进程提出资源请求且系统的资源能够满足该请求时,系统将判断如果满足此次资源请求,系统状态是否安全,如果判断结果为安全,则给该进程分配资源,否则不分配资源,申请资源的进程将阻塞。

数据结构:

(1)可利用资源向量Available:(剩余或可用资源量),记录系统中各类资源的当前可利用数目。如果Available[j]=k, 表示系统中现有Rj类资源k个。

(2) 最大需求矩阵Max:每个进程对各类资源的最大需求量  

(3)Allocation:已为每个进程分配的数量或者说每个进程对各类资源当前的占有量。  

(4)需求矩阵Need:某进程对各类资源尚需要的数目。Need=Max-Allocation  

(5)请求向量Request:它记录某个进程当前对各类资源的申请量,是银行家算法的入口参数。

 

通过对于系统资源的分配找到一种安全序列(安全序列不唯一)使得系统按照顺序进行资源分配能够完成对所有的访问。

发布了77 篇原创文章 · 获赞 7 · 访问量 9063

猜你喜欢

转载自blog.csdn.net/qq_41886231/article/details/103263146