现代操作系统--文件系统--第四章

文件系统

进程终止,保存信息信息丢失。
目前把磁盘当作一种固定大小的线性序列。 并且支持日下两种操作:

  1. 读块。2.写块。

进程(与线程)。地址空间和文件,这些抽象空间均是操作系统中最重要的概念。操作系统中处理问文件的部分称为文件系统(file system)。操作包括文件的构造,命名,存取,保护,管理和实现。

主要从两方面来介绍文件系统。 一,用户使用,二,系统设计。

使用文件系统

文件

文件命名,Linux和windows不同。 windows通过后缀实现分类。
文件结构 操作系统不关心,只是识别为字节,含义只在用户程序中解释。
文件类型: unix分为普通文件(regular file)字符特殊文件(character special file)和块特殊文件(block special file)。目录文件以后讨论。
字符特殊文件和输入/输出有关, 用于串行I/O类设备, 如终端,打印机。块特殊文件重要用于磁盘文件。 本章主要讨论普通文件。
文件存取:现在都是随机的,随机存取文件(random access file)。
文件属性:文件都有自己的属性,有些时候称为元数据。
文件操作:每个系统有针对不同的文件操作有不同的系统调用。创建删除,打开关闭。

目录

目录使用:路径有绝对路径和相对路径的区分。 相对路径指相对于当前目录。 绝对路径:从根目录开始。
目录操作:创建,删除,关闭等,系统调用。


文件系统的实现

文件系统布局:文件系统存放在磁盘上。 多数磁盘划分为一个或多个分区,每个分区中有一个独立的文件系统。 磁盘中0号扇区称为主引导记录。用来引导计算机。 MBR末尾是分区表。 表内是每个分区的起始和结束位置。MBR会去确定第一个活动分区,第一个活动分区内是操作系统。
一个典型的分区:引导块,超级块,空闲空间管理,i节点,根目录, 文件和目录。

文件的实现:
实现存储的关键问题是记录哥哥文件分别用到哪些磁盘块。

  1. 连续分配。 CD-ROM在用。
  2. 链表分配。缺点是找任意一块都要找起点。为了解决问题,取出每个磁盘块的指针字,放入内存中。这样的表格称为文件分配表(File Allocation Table FAT)。但这种发难对于大磁盘而言不合适。
  3. I节点。链表磁盘块地址记录在文件中,只有打开文件是才会需要。节省空间。
目录的实现

目录系统的主要功能是把ASCII文件名映射成定位文件数据所需的信息。 目录文件中存放有目录下文件的文件名和元数据。
目录下文件查找:1.目录下使用散列表,2.查找信息放入告诉缓存。
共享文件: 为了共享文件,使用i节点引用记数。

日志文件系统:日志保存记录系统操作,可以在任务执行奔溃的时候。获得错误现场,并完成他们。 Linux的ext3 和windows的 NTFS都是。
虚拟文件系统:抽象出所有文件系统都共有的部分, 并将这部分代码放在单独的一层。这一层叫VFS。 所有和文件相关的系统调用在最初的处理上都先通过虚拟文件系统,来自用户的调用都是posix标准系统调用,也可以说用户通过POSIX接口连接VFS。
VFS有两个接口对上层的用户进程和对下层的文件系统。不同的文件系统统一先注册到VFS。

文件系统管理和优化

空间管理 :文件会分成很多连续的块。 块大小,经过统计计算均衡设定为4K。 但是现在磁盘超过了1T,有人设定为64K。
除了要记录使用的块,还要记录未使用的空闲块。以及对限额。
文件系统备份:主要使用按日期备份。恢复后检验一致性,通过文件一致性和块一致性检测。

文件系统的性能

硬盘较慢,差内存百万倍性能。
1。最常用的方法是块高速缓存(block cache)或者缓冲区高速缓存(buffer cache)。逻辑上是磁盘,但性能上考虑放在内存中。 使用双向链表,按照使用时间链接起来。
引入问题:改变了buffer的数据,怎么落盘? 答:系统调用周期性检测回写。
2. 块提前读:预测即将使用的块,提前写入高速缓存。提前写只适用于顺序读取的文件,随机存取文件不起作用。
3. 优化磁盘移动轨迹。优化磁盘存放位置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值