- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
网络与分布式操作系统-Piazza
* UNIX中一个文件的绝对路径名由斜杠“/”开头,随后是路径中所经过的所有目录名,中间用斜杠分隔而成,比如:/usr/bin/spell。由于UNIX允许用户设置“当前目录”,因此,从当前目录开始的文件路径名,是它的相对路径名。 UNIX对磁盘的组织 UNIX中,无论是普通文件还是目录文件,都存储在磁盘上。另外,每个文件的i节点也存储在磁盘上。下面讲述这些信息在磁盘上如何分布,UINX怎样来对它们实行管理。 UNIX把文件的存储空间——磁盘想象成是一个由连续物理块构成的文件卷,每个物理块含512个字节。在一个磁盘上,存放着普通文件的信息,存放着目录文件的信息,存放着文件的i节点,还要存放对磁盘存储区的管理信息(比如哪些块是空闲的,哪些块是已分配的等等)。 UNIX文件的物理结构 前面提及,UNIX文件的物理结构采用的是索引结构,这种索引结构是通过每个文件i节点中的数组di_addr[ ]来形成文件存储索引表的。该数组总共有13个元素,每个元素为一个索引项。前10个索引项直接指向文件数据存放的磁盘块号,后3个索引项分别构成一次间接索引、二次间接索引和三次间接索引的多级索引结构。这样,UNIX可以根据文件的大小,通过使用这张存储索引表,形成小型、中型、大型和巨型等不同规模的文件。 1.小型文件的索引结构 通常,每个磁盘块为512个字节。当一个文件的长度在1~10个磁盘块之间时,就称为小型文件。这时,用文件i节点中数组di_addr[ ]的前10个表目,直接指向文件数据存放的磁盘块号。因此,在UNIX中,小型文件是通过i节点中的数组di_addr[ ]构成一级索引表而获得文件在磁盘上的存储位置的。 2.中型文件的索引结构 当一个文件的长度在10~138磁盘块内时,就成为一个UNIX的中型文件。这时除了用到di_addr[0]~di_addr[9]外,还要用到di_addr[10] di_addr[0]~di_addr[9]仍然直接指向文件数据存放的10个磁盘块号,然后又利用di_addr[10]指向一个磁盘块。这块并不存放文件的数据,而是利用它形成又一级的索引。在UNIX中,用4个字节放一个磁盘块号,因此在这个盘块中,可以放128个磁盘块号。这样一来,通过di_addr[10]提供的索引,一个文件就可以达到138个磁盘存储块这么大。 3.大型和巨型文件的索引结构 当一个文件的长度在138~16522磁盘块内时,就成为一个UNIX的大型文件。这时除了用到di_addr[0]~di_addr[9]外,要用到di_addr[10],还要用到di_addr[11] di_addr[0]~di_addr[9]直接指向文件数据存放的10个磁盘块号。然后如同图6-17那样,利用di_addr[10]指向一个磁盘块,由它提供128个磁盘块的索引,从而使文件总共达到138个磁盘存储块这么大。但这还不够,又利用di_addr[11]指向一个磁盘块,由它指向128个磁盘块,每个都是一个索引。这样,通过这128个索引、每个指向128个磁盘块,就又可以得到16384个磁盘块。于是,UNIX的大型文件最多可以拥有16522个磁盘块(即10+128+16384)。 当一个文件所需的磁盘块大于16522个磁盘块时,就成为UNIX的巨型文件了。这时除了用到di_addr[0]~di_addr[9]外,还要用到di_addr[10]、di_addr[11]和di_addr[12]。此时,文件的最大长度可以达到约11亿个字节,但是由于此时要经过多次间接索引,会使系统的查找速度大大降低。有关巨型文件的索引结构和它拥有的规模,留作思考,这里就不具体解释了。 UNIX对文件存储空间的管理 在磁盘上,UNIX总是把文件安排在一般数据存储区(见图6-14)。因此,UNIX对文件存储空间的管理,即是对磁盘上一般数据存储区的管理。在介绍使用“空闲块链”管理磁盘上的空闲块时,曾提及“成组链接”法,并说UNIX操作系统就是采用这种方法来管理磁盘上的空闲块的。下面详细介绍它的实现过程。 在磁盘管理区filsys结构中,有两个内容涉及到磁盘空闲块的管理,一个是由数组s_free[100]构成的一个空闲磁盘块索引表。当一个文件要申请磁盘块时,就到这个索引表中去获得需要的空闲块;当一个磁盘块被释放时,就把它还回到这个索引表中。所以,这个索引表中记录的是当前系统可以直接分配的空闲磁盘块。另一个是s_nfree,它记录了s_free[ ]中现有的可分配的空闲磁盘块数。 从形式上看,利用数组s_free[100]直接管理100个空闲的磁盘块,与利用数组s_inode[100]直接管理100个空闲的i节点相类似,但实际上相差很远。因为除这1
文档评论(0)