打印

关于软件陷阱的问题请教各位

[复制链接]
1987|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wkgong|  楼主 | 2008-3-16 15:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
 我最近看了一些关于软件陷阱的技术**,但有一个凝问。我想程序一旦飞跑,它是很无规律的,飞跑的程序不一定落在软件陷阱内,也很可能会落入其它的程序上,那么,也会造成系统工作的紊乱。在此,请教各位大侠,有了软件陷阱之后,飞跑的程序就一定落入其中吗?是不是也有我想的那种情况发生呢?如果发生请问如何解决?谢谢!

相关帖子

沙发
wegoinrain| | 2008-3-16 18:09 | 只看该作者

XX

世界上没有东西是百分百的,只是增加了软件可靠性,还和你硬件很大的关系!!

使用特权

评论回复
板凳
zhlp8877| | 2008-3-16 21:43 | 只看该作者

是这样

你说的完全是有可能的,软件陷阱大多在一些大范围的跳转指令后面,它属于事后的一种补救措施,所以具体出事出到多大,出到什么程度是不好预计的。因此软件陷阱是尽可能的让MCU回到正常轨道上或到某个特定的处理程序里。

使用特权

评论回复
地板
wxj1952| | 2008-3-18 10:03 | 只看该作者

既然能提出问题,那肯定早有别人研究过了。

高级语言为什么可靠?例如C。
1、在你分模块写程序之后,C能保证即使这段程序跑飞,它只可能在当前模块里跳来跳去,不可能跳出本模块跳到其他的模块去影响别人/把瘟疫传染给别人。
  C编译器不会连这点功能都没有。

2、如果当前运行模块里有处理硬件的功能,当模块程序跑飞时,岂不要发生控制紊乱?
    这就是分层设计的必要。
    任何操作系统都设计为:只有内核层才能处理硬件!其它任何核外层模块都只能通过专用接口向内核申请做处理硬件的服务。而内核是全系统最坚固可靠(robust)的部分,虚拟硬件,是不会乱(跑飞)的。

3、有没有可能一个跑飞的程序,在模块里跳来跳去,就恰好跳到申请内核服务的接口那乱申请硬件动作?
   这就像一个人在一个迷宫里撞来撞去,恰好就撞到了那个出口(接口),有这样的概率吗?而且除非他已经回到了规则的轨道(迷径)。即使这样出到了内核层,也要被内核严格审查之后才能进行硬件服务。这些都不是编程员担心的事了。

4、如果跑飞的程序进入了死循环,岂不是死机了?
   一个OS 十几到几十ms调度一次,每次调度都将终止跳乱的模块程序而恢复到其它模块任务重新开始。即使死机,不会超过一次调度间隔时间。

使用特权

评论回复
5
dld2| | 2008-3-18 10:13 | 只看该作者

路过

真是想当然。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

20

帖子

0

粉丝