此帖出自单片机论坛
最新回复
既然能提出问题,那肯定早有别人研究过了。
高级语言为什么可靠?例如C。
1、在你分模块写程序之后,C能保证即使这段程序跑飞,它只可能在当前模块里跳来跳去,不可能跳出本模块跳到其他的模块去影响别人/把瘟疫传染给别人。
C编译器不会连这点功能都没有。
2、如果当前运行模块里有处理硬件的功能,当模块程序跑飞时,岂不要发生控制紊乱?
这就是分层设计的必要。
任何操作系统都设计为:只有内核层才能处理硬件!其它任何核外层模块都只能通过专用接口向内核申请做处理硬件的服务。而内核是全系统最坚固可靠(rubust)的部分,虚拟硬件,是不会乱(跑飞)的。
3、有没有可能一个跑飞的程序,在模块里跳来跳去,就恰好跳到申请内核服务的接口那乱申请硬件动作?
这就像一个人在一个迷宫里撞来撞去,恰好就撞到了那个出口(接口),但是除非他已经回到了规则的轨道(迷径)。而且即使这样出到了内核层,也要被内核严格审查之后才能进行硬件服务。这些都不是编程员担心的事了。
4、如果跑飞的程序进入了死循环,岂不是死机了?
一个OS 十几到几十ms调度一次,每次调度都将终止跳乱的模块程序而恢复到其它模块任务重新开始。即使死机,不会超过一次调度间隔时间。
详情
回复
发表于 2008-3-18 10:39
| ||
|
||
| |
|
|
回复:关于软件陷阱的问题请教各位
此帖出自单片机论坛
| ||
|
||
回复: 关于软件陷阱的问题请教各位
此帖出自单片机论坛
| ||
|
||
EEWorld Datasheet 技术支持