2025年进程控制原语6种方法(进程控制原语6种方法)

进程控制原语6种方法(进程控制原语6种方法)如何在进程间传递信息 如何防止两个进程冲突 如何实现进程执行的先后顺序 多个进程访问一个共享数据 而数据最后的值由进程访问的先后顺序决定 竞争条件的例子 输出 指向下一个待打印的文件 输入 指向下一个空位 in 7 1 进程 A 读 in 且将值 7 保存在一个局部变量 进程 A 切换到进程 B 2

大家好,我是讯享网,很高兴认识大家。



如何在进程间传递信息?

如何防止两个进程冲突?

如何实现进程执行的先后顺序?


讯享网

多个进程访问一个共享数据,而数据最后的值由进程访问的先后顺序决定。

竞争条件的例子

输出: 指向下一个待打印的文件

输入: 指向下一个空位,in =7.

(1): 进程 A 读 in 且将值 7 保存在一个局部变量.   进程A 切换到进程B.

(2): 进程B读in, 将文件名保存在空位 7 且更新in 的值为 8.

(3): 进程 A 将文件名保存到空位 7且更新 in 的值为 8.

空位 7 所保存的文件名不确定,取决于谁最后完成,这导致竞争条件发生。

  1. 临界资源:互斥共享变量所代表的资源,即一次只能被一个进程使用的资源;
  2. 临界区指并发程序中与互斥共享变量相关的程序段;
  3. 防止竞争条件的思想:禁止多个进程同时读和写共享数据,即同时进入临界区。

好的解决方案满足的四个条件:

  1. 没有进程同时在临界区;
  2. 不假设CPU的速度和数量;
  3. 临界区外运行的进程不得阻塞其他进程;
  4. 不会导致有进程永远在临界区外面等待。

只有发生中断的时候,CPU 才会切换进程。因此,如果屏蔽中断,就不会发生切换了。

这个不太好,一个进程关了中断之后不开怎么办?

Problem?

如果一个进程执行完while条件判断后突然发生了切换,lock = 1尚未执行, 则两个进程都会进入临界区。

问题:效率不高,有限制。

几乎完美,但是有忙等待现象!

该硬件支持一种特殊指令 TSL, 其能够不可分割地完成两个任务:

(a)将一个内存值保存到CPU寄存器;

(b)将该内存值设置为1。

忙等待

  • 一个进程一直占用CPU测试循环的条件,直到测试条件为真。
  • 浪费CPU;
  • 导致优先级反转问题

  • 从忙等待到阻塞…
  • 睡眠是一个系统调用,使得调用者阻塞自己直到另外的进程唤醒该进程。
  • 唤醒调用唤醒指定的进程。

习题:

设与某资源相关联的信号量初值为3,当前值为2,若M表示该资源的可用个数,N表示等待该资源的进程数,则M、N分别为(D  )

下一个笔记的内容是信号量相关的,可以移步看一下~

小讯
上一篇 2025-04-29 20:22
下一篇 2025-04-26 12:41

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/157065.html