系统架构漫谈---为什么windows是不稳定的
大家都知道windows的稳定性比较差,以前的蓝屏这些就不说了,凡是用电脑的,那个没有遇到各种病毒,木马,广告插件等等,以至于现在杀毒软件都变成了一个产业.
我的看法是,windows的脆弱性和不稳定性,根本源头在他本身的系统架构上.如果这个系统架构不进行根本性的变革,那么这个系统稳定性的问题是解决不了的.
这个系统架构的问题,一是window采用的系统消息机制;一是windows上的可执行文件格式.这是两个很重大的问题.
先说消息机制,整个windows的应用程序,都是作为一个注册的窗口实例在运行,在这个运行过程中,每发生任何的情况,所有的消息都是发送给操作系统本身 ,再由操作系统来调用程序的对应处理功能.这里存在的问题有几个.一个是消息太多时可能回丢失和阻塞,造成界面上没反映甚至死机的情况;另一个是很多程序会编写钩子函数来截获系统的消息调用,这些钩子函数在保证自身功能的同时,实际上改变了原来的系统消息流向,甚至这些钩子函数之间可能有各种冲突,这样造成的整体复杂性是难以控制的.而现在这种开发方式是非常普遍的,输入法,杀毒软件等等都采用这种技术来做.
最后造成的情况是:在很多时候,你根本无法描述系统内到底有多少进程在同时跑,这些进程又是如何相互作用的.长期运行下来,系统的稳定性便难以控制.
另一个架构问题是可执行文件格式.windows上面的可执行文件格式是公开的,包括DLL的文件格式也是公开的.因为本质上就是一段汇编代码.因此这给直接修改exe文件和dll文件带来可能.你可以找到一个文件,在他尾巴上加上一段代码,在程序启动时先调到这段代码执行,再返回去继续执行.甚至采用网页的方式,直接下载一个文件,形成一个可执行文件都可以.这个问题的根源在于整个可执行文件是透明公开的,本身没有防止篡改的额外设计,因此从exe文件上就没有任何的安全保证.很容易被病毒攻破.
windows要解决这些问题,恐怕还得真向unix系统学习学习,仔细升级一次才行.
否则一天到晚打那么多补丁,用户实在受不了了.
我的看法是,windows的脆弱性和不稳定性,根本源头在他本身的系统架构上.如果这个系统架构不进行根本性的变革,那么这个系统稳定性的问题是解决不了的.
这个系统架构的问题,一是window采用的系统消息机制;一是windows上的可执行文件格式.这是两个很重大的问题.
先说消息机制,整个windows的应用程序,都是作为一个注册的窗口实例在运行,在这个运行过程中,每发生任何的情况,所有的消息都是发送给操作系统本身 ,再由操作系统来调用程序的对应处理功能.这里存在的问题有几个.一个是消息太多时可能回丢失和阻塞,造成界面上没反映甚至死机的情况;另一个是很多程序会编写钩子函数来截获系统的消息调用,这些钩子函数在保证自身功能的同时,实际上改变了原来的系统消息流向,甚至这些钩子函数之间可能有各种冲突,这样造成的整体复杂性是难以控制的.而现在这种开发方式是非常普遍的,输入法,杀毒软件等等都采用这种技术来做.
最后造成的情况是:在很多时候,你根本无法描述系统内到底有多少进程在同时跑,这些进程又是如何相互作用的.长期运行下来,系统的稳定性便难以控制.
另一个架构问题是可执行文件格式.windows上面的可执行文件格式是公开的,包括DLL的文件格式也是公开的.因为本质上就是一段汇编代码.因此这给直接修改exe文件和dll文件带来可能.你可以找到一个文件,在他尾巴上加上一段代码,在程序启动时先调到这段代码执行,再返回去继续执行.甚至采用网页的方式,直接下载一个文件,形成一个可执行文件都可以.这个问题的根源在于整个可执行文件是透明公开的,本身没有防止篡改的额外设计,因此从exe文件上就没有任何的安全保证.很容易被病毒攻破.
windows要解决这些问题,恐怕还得真向unix系统学习学习,仔细升级一次才行.
否则一天到晚打那么多补丁,用户实在受不了了.