操作系统概念笔记11. 文件系统实现

文件系统结构

  • 文件系统采用磁盘进行存储:

     支持原地重写

     支持顺序访问和随机访问

     内存和磁盘间I/O传输以块为单位

每个卷有引导控制块,从该卷引导操作系统的所需信息。

卷控制块:包含卷的详细信息

整个系统的打开文件表:包含文件控制块(FCB)

FCB包含文件权限、文件日期、文件所有组、文件大小、文件数据块位置等

每个进程的打开文件表:指向整个系统的打开文件表

 

文件系统实现

(每个卷第一块)引导控制块可以包含从该卷引导操作系统的所需信息

(每个卷)卷控制块包含卷的详细信息

(每个文件系统)目录结构

每个文件的文件控制块包含文件的详细信息

 

目录实现

线性列表

哈希表

 

分配方法

  • 连续分配:每个文件在磁盘上占有一组连续的块

问题:1. 类似动态存储分配(碎片)2. 难以确定文件需要的空间

  • 链接分配:每个文件的文件块通过链表连接起来

问题:1.只支持顺序访问  2. 指针空间  3. 指针可能会丢失

  • 索引分配:每个文件的所有链表指针都放在一个索引块中

 问题:性能有所欠缺

 

空闲空间管理

位图:每块用一个bit来表示是否空闲

链表

组:第一个空闲块中存储n个空闲块的地址,这些块的前n-1个为空,最后一块包含另外n个空闲块的地址

计数:链表中记录第一块的地址和紧跟第一块的连续空间块的数量

 

效率与性能

缓冲区缓存:缓存物理磁盘块

页面缓存:采用虚拟内存技术,将文件数据作为页来缓存,更加高效

双缓存:内存映射线从FS中读入磁盘块,存储再缓冲区缓存,再复制到页面缓存,供内存映射I/O操作

统一虚拟内存:进程页面和文件数据都采用页面缓存

无统一缓冲区缓存的I/O:

采用统一缓冲区缓存的I/O:

同步写&异步写区别:是否缓存写数据

随后释放:一旦请求下一个页面,就从缓冲区中删除一个页面

预先读取:请求的页面和一些之后的页面一起读取并缓存

 

 

NFS

  • 安装协议:

     服务器维护输出列表(可以安装的本地文件系统,允许安装的机器名称)

     当服务器收到安装请求时,返回文件句柄标识安装目录

     服务器维护客户机以及对应当前安装目录

  • NFS协议:

     为远程文件提供RPC操作

     没有打开和关闭文件操作(无状态)

     每个NFS请求包含序列号,用来确定请求是否重复或缺失

  • 路径名称转换:

     客户将路径名称解析成单独的文件条目(如/use/local/dirl/file.txt解析成use, local, dirl)

     每个目录执行NFS查找调用,遇到安装点,发送RPC给服务器

     客户机缓存路径名称转换

  • 远程操作:

     RPC获取文件块和文件属性,缓存在本地

     打开文件时,检查缓存是否需要更新

     远程操作采用缓存数据

     客户机在服务器确认数据写到磁盘后,释放块

发布了59 篇原创文章 · 获赞 0 · 访问量 2854

猜你喜欢

转载自blog.csdn.net/I_ren/article/details/105689755