【闲谈】Inception,一个完美的UNIX程序

Standard

看完Inception(盗梦空间),我的第一感觉,这是一个完美的UNIX程序。

纵观全片,故事情节简单来讲,就是一群有着特殊技能的盗梦人进入别人的梦境,植入想要对方做到的梦。而梦里套梦,套的梦里再有梦。但最终,他们被最外面的梦唤醒,一切的子梦都一并被唤醒。

这就是一个典型的UNIX程序编写套路。

在UNIX程序中,当fork一个子进程的时候,主进程往往wait子进程的完成,获得它的状态。这不就是电影中,每一个下一层梦境开始时,在上一层梦中等待的那个人么?每fork一个子进程,它都有一个父进程;没一个下一层的梦,都有一个上层的梦做支撑。

如果下一层的梦还没有完成,而上一层的梦就醒了,则会导致做梦的人掉入梦境的无底深渊。当一个子进程完成退出,而父进程不进行wait回收,则子进程就变成了一个僵尸进程。

然而,不论是那一场梦,只要在最上层进行唤醒,则所有的梦都一并结束。同样,不管你是哪一层子进程,一个signal信号就可以让它跳出结束。又一个完美对应。

最后,当影片结束时,莱昂纳多所扮演的男主角在桌子上转动陀螺,用以确定他到底是在梦中,还是在现实中。如果在现实中,则陀螺会最终停下来,而在梦中它会一直转下去。影片在这里戛然而止,为观众留下想象空间。

正如对一个进程来说,其实,你不知道自己到底是从哪儿来的,到底是自己从头开始的,还是exec别的进程空间。而且,不论怎么说,你只是一个运行在Operating System控制之内的进程。你以为自己控制了计算机的所有资源,其实,你只是OS的一个进程,一个受限的进程而已。

One thought on “【闲谈】Inception,一个完美的UNIX程序

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s