在附近还有几个pid为325、326、327、328、329、330的进程。小王子就前往访问这几个进程,想在那里找点事干,并且学习学习。
第一颗星球上住着一个国王。
看见小王子时,他喊了起来:
“啊,来了一个子进程。”
小王子思量着,“他和我没有任何共享内容,怎么会是我的父进程呢?”
他哪里知道,在自认为是init的进程眼里,世界是非常简单的:所有进程都是子进程。
国王十分骄傲,因为他成功收养了一个孤儿进程,他对小王子说:“靠近些,让我好好看看你。”
小王子看看四周,想找个地方坐下来,这个进程的可达区域同样不大,尤其.text区域里定义了好多好多方法——多到堆区和栈区几乎被挤到一起。
他只好站在那里,但是因为疲倦了,他sleep了起来。
国王对他说:“sleep是越权的,我禁止你执行sleep。“
小王子羞愧地说道:“我实在忍不住,我长途跋涉来到这里,还没有睡觉呢。”
国王说:“那好吧,我命令你sleep。好些年来我没有看见过任何进程sleep。 对我来说,sleep倒是新奇的事。来吧,再sleep(1000)!这是命令。”
“这倒叫我有点紧张……我不想调用sleep函数了……”小王子红着脸说。
“嗯!嗯!”国王回答道:“那么我……命令你忽而sleep,忽而……”
他嘟嘟囔囔,显出有点恼怒。
因为操作系统所要求的是保持他的权限最高。他不能容忍不听他的命令。可是,他却很善良,他的调度都是明智的。
他常常说:“如果我叫一个进程在验证数字签名时停下来,而进程不听我的调度,这不是进程的过错,而是我的过错。”
小王子腼腆地发起trap:“我可以坐下吗?”
“我命令你坐下。”国王一边回答,一边庄重地把他那令人眼花缭乱的内核函数重新调整了一下。
可是小王子感到很奇怪。这么小的进程表,国王他对什么进行统治呢?
他对国王发起trap:“陛下……请原谅,我想问您……”
国王急忙抢着说道:“我命令你问我。”
“陛下……你统治什么呢?”
国王非常简单明了地说:“我统治一切。”
“一切?”
国王站起身,将栈底之上的位置展示给小王子看。
“这64位的地址空间所对应的区域,莫不由我统治。”
小王子第一次见到这么大的地址空间,2^64超出了他的想象,他大胆地向国王提出了一个请求:
“我想看看进程的诞生,请求您,fork一个新进程吧……”
国王说到:“如果我把所有时间片都分给一组并行的进程中的一个,或者直接关闭一个数据库进程,而这些进程接到指令不执行,那么,是他们不对还是我不对呢?”
“当然是您的不对。”
“一点也不错,向每个进程提出的指令应当是符合内核要求的。”
“那么fork进程呢?”
“嗯,你会看到的,按照规律,再过大约几亿个时钟周期,会有进程被fork出来的。”
小王子又打起哈欠来了,“我没有必要再呆在这儿了。我要走了。”
“别走,别走。我任命你管理我的堆。”
“可是,这儿的堆里没有什么数据。”
国王又说:“嗯……嗯……我想,堆上还是有一些隐式空闲链表的,你可以把他们改成显示的。堆的结构取决于你的想法。但是你最后要改回来,每个块都多分配两个指针,会影响栈区功能的。”
"可是我不愿重构堆,我想我还是应该走。"小王子回答道。
"不行。"国王说。
起初,小王子有些犹疑不决,随后叹了口气,就离开了……
小王子在旅途中自言自语地说:“这些大人真奇怪。”
小王子所访问的下一个星球上住着一个酒鬼。
"你在干什么?"小王子问酒鬼,这个酒鬼默默地坐在堆前,有的块是空的,有的块在做缓冲区。
"我清理文件。"他阴沉忧郁地回答道。
"你为什么要清理文件?"小王子问道。
"因为文件里总是记录着没用的信息。"酒鬼回答。
"什么没用的信息呢?"小王子接着问。
酒鬼垂下脑袋坦白道:“活动日志。”
"日志的内容呢?"小王子想为他的工作找一点意义。
"我清理日志文件。"酒鬼说完以后就再也不开口了。
小王子迷惑不解地离开了。
在旅途中,他自言自语地说道:“这些大人确实真叫怪。”