操作系统概念笔记11

文件系统实现

1.一个很重要的概念是FCB(文件控制块)

创建一个文件后,它将分配一个FCB(或者如果文件已被创建,则只是从空闲的FCB集合中分配一个)。然后系统把目录信息读入内存,用新的文件名和其它信息填充该目录结构和FCB,并把结果写会磁盘。典型的FCB结构如下:

ch11

 

2.open()系统调用返回的是当前进程打开文件表中某个表项的指针。

ch11

 

3.文件在磁盘上有三种空间分配方法:连续分配、链式分配和索引分配。

  • 连续分配要求每个文件在磁盘上占有一组连续的块。问题:外部碎片问题。随着文件的分配和删除,磁盘空闲空间被分成很多小片。当这些小片小到不足以满足文件连续存储的要求时,就产生了外碎片。(外碎片,是因为碎片是由1、2个块组成的,位于块之外!)

          ch11

  • 链式分配:采用链式分配,每个文件都是磁盘块的链表。磁盘块分布在磁盘的任何地方。目录文件包括文件的第一块和最后一块的指针。优点:文件大小自由变化,没有外碎片。问题:链式分配不能有效支持文件的直接访问。如有读文件的第i块,只能从链表的第一块开始,一块一块的找,直到到达第i块为止; 另一个问题是指针需要空间,解决这个问题的办法是讲多个块组成簇,按簇来分配,这样,就减少了链表的长度,从而减少了指针。

         ch11

      链式分配的变种:FAT(文件分配表)。每个卷的开始部分用于存储该FAT,每块占一个表项。优点是改善了随机访问时间(系统会事先读入FAT信息)

ch11

  • 索引分配

      每个文件都有其索引块,这是一个磁盘块地址的数组,用于索引该文件的数据块。索引块的第i个条目指向文件的第i个块。

ch11

问题:索引块的空间占用很大,比链式分配的指针占用大。比如,每个文件只占用1到2个块,但也得为每个文件分配一个完整的索引块,而这些索引块只用了1、2个项去索引1、2个块。

解决:a.链接多个索引块,组成一个大的索引块,这样可允许大文件的存储;

           b.多层索引

           c.组合方案

              ch11

              ch11

4.空闲空间管理

a.位图/位向量。空闲为1,已分配为0.

b.链表

c.组:改进的空闲链表,将n个空闲块的地址存在第一个空闲块中,大量的空闲块的地址可以很快找到。

d.计数。

 

 

 

 

posted @ 2012-12-03 16:12  Wilson Kwok  阅读(412)  评论(0)    收藏  举报