Nachos文件系统管理.ppt

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Nachos文件系统管理

Nachos的文件系统管理 助教:陆彬 邮箱:for0the0honor@ Gongshen Liu Shanghai Jiaotong Univ. 磁盘设备模块实现机制分析 本模块主要在文件文件disk.cc和disk.h中实现。 磁盘设备模拟了一个物理磁盘。Nachos用宿主机中的一个文件来模拟一个单面物理磁盘,该磁盘由道组成,每个道由扇区组成,而每个扇区的大小是固定的。和实际的物理磁盘一样,Nachos以扇区为物理读取/写入的最小单位,每个扇区有唯一的扇区地址,具体的计算方法是: track * SectorsPerTrack + offset Nachos中的文件系统管理 Nachos 是在其模拟磁盘上实现的文件系统。它包括一般文件系统的所有的特性,可以: 按照用户的要求创建文件和删除文件 按照用户要求对文件进行读写操作 对存放文件的存储空间进行管理,为各个文件自动分配必要的物理存储空间,并为文件的逻辑结构以及它在存储空间中的物理位置建立映照关系。 用户只需要通过文件名就可以对文件进行存 放,文件的物理组织对用户是透明的。 Nachos中的文件系统管理 相比实际的操作系统,存在的不足: 现有的文件系统没有实现互斥访问,所以每次只允许一个线程访问文件系统。 只有一级目录,也就是只有根目录,所有的文件都在根目录下。而且根目录中可以存放的文件数是有限的。 文件索引结构采用的都是直接索引,所以Nachos 的最大文件长度不能大于4K. Nachos中的文件系统管理 相比实际的操作系统,存在的不足: 必须在文件生成时创建索引表。所以Nachos 在创建一个文件时,必须给出文件的大小;而且当文件生成后,就不能改变文件的大小。 目前该文件系统没有Cache 机制。 健壮性不够强。当正在使用文件系统时,如果突然系统中断,文件系统中的内容可能不保证正确。 同步磁盘模块(synchdisk.cc synchdisk.h) Nachos 是一个多线程的系统,如果多个线程同时对磁盘进行访问,会引起系统的混乱。所以必须作出这样的限制: 同时只能有一个线程访问磁盘 当发出磁盘访问请求后,必须等待访问的真正结束。 这两个限制就是实现同步磁盘的目的。此模块定义了SynchDisk类,模拟同步磁盘的实现。 位图模块(pbitmap.cc pbitmap.h) 在Nachos 的文件系统中,是通过位图来管理空闲块的。 Nachos 的物理磁盘是以扇区为访问单位的,将扇区从0 开始编号。 所谓位图管理,就是将这些编号填入一张表,表中为0的地方说明该扇区没有被占用,而非0 位置说明该扇区已被占用。 此模块定义了BitMap 类来模拟位图管理。 文件系统模块(filesys.cc filesys.h) 此模块模拟了创建文件、删除文件、打开文件操作。 Create方法 语法: bool Create (char *name, int initialSize) 参数: name:需要创建的文件名 initialSize: 需要创建的文件的初始大小 功能: 在当前的文件系统中创建一个固定大小的文件 文件系统模块(filesys.cc filesys.h) Open方法 语法: OpenFile * Open (char *name) 参数: name:需要打开的文件名 功能: 在当前文件系统中打开一个已有的文件 Remove方法 语法: bool Remove (char *name) 参数: name:需要删除的文件名 功能: 在当前文件系统中删除一个已有的文件 文件头模块(filehdr.cc filehdr.h) 文件头实际上就是UNIX 文件系统中所说的inode结构,它给出一个文件除了文件名之外的所有属性,包括文件长度、地址索引表等等(文件名属性在目录中给出)。 所谓索引表,就是文件的逻辑地址和实际的物理地址的对应关系。 通过文件头可以获取文件的所有信息。Nachos 的文件头可以存放在磁盘上,也可以存放在宿主机内存中,在磁盘上存放时一个文件头占用一个独立的扇区。 打开文件结构(openfile.cc openfile.h) 该模块定义了一个打开文件控制结构。 当用户打开了一个文件时,系统即为其产生一个打开文件控制结构,以后用户对该文件的访问都可以通过该结构。 打开文件控制结构中的对文件操作的方法同UNIX 操作系统中的系统调用。 Read方法 语法:int Read(char *into, int numBytes) 参数:into:读出内容存放的缓冲 numBytes:需要读出的字节数 功能:从文件中读出numByte 到into 缓冲 打开文件结构(openf

文档评论(0)

cgtk187 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档