实时操作系统简介(2)

可重入性:

可重入函数可以被一个以上的任务调用,而不必担心数据破坏,任何时候都可以被中断,而相应的数据不会丢失,可重入函数一般只使用局部变量,也就是变量保存在CPU寄存器或堆栈中,如果使用全局变量,则要对全局变量给予保护。


上下文切换:

也称为任务切换,当操作系统决定运行另外的任务时,需要保存当前正在运行任务的当前上下文,也就是数据,这样操作系统就可以吧下一个将要运行的任务的当前上下文从任务的栈或者上下文保存区恢复到CPU的寄存器中。


共享资源:

可以被一个以上的任务使用的资源叫做共享资源,为了防止数据被随意访问,必须要独占该资源,这叫做互斥,需要互斥访问的共享资源称为临界资源


程序临界区:

对共享资源的访问,可能导致竞争的出现,这种可能出现竞争的程序片段称为程序临界区,程序临界区在处理时不能被中断,要保证操作的原子性,为确保临界区程序执行过程中不被中断,在进入临界区之前要屏蔽中断,而临界区代码执行完后要立即使能中断。


死锁:

在多任务环境中,一组任务中的每个任务偶读占用着若干资源,同时又在等待得到该组任务中另一任务所占用的资源,因而造成所有的任务都无法进展的现象,这种现象称为死锁。在死锁状态下,每个任务无法动弹,无法运行也无法释放所占有的资源,只有当下列四个条件都满足时才会成立:

1.互斥:在任何时刻,每个资源最多只能被一个任务所调用。

2.占有并等待:任务在占有若干资源的同时也可以请求新的资源

3.非抢占:任务已经占有的资源,不能被强制性的拿走,必须又该任务主动释放

4.循环等待:每个任务都在等待环路中下一个任务所占用的资源

最简单的防止死锁的方法是让每个任务都:

得到全部需要的资源在做下一步的工作

用同样的顺序申请多个资源

释放资源使用相反的顺序。

内核允许用户在申请信号量时定义等待超时,以此化解死锁。

转载于:https://www.cnblogs.com/sichenzhao/p/9320332.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值