||
本人IT类专业,一直以来对CPU的中断和异常处理不舒服。好好的执行流程,怎么就让中断或异常给中止?不完美呀。不过,如果细想其实也有原因的。在除法中,除数为0是不合法,但是在除法中这也不可避免。在执行除法指令之前可以进行检查,检查工作要消耗几条指令来进行。因为除数为零的概率很低,几乎不存在,这种检查的意义太小。因此CPU的做法是先执行,如果除数是0,那么就触发一个异常,由异常程序处理。
如果进一步考虑和思索,就感觉CPU的处理问题方式也是一种很好的工作流。任何工作都有意外,有可能出错。为了避免意外,一种方法是每一步都要检查条件是否满足;另一种方法是先做,出了错再处理。计算机的指令是最小的执行单位,如果在执行前检查,其成本则是过于高昂了。
有一些异常发生后,程序往往无法继续再执行,也就正常中止了。因此在2000年左右,很多人用word写文档,有时候写着突然弹出一个框,说内存异常,或者什么异常,程序退出了。自己写的文档没有保存,很长时间的工作也就白费了,只有重新进行。后来,程序多采用线程,也就是说有多个程序在执行,如果做编辑的线程出了错,退出了。其他线程可以继续执行,甚至人不怎么能感觉到。因为这些线程都拥有同一块内存空间,之间有内存共享。一个线程退出了,另外的线程接着工作。程序不退出,工作的结果也就不会丢失,更加友好。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2025-1-10 12:57
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社