“原来是这么写的呀!”奥尔森不高兴的说,“你当时如果说一下拼写,我就不会弄错了!”
“可是也没见你问啊!”范含说,“我以为你早就知道了呢。”
“我怎么会知道?”奥尔森说,“明明是你生造出来的词。”
“确实是生造的,”范含承认,“不过这个发音很标准,完全符合发音规则,直接拼就能写出来。”
“如果没有同音词的话。”奥尔森强调,“既然你没有主动拼写,我当然会以为就是英语里面已经有的词。”
“也对……平时说话确实不需要拼读。”范含说,“实际上我在看到文件的时候才去翻字典查这个‘eunuch,以前还从来没遇到过。”
“我猜也是这样,”奥尔森说,“现在你该解释一下为什么要造这个词了,文件里面相应的部分都要修改。”
“呵呵……真是不好意思,”范含大笑,“真没想到你的人居然会想出那么多借口来阐述命名为这个‘eunuch的重要意义。”
“你还有脸笑!”奥尔森说第一个单词的时候口气还有点儿不高兴,到了最后也忍不住笑出声来。
“不笑了不笑了,”范含板起脸,问,“你知道‘unie的意思吧?”
“知道,就是onlyone。”奥尔森回答。
“和这个有点关系,”范含开始瞎编,“最初我想好的名字是叫‘unix86的,对,后面跟两个阿拉伯数字,一个八一个六。”
“什么意思?”奥尔森问。
“就是运行在x86体系上面的unix。”范含说。
“什么是x86?”奥尔森又问。
“就是咱们的这个处理器架构呀?!”范含回答,“以后会慢慢形成一整套处理器系列的。”
“为什么非得叫x86?”奥尔森继续问。
“呃……”范含轻轻抽了自己一耳光,又说漏了,不过还是强打精神圆谎,“实际上,呃,我是先想好‘unix86这个名字,呃,再给拆成‘unix和‘x86两部分的。”
“怎么那话又绕回来了!”奥尔森说,“你就直截了当的说,‘unix86到底是什么意思?!”
“当然就是‘八荒六合唯我独尊的意思了。”范含总算有急智,找着一辙,“这个‘8就是‘八荒,‘6就是‘六合……我记得教过你这个成语吧?”
“教过,”奥尔森说,“上次我还用过呢。”
“呼……这就好办了。”范含长出一口气,“这个操作系统呢,应该是高度可移植的,所以就去掉了后面表示硬件体系的‘86,只叫‘unix了。”
“真的么?”奥尔森还是有点怀疑。
“真的,”范含特诚恳的回答,“你看我什么时候撒过谎?”
“嗯……这个名字的事就这么算了。”奥尔森说,“操作系统算是有了,你该考虑那一堆杀手级应用了。”
“怎么?不是vax才需要么?”范含奇怪,“现在这样的机器就是做出来也不能算‘杀手。”
“可是如果不做,vax项目根本不会上马。”奥尔森解释,“现在就启动vax项目,对dec来说是一场赌博。虽然我是百分之百相信你,但是其他人,至少要看见一点苗头,才肯同意。”
“好吧,那我就接着搓神灯吧。”范含答应下来,“不过首先得花几天工夫琢磨一下用户需要什么。”
“你怎么不想想这些‘太监们能干什么?”奥尔森问。
“用得着么?”范含口气坚定地反问,“除了硬件限制,还有什么是这个系统干不了的么?”
“唔……这倒是。这个系统的设计确实很灵活。”奥尔森承认,“是有那么一点‘八荒六合唯我独尊的架势……这个成语我用得没错吧?”
“没错,”范含说,“我再教你一个。”
“哪个?”
“千秋万载,一统江湖!”
奥尔森正催着手下人写内核,根据协议,在法律上这些人都算做是for临时雇佣,这也是当初就商量好的,免得到后来在源代码的版权上纠扯不清。
考虑当前条件,太过分的要求范含也没提,只要能勉强实现“协作式多任务”就行。
实际上这个系统有点像最初的苹果as,每个进程启动的时候都向内核申请一块固定大小的内存,申请失败就不能运行。反之,申请成功的话,内核就允许其“三规”:在规定时间到规定地点完成规定动作。
这样一来,大部分内存管理的工作就都由应用程序自己负责,在自己那一亩三分地上面怎么折腾都行,就是不能越界,否则杀无赦……其实内核只要能做到这一点就肯定已经比dos强得多了。
所以,这个内核的内存管理模块相当简单,只要把主内存当作一个堆,能维护好就的了。
进程调度也不复杂,除了shell之外,别的进程都扔进唯一的一个循环队列里面,轮流执行。这种“协作式多任务”的特点就在于要求所有的进程都不能有“人品问题”,即“占着茅坑不拉屎”。只要暂时用不着cu,就必须主动引退,让其他进程执行。
在前一阵子指挥员工写那堆工具的时候,有个意外的惊喜。
范含发现,对于如何编写“举止良好”的代码这一点上,根本用不着谆谆教导。现在的程序员一个个觉悟都挺高,主动“勤俭持家”,恨不得一个时钟周期分两回用。看来没什么好操心的了。
文件系统这回也打算实现,因为机器的标准配置方案里面有了可以随机访问的外存。
几个月前刚拿内存技术从ib那里换来了磁盘技术,现在第一批温彻斯特硬盘刚出厂,容量256kb……对,是“k”,不是“”,也不是“g”……确实惨了点。
这一部分设计的时候是范含亲自操刀,主要参考了ix文件系统10版,用来应付“极低端”配置还是可以的。不过,感觉比较奢侈的地方仍有很多,这些就只能自己动手丰衣足食了。
磁盘还是照猫画虎的分成引导块、超级块、i节点块、文件信息块和数据块,这些没有必要改。不过文件信息不需要那么多,于是尽可能的精简了一些。
由于是单用户,所有者的用户标识和组标识当然是没必要了,链接数也不需要,因为现在还不打算支持符号链接……都去掉。
另外,文件权限也只需要记载所有者自己的“可读”、“可写”、“可执行”权限就成了,“rwx”只用一组,三位。真正的unix上面则需要三组,每个文件除了主人自己的权限之外,还要记录工作组内其他用户和全体用户的权限。
文件类型也省略了不少,除了标记是普通文件还是目录,还增加了两种设备文件的标记:“字符设备”和“块设备”。其他的如“符号链接”、“命名管道”和“套接字”,既然暂时用不到,那就不管。
这两部分一共用了一个字节。
长度用两个字节表示,单个文件最大不能超过64k。就现在而言,作为权宜之计,还是比较恰当的。毕竟目前一个硬盘也只能放下四个这种文件而已。
文件占用的磁盘扇区的数量,用一个字节表示。本来这个数量应该按照“块”而不是扇区来统计,一个块可以包含多个扇区。不过现在的磁盘空间没有可供浪费的余地,每个扇区就算一块了。后来c时代的硬盘一个扇区都是512字节,而现在只能做到256b。
还有一部分应该用来记录文件所占据的所有磁盘块,这个稍微费点劲。
在ix上面,用了九个元素的短整型数组,前面七个是直接索引,如果文件大小在7k以下,可以快速的直接访问。第八个是一次间接索引,其指向的块记录了其他块的索引;第九个是二次间接索引,顾名思义,就是记录了指向其他记录了指向其他块的索引的索引。
现在用不着这么烦,范含考虑再三,决定只用两个一次间接索引,两个256字节的块,刚好可以储存256个索引用来指向256个数据块,毕竟最大的文件也只需要256块就够了。
&nb
第贰拾贰章 重组 (上)[1/2页]