• blacklagoonost1 > v0.1书稿第七章文件系统lab5(v0.1)
  • v0.1书稿第七章文件系统lab5(v0.1)

    免费下载 下载该文档 文档格式:PDF   更新时间:2009-08-02   下载次数:0   点击次数:1
    文档基本属性
    文档语言:Simplified Chinese
    文档格式:pdf
    文档作者:abc
    关键词:
    主题:
    备注:
    点击这里显示更多文档属性
    第七章. 文件系统(lab5)(v0.1)
    7.1. 实验目标
    内核是操作系统最基本的部分. 它是为众多应用程序提供对计算机硬件的安全访问的一 部分软件, 这种访问是有限的, 并且内核决定一个程序在什么时候对某部分硬件操作多长时 间.内核分类为微内核和单内核模式. 微内核(Microkernel kernel) :在微内核中,大部分内核都作为单独的进程在特权状态 下运行,他们通过消息传递进行通讯.在典型情况下,每个概念模块都有一个进程.因此, 假如在设计中有一个系统调用模块, 那么就必然有一个相应的进程来接收系统调用, 并和能 够执行系统调用的其他进程(或模块)通讯以完成所需任务.在这些设计中,微内核部分经 常只是个消息转发站: 当系统调用模块要给文档系统模块发送消息时, 消息直接通过内核转 发. 这种方式有助于实现模块间的隔离. (某些时候, 模块也能够直接给其他模块传递消息. ) 最根本的思想还是要保持微内核尽量小, 这样只需要把微内核本身进行移植就能够完成将整 个内核移植到新的平台上. 其他模块都只依赖于微内核或其他模块, 并不直接直接依赖硬件. 微内核设计的一个长处是在不影响系统其他部分的情况下, 用更高效的实现代替现有文 档系统模块的工作将会更加容易. 我们甚至能够在系统运行时将研发出的新系统模块或需要 替换现有模块的模块直接而且迅速的加入系统. 另外一个长处是无需的模块将不会被加载到 内存中,因此微内核就能够更有效的利用内存. 单内核(Monolithic kernel) :单内核是个很大的进程.他的内部又能够被分为若干模块 (或是层次或其他) .但是在运行的时候,他是个单独的二进制大映象.其模块间的通讯是 通过直接调用其他模块中的函数实现的,而不是消息传递. MIT 这次实验是在前面实验的基础上,实验一个简单的基于磁盘的微内核方式的文件 系统,文件系统本身作为一个用户进程运行,可以支持对层次目录结构中的文件进行 create,read,write 和 delete 操作;并在此基础上实现类似 Unix 的 exec 功能的 spawn 功能,从 磁盘文件系统装入并运行一个可执行文件.其他进程通过 IPC 请求来访问文件系统服务. 该实验分为 2 部分:文件系统服务器,客户端和 Spawn 函数.前者为其他进程提供访问文 件系统的服务,客户端进程通过发送 IPC 请求完成文件的操作;后者从文件系统加载一个 进程运行. 本实验中的函数主要集中在 fs 和 lib 目录下的文件中: fs/fs.c fs/serv.c lib/file.c lib/spawn.c 在实验过程中, 为了保证大家自己写的程序段的正确性, 系统安排了一些检查函数, JOS 在开启文件系统的时候进行检查, 与实验 2 中检查函数类似, 如果这些检查函数发现大家写 的程序不符合实验原来的设想的话(主要是一堆的 assert) ,就会提前 panic 掉.写完文件系
    统相关函数可以让利用检查程序进行检查,以确保走的是正确的路. 主要的检查函数有: check_write_block(void); 该 函 数 通 过 先 打 乱 superblock 然 后 重 新 读 回 , 检 查 函 数 write_block()是否能正常工作. fs_test(); 该 函 数 用 于 测 试 我 们 写 的 操 作 文 件 的 函 数 是 否 正 确 , 包 括 file_open();file_get_block();file_flush();file_set_size();file_truncate();file_rewrite();等.
    7.2. 背景知识
    到目前为止, 我们还只是单用户的操作系统, 因此文件系统目前不支持权限和属主等属 性,目前也不支持硬链接,符号链接,时间戳和设备文件.对于磁盘文件系统的结构我们简 单介绍一下. 许多类 UNIX 操作系统将磁盘分成两个域:inode 区域和 data 区域.inode 用来保存文 件的状态属性,以及所指向数据块的指针.data 区域中包含了 data 块,这里存放文件的内 容和目录的元信息(包含的文件名以及指向文件 i 节点的指针) .如果文件系统中的多个目 录都指向文件的 inode 节点, 则称此文件为硬件链接的. JOS 系统中, 在 由于不支持硬连接, 用不到 inode,只要把文件的元数据存放在所属的目录里就可以了. 基于磁盘的文件系统结构主要由 4 部分组成: 1. 扇区(Sector)和块(Block) 2. 超级块(Super block) 3. 块位图(Block bitmap) 4. 文件元数据(file meta-data) 扇区(Sector) : Sector 是磁盘执行读写操作的单位, 一般是 512 字节, 扇区大小是一个磁盘硬件的属性. 块(Block) : Block 是文件系统分配和使用磁盘空间的单位,是 Sector 的整数倍(本实验里是 4096 个字节,与页的大小相等) .块是一个操作系统使用磁盘的属性. 超级块(Super block) : 一个特定的物理位置(一般是磁盘的第一块或者最后一块) .包含描述文件系统的元数 据:block 的大小,磁盘大小,根目录位置,文件系统挂载的时间,上次进行磁盘检查的时 间等等.大多数真正的文件系统维护多个超级块,通过复制分散到不同的磁盘分区上,用来 防止超级块损坏带来的问题. 在本实验中,inc/fs.h 中的 Super 结构定义了磁盘布局.JOS 系统中只有一个超级块为 block1,block0 存放 boot sector 和磁盘分区表. 块位图(Block bitmap) : 文件按系统必须管理磁盘上的存储块以保证给定的磁盘块在一个时刻仅用于一种目的. 使用块位图来管理空闲磁盘块,容易存储,并可以节省磁盘空间(空间换时间,带来的在内 存中扫描位示图表的时间代价与之后进行的磁盘 I/O 相比是微不足道的) .为了建立一个空 闲块位图,在磁盘上保留足够大的连续空间,为每个磁盘块设置一个位. 在 JOS 中, block2 开始为块位图, 涵盖范围包括所有的磁盘块, 也包括: block0, block1 和位图块本身. 文件元数据(file meta-data) : 在 JOS 系统中,文件的元数据由 inc/fs.h 中的结构 File 来描述:包括:文件名,大小,

    下一页

  • 下载地址 (推荐使用迅雷下载地址,速度快,支持断点续传)
  • 免费下载 PDF格式下载
  • 您可能感兴趣的
  • blackmirror1  假面骑士black1  blackjack2ne1  山1black  blackhole1.0  乐pada107black  leicax1black  blackmirrors1e1  blackmirror1下载  blackmirrors1