操作系统 File System知识点

文件系统

学堂在线

文件系统和文件

  • 文件系统是操作系统中管理持久性数据的子系统,提供数据存储和访问功能
    • 组织、检索、读写访问数据
    • 大多数计算机系统都有文件系统
  • 文件是具有符号名,由字节序列构成的数据项集合
    • 文件系统的基本数据单位
    • 文件名是文件的标识符号

File System components

  • Naming: Interface to find files by name, not by blocks
  • Disk Management: collecting disk blocks into files
  • Protection: Layers to keep data secure
  • Reliability/Durability: Keeping of files durable despite crashes, media failures, attacks, etc.

文件系统的功能

  • 分配文件磁盘空间
    • 管理文件块的位置和顺序
    • 管理空间空间的位置
    • 分配算法
  • 管理文件集合
    • 定位:通过名字找到文件
    • 命名
    • 文件系统结构:文件组织方式
  • 数据可靠和安全
    • 安全:多层次保护数据安全
    • 可靠:
    • 持久保存文件
    • 避免系统崩溃,媒体错误,攻击等

文件属性

  • 文件属性:名称、类型、位置、大小、保护、创建者、创建时间
  • 文件头:文件系统元数据中的文件信息
    • 文件属性
    • 文件存储位置和顺序

打开文件和文件描述符

  • 文件访问模式
    • 进程访问数据前必须先打开文件
  • 内核跟踪进程打开的所有文件
    • 操作系统为每个进程维护一个打开文件表
    • 文件描述符是打开文件的标识

文件描述符

  • 已打开文件的状态和信息
    • 文件指针
    • 最近一次读写位置
    • 每个进程分别维护自己的打开文件指针
    • 文件打开计数
    • 当前打开文件的次数
    • 最后一个进程关闭文件时,将其从打开文件表中移除
    • 文件的磁盘位置
    • 缓存数据访问信息
    • 把一部分磁盘上的文件内容缓存到内存当中
    • 访问权限
    • 每个进程的文件访问模式

文件的用户视图和系统视图

  • 用户视图
    • 用户进程看到的:持久的数据结构
  • 系统视图
    • 数据块的集合
    • 数据块是逻辑存储单元,可能由多个扇区组成,
    • 扇区是物理存储单元
    • 块大小!=扇区大小

用户视图到系统视图的转换

  • 进程读文件
    • 获取字节所在的数据块
    • 返回数据块内对应部分
  • 进程写文件
    • 获取数据块
    • 修改数据块中对应部分
    • 写回数据块
  • 文件系统中的基本操作单位是数据块
    • 例如,即使getc()和putc() 每次只访问1字节的内容,也需要缓存目标数据4096字节

访问模式

  • 操作系统需要了解进程如何访问文件
  • 顺序访问:按字节依次读取
    • 大多数的文件访问都是顺序访问
  • 随机访问:从中间读写
  • 索引访问:依据数据特征索引
    • 通常操作系统不提供完整索引访问
    • 一种做法是:在操作系统上面通过数据库建立索引访问方式

文件内部结构

  • 无结构
    • 单词、字节序列
  • 简单记录结构
    • 分成若干列
    • 固定长度
    • 可变长度
  • 复杂结构(操作系统提供一定程度的判断)
    • 格式化的文档
    • 可执行文件

分层文件系统

  • 文件以目录的方式组织起来
  • 目录是一类特殊的文件
    • 目录的内容是文件索引表<文件名,指向文件的指针>

目录操作

  • 典型目录操作
    • 搜索文件
    • 创建文件
    • 删除文件
    • 列目录
    • 重命名文件
    • 遍历路径
  • 操作系统应该只允许内容修改目录
    • 确保映射的完整性
    • 应用程序通过系统调用访问目录

目录实现

  • 文件名的线性列表,包含了指向数据块的指针
    • 编程简单
    • 执行耗时
  • 哈希表- 哈希数据结构的线性表
    • 减少目录搜索时间
    • 冲突 - 两个文件名的哈希值相同
    • 目录表每一项长度是固定的??

文件别名

  • 两个或多个文件名关联同一个文件
  • 实现方法
    • 硬链接:多个文件项指向同一个文件
    • 软连接:以“快捷方式”指向其他文件
    • 通过存储真实文件的完整路径

文件目录的循环

  • 如何保证没有循环?
    • 只允许到文件的链接,不允许到子目录的链接??
    • 增加链接时,用循环检测算法确定是否合理,开销大
  • 实际上,限制路径可遍历文件目录的数量

名字解析(路径遍历,找一个文件)

  • 名字解析:把逻辑名字转换成物理资源
    • 根据路径名,在文件系统中找到实际文件位置
    • 遍历文件目录直到找到目标文件

文件系统种类

  • 磁盘文件系统
    • 文件存取在数据存储设备上,如磁盘
  • 数据库文件系统
  • 日志文件系统
  • 网络/分布式文件系统
  • 特殊/虚拟文件系统

常用文件系统

Disk Management Policies

  • Basic entities on a disk

    • File: user-visible group of blocks arranged sequentially in logical space
    • Directory: user-visible index mapping names to files
  • Access disk, two ways

    • vector->[cylinder,surface,sector],not used anymore
    • Logical Block Addressing(LBA): every sector has integer address from zero up to max number of sectors
    • controller translates from address ->physical position
  • Need way to track free disk blocks

    • link free block together ->slow
    • use bitmap to represent free space on disk
    • what is bitmap?
      • 位图文件(Bitmap),扩展名可以是.bmp或者.dib。位图是Windows标准格式图形文件,它将图像定义为由点(像素)组成,每个点可以由多种色彩表示,包括2、4、8、16、24和32位色彩。例如,一幅1024×768分辨率的32位真彩图片,其所占存储字节数为:1024×768×32/(8*1024)=3072KB
  • Need way to structure files :File Header

    • Track which blocks belong at which offsets within the logical file structure

    跟踪块位于逻辑文件结构的哪里

    • Optimize placement of files‘ disk blocks to match access and usage patterns

    优化块的分配, 为了匹配访问和使用模式

File System

  • Layout
    • contiguous allocation
    • linked allocation
    • inode allocation
  • Contiguous allocation - basics

    • locating files is easy.
    • deleting files is easy
    • allocating files
    • cause External Fragmentation
    • Defragmentation process may help,but expensive
  • Linked allocation

    • Keep the file size in the root directory
    • Cause Internal Fragmentation
    • a file is not always a multiple of the block size
      • the last block of a file may not be fully filled
    • poor random access performance
    • if I want to access the 19th block
    • have to access block 1st to 18th block
  • File allocation table(FAT)

    重点:cluster id? 大端小端?最大的文件2的32次方-1byte?

    • FAT32的目录遍历和目录表
    • 目录和其他文件一样都是一个文件

    FAT32文件系统的存储组织结构

    FAT32文件系统的存储组织结构(二)

    • FAT32删除文件的最后一步,为什么不直接在目录表中删除对应项?

    • 只是对其文件名进行处理,对内容不做任何处理。对文件名的处理,就是把其相关的所有Directory entry的第一个byte都设置为OxE5,此时就认为该文件已经被删除了。

FAT文件的删除

  • FSINFO的作用
    • offset :可用的下一段空间的长度
    • next free cluster:下一个簇的id
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值