字体:大 中 小
护眼
关灯
上一页
目录
下一页
第贰拾贰章 重组 (上) (第2/3页)
程序员一个个觉悟都挺高,主动“勤俭持家”,恨不得一个时钟周期分两回用。看来没什么好cao心的了。 文件系统这回也打算实现,因为机器的标准配置方案里面有了可以随机访问的外存。 几个月前刚拿内存技术从IBM那里换来了磁盘技术,现在第一批温彻斯特硬盘刚出厂,容量256KB……对,是“K”,不是“M”,也不是“G”……确实惨了点。 这一部分设计的时候是范含亲自cao刀,主要参考了Minix文件系统1.0版,用来应付“极低端”配置还是可以的。不过,感觉比较奢侈的地方仍有很多,这些就只能自己动手丰衣足食了。 磁盘还是照猫画虎的分成引导块、超级块、i节点块、文件信息块和数据块,这些没有必要改。不过文件信息不需要那么多,于是尽可能的精简了一些。 由于是单用户,所有者的用户标识和组标识当然是没必要了,链接数也不需要,因为现在还不打算支持符号链接……都去掉。 另外,文件权限也只需要记载所有者自己的“可读”、“可写”、“可执行”权限就成了,“rwx”只用一组,三位。真正的Unix上面则需要三组,每个文件除了主人自己的权限之外,还要记录工作组内其他用户和全体用户的权限。 文件类型也省略了不少,除了标记是普通文件还是目录,还增加了两种设备文件的标记:“字符设备”和“块设备”。其他的如“符号链接”、“命名管道”和“套接字”,既然暂时用不到,那就不管。 这两部分一共用了一个字节。 长度用两个字节表示,单个文件最大不能超过64k。就现在而言,作为权宜之计,还是比较恰当的。毕竟目前一个硬盘也只能放下四个这种文件而已。 文件占用的磁盘扇区的数量,用一个字节表示。本来这个数量应该按照“块”而不是扇区来统计,一个块可以包含多个扇区。不过现在的磁盘空间没有可供浪费的余地,每个扇区就算一块了。后来PC时代的硬盘一个扇区都是512字节,而现在只能做到256B。 还有一部分应该用来记录文件所占据的所有磁盘块,这个稍微费点劲。 在Minix上面,用了九个元素的短整型数组,前面七个是直接索引,如果文件大小在7k以下,可以快速的直接访问。第八个是一次间接索引,其指向的块记录了其他块的索引;第九个是二次间接索引,顾名思义,就是记录了指向其他记录了指向其他块的索引的索引。 现在用不着这么烦,范含考虑再三,决定只用两个一次间接索引,两个256字节的块,刚好可以储存256个索引用来指向256个数据块,毕竟最大的文件也只需要256块就够了。 这样就有八个字节了,这是范含省吃俭用的结果,好像不能再少了。 为了以后兼容起来不麻烦,还是要尽可能的照顾方方面面,该浪费的地方就是要浪费。 Minix文件系统只保留文件的最后修改时间一个值,没有创建时间、最后访问时间之类的,这次范含也只用一个。只不过,这一个值就占了八个字节,双精度浮点型。公司里面的其他人都觉得这次是过份小心了。 没办法,为了把“千年虫”问题扼杀在萌芽阶段,眼下付出点代价还是值得的。 所谓“千年虫”问题,指的是由于原来DOS系统使用两个字节存储年份,使得2000年会被当作1900年对待从而引发的问题。这两个字节,实际上是两个字符,比如1968年会被存储为字符“6”和字符“8”,而并不是数字“六十八”。 二十世纪末,就因为这个原因,全世界着实恐慌了一阵。结果,除了一些小问题,基本上算是平平安安。从某种意义上讲,“千年虫”问题是炒作出来的问题,并不是真得那么严重。 各类Unix系统就不存在“千年虫”问题,取而代之的是“2038”问题。 这是因为在Unix系统内部,日期和时间是合在一起表示为一个值的。具体说,是采用四个字节32位带符号整数表示从1970年1月1日0时开始流逝的秒数。2的31次方秒大约是68年,所以到了2038年,也面临死线。 这类问题的解决方案没等到2000年就已经提出来了,就是采用双精度浮点型表示日期/时间值,数值的意义通常是从某个起始时间开始流逝的天数。计量时间的零点,通常选择在1899年12月31日0时,至少COM标准就是这么确定的。范含这次的选择却是1753年1月1日,即目前历法“儒略历”正式采用的头一个整年。 整数部分很好理解,小数部分也很好理解,0.5表示半天,不就是12个小时么?采用这种方式,能够以微秒的精度计算宇宙年龄,自然一劳永逸。 业内人士对于这些问题多半是很清醒的,除了一些旧代码和老式的数据库应用之外,影响其实有限。当然,即便如此,解决这个问题也仍然需要很大代价。毕竟热力学第二定律在那儿摆着呢:打烂一个旧世界容易,伟人们大手一挥就能办到,相比之下,建立一个红彤彤的新世界,恐怕不那么简单。 遗憾的是,并非所有人都是“业内人士”。 除了一撮整天宣传“末日审判”的职业传教士,一撮炒作几百年前江湖骗子诺查丹马斯胡言乱语的神秘主义者,一撮唯恐天下不乱以便混水摸鱼多发文章
上一页
目录
下一页