操作系统学习——进程间的通信

1.互斥mutual exclusion:进程之间不会相互干扰

同步synchronization:当进程间存在依赖关系时,要有一个恰当的顺序。

2.假脱机spooling:

out指针用于打印;in指针用于存储。

如下图,在Correct情况中,不会发生错误,进程正常且正确执行;

但在Race中,进程虽然也正常执行,但是F2永远不会被打印出来(∵F2总是会被覆盖)

3.竞争条件:几个进程同时访问共享数据时,最终结果取决于执行顺序。

~解决:互斥mutual exclusion

一个进程使用共享资源时,其他进程不能使用该资源。

4.(1)临界资源critical resource:一次只允许一个进程访问硬/软件资源。

(2)临界区critical region

①程序中访问临界资源的部分(访问临界资源的代码一定要放到临界区

②进程使用临界区的流程:

提出申请—>若此时没有进程在临界区,则该进程可以进入临界区(否则,进入blocked)—>离开临界区时要exit解锁(否则其他进程就进不来了)

———————————③使用临界区实现互斥的条件——————————

a.同一时间不会有2个进程在临界区中

b.不能假设CPU的速度/数量

c.运行在临界区之外的进程不能阻碍其他进程(进入临界区)

d.不能让进程无限期地等待进入临界区

(例)

————————(一)mutual exclusion———————

※(Ⅰ)disabling interrupts

1.当进程进入临界区后禁止中断(∵CPU只有在发生时钟中断或其他中断时才会发生上下文切换,若禁止中断,就不会发生进程切换,也就不会被别人打扰了);

而当进程离开临界区时再打开中断(否则其他进程就不能进入临界区了)。

2.存在的问题:在多处理器系统中无用(∵禁止中断只对一个CPU有用,其他CPU执行的进程还可以打扰它)

※(Ⅱ)lock variable

1.通过锁变量实现互斥,即在进程进入临界区后将锁变量设置为1,这样其他进程就不能进入临界区了~~~相当于在进门后锁门。

2.下图解读:当进程想进入临界区时,首先循环访问lock锁变量是不是0(注:此时while循环是一个空循环)(如果是0,表示此时没有进程在临界区中,那该进程就可以进入;否则就要等到其他进程出来);进入后一定不要忘记将lock设为1(锁门)࿱

  • 18
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值