临界区,临界资源

* 什么是临界区?
答:每个进程中访问临界资源(比如全局变量等公用资源)的那段程序(代码)称为临界区(临界资源是一次仅允许一个进程使用的共享资源,如全局变量等),也称为临界段。也就说是每个进程(ucos中是任务)都可以有访问这个全局变量的代码,比如某个进程想用该变量做加法,另外一个进程想用这个变量做其它用途等,那么这两个进程的这两段代码都叫做临界区,因为他们都是访问了临界资源(这个全局变量)。对于某一临界资源,对应的临界区具体来说有多个(多个进程都可以有)。

补充:不同操作系统对临界区代码能否被打断的处理方式不一样:

+ 嵌入式操作系统ucos中,进入临界区是先关中断,出了临界区,开中断的处理方式,即进入临界区,完全不允许其他任务和中断打断。

+ 但是在其他操作系统中(可能是Linux),是利用P,V操作,信号量等实现不同进程的临界区互斥访问这个临界资源,比如每个进程访问该全局变量前P一下,访问完V一下,这样进程1访问到一半,时间片已经到了,还是可以切换到其它进程,若其它进程刚好想访问这个全局变量(此进程对此全局变量的访问也是加了P,V的),因为此时的P操作检测到别的进程正在访问,所以这个进程P就失败了,所以此进程访问不了这个全局变量,其它进程也同理,所以实现了互斥的访问临界资源。

总结:先有临界资源,再有的临界区。ucos中临界区不可以被打断;Linux等中临界区可以被其他进程打断(进程切换),但是切换到的进程如果刚好有访问这个临界资源,那么还是不能访问。

* 进程进入临界区的调度原则是:
①如果有若干进程要求进入空闲的临界区,一次仅允许一个进程进入。②任何时候,处于临界区内的进程不可多于一个。如已有进程进入自己的临界区,则其它所有试图进入临界区的进程必须等待。③进入临界区的进程要在有限时间内退出,以便其它进程能及时进入自己的临界区。④如果进程不能进入自己的临界区,则应让出CPU,避免进程出现“忙等”现象。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值