计算机初期,机器是一发命令就执行。而我们目前的操作系统,包括windows、linux、安卓或ISO等,使用的是消息机制,可以同时管理多个程序的运行和切换,因此当系统忙碌时,命令会等待其它程序释放一些资源之后才能执行。
操作系统也有简单的判断能力,不一定能直接执行你发的命令,比如判断你的命令是否超权限,或判断内存以及其它软硬件条件是否满足你命令的需求,如果不满足则无法执行并抛出错误。只是不能像人一样有运用多方面的知识综合判断并协调修正的能力。
逻辑的悖论是死循环、是bug,但死循环本身不一定是bug。消息机制本质上就是个死循环,在不发命令的时候,会反复执行一个低耗能的空闲(NOP)指令和一个循环跳转指令。消息循环中可以动态挂接或移除一些消息处理指令。死循环不是真正锁死的,它可以接受硬件中断,比如可以通过发送键盘命令来强制结束当前循环,也可以接受其它软件消息的退出指令。定时器也是个死循环,在定时器中设置超时,可以强制中断其它命令的死循环。还有一种死循环是守护程序,可以用于时刻监控或操作其它软件的执行,比如病毒或杀毒监控。还有一种典型的死循环是服务器程序,我们看到的网页就是靠服务器程序来即时处理请求并发送数据的。