【操作系统】文件系统(一)

  1. 为什么要引入文件系统?
    在大容量magnetic disk出现之前,数据和程序都是存储在磁带上,那时还没有文件的概念。当大容量的磁盘出现了以后,需要将数据或者程序存储在磁盘上。如果没有文件,我们只能自己管理数据在磁盘上的位置。例如一个程序或者数据被分成若干个子块,每个子块都分布在磁盘的不同的位置,读取一个数据时,要手动地逐个读取每个子块才能获取完整的数据。这样就显得非常麻烦,尤其是当文件被增删改查的时候,管理磁盘空间就变得非常繁琐。
    有了文件这个虚拟化概念以后,这个文件就是逻辑的存储单元,是一组相关的数据的集合。这样有了文件以后,用户可以直接通过文件来访问数据,OS封装了所有对磁盘的操作。
  2. 文件系统
    文件系统是对文件的管理系统。文件系统应该具有以下功能:
  • 按照文件名查找文件
  • 通过文件的逻辑地址找到磁盘上的物理地址
  • 文件的读写
  • 安全访问
  • 文件占用的磁盘空间的分配与回收

文件系统与内存管理系统比较

  • 都是管理空间,分为连续存储和不连续存储
  • 将一个进程的空间分页存储在memory,用一个页表保存逻辑页到物理页的映射关系
  • 文件系统将一个文件分块存放于外存,文件控制块包含文件定位信息。

文件的结构

  • 流式文件: 文件被OS视为字节流,各个字节的意义有使用文件的程序解释
  • 记录式文件:由OS解释记录

文件的(逻辑)访问方式

  • 顺序访问: 程序依次访问文件的内容
  • 直接/随机访问: 程序访问文件,依据每个文件的逻辑位置,进行访问

文件的物理存储

  • 磁带: 顺序存储
  • 磁盘: 直接/随机存储。文件可以连续、链表式或者随机存放(需要通过类似页表的索引结构访问)。将磁盘等分成物理块(block),利于文件不连续存放(类似将内存等分成页),提高了磁盘空间的利用率。
    - 顺序结构
    - 链式结构:易于扩展,不利于随机访问
    - 索引结构:文件不连续存放,用一个索引表定位文件块的物理地址(类似于内存的页表)。
    - 多级索引:解决索引表过大的问题

文件控制块(FCB)(类似PCB?)
描述文件的数据结构,包含:

  • 文件名
  • 创建者
  • 文件物理位置信息
  • 权限

文件目录(directory)
利用文件名找到对应文件控制块(难道用的是类似java里的TreeMap? 排序Map?)

  • 一级目录
  • 二级目录
  • 树形目录
  • 无环图目录(可能一个文件属于不同的目录)

空闲磁盘空间管理

  • bitmap: 0-空闲,1-占用
  • 空闲块成组链接
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值