我理解的Matrix体系结构(ZT) | shijiaying | 2003-12-23 21:41 |
---|---|---|
【 以下文字转载自 Movie 讨论区 】 发信人: edwardgao (贝贝贝贝贝贝贝贝), 信区: Movie 标 题: 我理解的Matrix体系结构(可能含有剧情) 发信站: BBS 水木清华站 (Sun Nov 9 10:15:59 2003), 转信 看完黑三感觉有点乱,如果谈到哲学那可就玄了,我也没有那个能力。 随便说说我理解的Matrix和Zion的体系结构吧。虽然这里边有一些问题我还没理清。 首先,Matrix的硬件体系没有超过图灵机的水平,机器其实不能拥有绝对的自由意志,仍然是所谓的“有限状态自动”。Architect自吹的机器比人类更讲信用,其实是这种体系结构的限制。庞大的硬件体系和超强的运算能力使计算机看起来具有了AI,其实这不过是假象。就像现在的语音识别,图像识别一样,看起来计算机能够听懂看懂,而其实他们只是把这些东西抽象成数据,用统计规律机械地判定而已。那个在火车站的阿三说“爱”时也说这不过是个symbol,一个word。 接下来,这样的硬件体系其实是无法自我更新的,其中无可避免地牵扯到安全性的问题。整个Matrix有一个Kernel,也就是Neo要去升级的代码,为什么非要让一个人携带代码去升级呢?我们可以这样想,操作系统中对内存的管理是有讲究的,系统区、用户区的访问需要不同的特权级,比如你要修改系统区的某些部分,你必须要获得0级特权,这时问题就有了,如果你轻易把代码交给一个程序并让他获得0级特权,则系统实际上出现了两个Kernel,我们下面会分析,由于整个Matrix的程序设计思想,使得这种方法极其危险,并且事实上,Smith就是这种设计思想带来的最大祸害。我们接着说,为什么机器把代码交给人,让人去升级,因为人具有自由意志,或者按我的说法,是一种“无限状态自动机”。Matrix连接人类,其实为自己提供了无限的升级可能。于是Matrix把代码存储在人那里,让人用自己的方法获得特权去读些所有的内存空间,这样比起用程序来,安全得多。下面我们就看看这是为什么。 Matrix的设计思想是严格的对象封装,一个人,一个Agent,一只鸟,乃至房子都是封装好的,并且区分了特权级。系统具有0级特权,读写所有内存,Agent具有1级特权,可以读写除系统内存以外的内存。这也是为什么他们可以把自己复制到另一个身上去的原因。人互相之间不能读些,只能通过一些通用接口互相连接。这里“人”也是不同的,有的人是一个现实世界的人通过接口在Matrix世界里的实现,另一些人则是Matrix虚拟出来的。为了使这些人感觉起来像人类,Matrix的计算模型是抢占式的多任务,所有的程序并发地争夺计算时间、存储空间及各种系统资源。这样很难保证系统的平衡,可是没关系,因为系统具有0特权级,系统时间是由他掌握并且分发的。Smith说掌握时间就掌握了一切,就是这个道理,程序之间的胜负,靠的就是计算时间的抢占。当Smith获得了0级特权,他就开始肆无忌惮地复制自己,分配计算时间,成为了事实上的另外一个Kernel,以至于威胁到了真正的Kernel的安全。可见,用程序升级程序是极端危险的,而人不会觊觎计算机的时间,他们是最安全的升级者。并且按前面的说法,由于人是无限状态自动机,他使得Matrix可以跳出窠臼,不断发展。 接下要来的Zion由于处在系统外部,比较难以理解。究竟他是系统的一部分,还是一个真正的独立反抗机构。从Archetect的话来看,Zion就像一个回收站,所有要删除的人都被暂时安放在里边,定期清空一次。而且似乎是为了升级系统而预留的,好让他们协助“The One”。这一点太过诡异,我还没能彻底想通。 最后,我们看看这一次,也就是第六次的升级过程中,Matrix里发生了什么。开始时,一直到第一集结尾,一切按部就班,Neo获得了0级权限,计算机准备消灭Zion,并让Neo为救Zion进入Kernel升级系统。如果没有Smith,事情的发展应该是这样,乌贼冲进Zion,玉石俱焚;Neo冲入Kernel,却发现其使自己别无选择的要成为一个牺牲者。然而系统出现了大错误,给了Smith系统最高权限。致命的错误使得系统不得不让Neo离开,注意,第二集里Neo选择救Trinity是计算机“让”他离开的,因为Smith逐渐变得不能控制,需要一个能够控制他的进程去消灭它。可是Neo却一直不能回到Matrix内部,此时系统的情况已经不可收拾,Smith占据大片内存空间,Kernel实际被挤到一个角落。可能你会问,为什么系统不直接删除Smith了事?这时大家可以想想杀毒软件是如何工作的。首先你必须获得病毒的特征码,然后再在系统中查找并且删除之,而这时系统根本没有Smith的特征码,想象一下,如果你被病毒搞到无计可施,你会怎么办?Format C:,对吧。Smith要的就是这个效果。 决战之前,Neo来到了Zero-One。计算机不得不定下城盟,实际也重新设置了一些系统参数,使得进攻Zion被放弃。Neo进入了Matrix,不断收集Smith的特征码。 Smith最终进入了Neo的内存空间,不断把自己复制过去,他没有想到的是,Neo这时候已经成了一个管道,就是Linux里头的"|"。他的代码完全被Kernel掌握。于是系统启动了Norton Antivirus 33432,扫描内存,杀杀杀! 这个世界清静啦………… 这就是我理解的Matrix体系结构。望高手指正。 |
有意思 | 老潘 | 2003-12-23 22:32 |
---|---|---|
呢! |