进程的同步与通信

同步关系(直接制约):为了完成一个共同任务,相互协作的几个进程需要在某些确定点上协调他们的工作,等待来自其它进程的信息,以调整它们的推进速度,方可顺利执行完毕。

互斥关系(间接制约):把并发进程间存在的因相互竞争使用独占资源(共享资源)而产生的制约关系。

   例如:打印机,共享内存;

 

 

临界资源:一次仅允许一个进程使用的硬件或软件资源。

注意:对于临界资源,必须互斥访问,否则会导致执行结果的不确定性。

临界段(区):指在进程中访问临界资源的那段代码。

访问过程:

1)在进入临界段之前,写一段代码以检查可否进入临界段,通常把这段代码称为进入区(申请,判断)。

2)在退出临界段后,必须有一段代码来清除“正在访问临界段”标志,或发出本进程已经退出临界段的信息,把这段代码称为退出区(释放)。

 

同步机构:指能实现进程同步的机制,该机制能把其它进程需要的信息发送出去,也能测试自己需要的信息是否到达。

同步机构应遵循4个准则:

  1. 空闲让进;2、忙则等待;3、有限等待;4、让权等待;

 

 

实现临界段的硬件方法(低级方法)(了解)

  1. 屏蔽中断法,如进程1的程序:

disableInterrupt();// 不准中断

balance=balance+amount;  //执行指令

enableInterrupt(); //允许中断

  1. “Test_and_Set”指令

 如果机器支持Test_and_Set,可用下列方法解决:(lock=false)

do

{   while(Test_and_Set(&lock));      //进入区

        critical section;    //临界区

        lock=false;              //退出区

        non critical section;   //其它部分

}while(1);

3、“Swap”指令

该指令功能描述为:

void Swap(boolean &a, boolean &b){

 boolean temp=a;

    a = b;

    b = temp;

}

信号量(重点)

 

PV操作的实现

1. 信号量定义

   typedef struct{

      int:value;  一个数值型变量

       struct process *L;一个PCB队列

       } Semaphore

Semaphore S;

2. P操作

   P(S):   S.Value=S.value-1;

              if S.value<0 then 保存现场,

              将本进程挂入S.L队列,等待重新调度。

3. V操作

   V(S):   S.value:=value+1

                  if S.value≤0 then 从S.L队列

                  取一进程,挂入就绪队列。

 

4. P,V操作的优点:同步能力强

5. P,V操作的缺点:程序结构差,易产生死锁。

 

信号量的物理意义

P(s)操作:

 ①请求分配一个S代表的资源,执行S.value-1;

 ②若S.value<0,表示系统已无该类资源,申请者阻塞。此时,|S.value|表示该信号量上阻塞的进程数;

V(s)操作:

①进程释放一个S代表的资源,执行S.value+1;

②若S.value<=0,表示尚有进程因等待S代表的资源而处于阻塞状态,所以应唤醒其中之一。

 

使用PV 操作的几个经典案例,比如哲学家就餐问题

 

 

进程间的通信方式:https://blog.csdn.net/b9x__/article/details/80300224

全部评论

相关推荐

就前几天旅游的时候,打开抖音就经常刷到这类视频:以前是高学历学生、老师、主持人,现在做着团播、擦边主播的工作,以及那些经过精心包装的“职业转型”故事——从铺天盖地的VLOG到所谓的“04年夜场工作日记”,这些内容在初中升学、高考放榜等关键时间节点持续发酵。可以说非常直接且精准地在潜移默化地影响着心智尚未成熟的青少年,使其对特殊行业逐渐脱敏。那我就想问了:某些传播公司、平台运营者甚至某些夜场的老板,你们究竟在传递怎样的价值观?点开那些视频,评论区里也是呈现明显的两极分化:一种是​​经济下行论​​:“现在就业市场已经艰难到这种程度了吗?”​​一种是事实反驳派​​:这些创作者往往拥有名校背景,从事着...
牛客刘北:被环境教育的,为了能拿到足够的钱养活自己,不甘心也得甘心,现在的短视频传播的思想的确很扭曲,但是很明显,互联网玩上一年你就能全款提A6,但你全心全意不吃不喝工作一年未必能提A6,但是在高考中考出现这个的确很扭曲,在向大家传播“不上学,玩互联网也可以轻松年入百万”,不是人变了,是社会在变
预测一下26届秋招形势
点赞 评论 收藏
分享
05-09 12:23
已编辑
华南理工大学 Java
野猪不是猪🐗:给他装的,双九+有实习的能看的上这种厂我直接吃⑨✌们拿它练练面试愣是给他整出幻觉了
点赞 评论 收藏
分享
屌丝逆袭咸鱼计划:心态摆好,man,晚点找早点找到最后都是为了提升自己好进正职,努力提升自己才是最关键的😤难道说现在找不到找的太晚了就炸了可以鸡鸡了吗😤早实习晚实习不都是为了以后多积累,大四学长有的秋招进的也不妨碍有的春招进,人生就这样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务