讨论区讨论详情

【笔记展览馆】《操作系统》第二十一讲 文件系统
2015-06-01 12:56:39

21.1 文件系统和文件

文件系统是操作系统中管理持久性数据的子系统,提供数据检索和访问功能

文件是具有符号名,由字节序列构成的数据项集合

文件系统的功能

1分配文件磁盘空间

2管理文件集合

3数据可靠和安全

文件属性

文件头:1 文件属性;2 文件存储位置和顺序


21.2 文件描述符

文件描述符是操作系统在打开文件表中维护的打开文件状态和信息

   文件指针

   文件打开计数

   文件磁盘位置

   访问权限

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

文件的用户视图

    持久的数据结构

系统访问接口

    字节序列的集合

    系统不关心存储在磁盘上的数据结构

操作系统的文件视图

    数据块的集合

    数据块是逻辑存储单元, 而扇区是物理存储单元

    块大小<>扇区大小

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

进程读文件(最小单位是块)

    获取字节所在的数据块

    返回数据块内对应部分

进程写文件

    获取

    修改

    返回

文件系统中的基本操作单位是数据块

例如:getc()和putc()即使每次只访问1字节的数据, 也需要

缓存目标数据4096字节

访问模式

操作系统需要了解进程如何访问文件

顺序访问:按字节依次读取

随机访问:从中间读写(不常用, 但重要,例如:虚拟内存中把内存页存储在文件)

索引访问:依据数据特征索引


文件内部结构

无结构:单词,字节序列

简单记录结构

    分列

    固定长度

    可变长度

复杂结构

    格式化的文档

    可执行文件

    ......


文件共享和访问控制

多用户系统中的文件共享是很必要的

访问控制

文件访问控制列表(ACL)


Unix模式

语义一致性

规定多进程如何同时访问共享文件

Unix文件系统(UFS)语义

回话语义

读写锁


21.3 目录,文件别名和文件系统种类

分层文件系统

    文件以目录的方式组织起来

    目录是一类特殊的文件:目录的内容是文件索引表<文件名, 指向文件的指针>

    目录和文件的树形结构


典型目录操作


操作系统只允许内核修改目录:1 确保映射的完整性; 2 应用程序通过系统调用访问目录


目录实现

    文件名的线性列表,包含了指向数据块的指针

    哈希表 - 哈希数据结构的线性表


文件别名

    硬链接:多个文件项执行一个文件

    软链接:以“快捷方式”指向其他文件


文件目录中的循环


名字解析(路径遍历)

名字解析:把逻辑名字转换成物理资源(如文件)

举例:解析"/binls"

当前工作目录

文件系统挂载

文件系统需要先挂接才能被访问

文件系统的种类

磁盘文件系统

  文件存储在数据存储设备上, 如磁盘

  例如:FAT,NTFS, ext2/3, ISO9660等

数据库文件系统

  文件特征是可被寻址的

  例如:WinFS

日志文件系统

网络/分布式文件系统

特殊文件系统


21.4 文件系统的实现


文件系统的实现.png

虚拟文件系统

目的:对所有不同文件系统的抽象

功能

    1 提供相同的文件和文件系统的接口

    2 管理所有文件和文件系统关联的数据结构

    3 高效查询例程, 遍历文件系统

    4 与特定文件系统模块的交互

文件系统基本数据结构

文件卷控制块

    每个文件系统一个

    文件系统详细信息

    块, 块大小, 空余块, 计数/ 指针等

文件控制块

    每个文件一个

    文件详细信息

    访问权限, 拥有者, 大小, 数据块位置等

目录项

    每个目录项一个

    将目录项数据结构及树形布局编码成树形数据结构

    指向文件控制块, 父目录, 子目录

    

文件系统的组织视图


文件系统的组织视图.png

文件系统的存储结构


文件系统的存储结构.png

文件系统的存储视图

文件系统的存储视图.png


21.5 文件缓存和打开文件

多种磁盘缓存位置


多种磁盘缓存位置.png

数据块缓存

    数据块按需读入内存

    数据块使用后被缓存

    两种数据块缓存方式


页缓存

虚拟页式存储系统

文件数据块的页缓存


页缓存.png


文件系统中打开文件的数据结构

文件描述符

打开文件表


打开文件表.png

打开文件锁

一些文件系统提供文件锁, 用于协调多进程的文件访问

    强制 -    根据锁保持情况和访问确定是否 

    劝告 -    进程可以查找锁的状态来决定怎么做


21.6 文件分配

文件大小

    大多数文件都很小

    一些文件非常大


文件分配:如何表示分配给一个文件数据块的位置和顺序

分配方式

    连续分配

    链式分配

    索引分配

指标

    存储效率:外部碎片等

    读写性能:访问速度


连续分配


连续分配.png

链式分配

链式分配.png

索引分配

索引分配.png

大文件的索引分配

    链式索引块

    多级索引块


UFS(Unix File System)多级索引分配


UFS多级索引分配.png

21.7 空闲空间管理和冗余磁盘阵列RAID

空闲空间组织:位图

用位图代表空闲数据块列表

使用简单但是可能会是一个大的很大向量表

160G磁盘-> 40M数据块->5M位图

 假定空闲空间在磁盘中均匀分布, 

则找到“0” 之前需要扫描n / r

n = 磁盘上数据块的总数

r = 空闲块的数目

其他空闲空间组织方式:

1 链表

2 链式索引

磁盘分区:通常磁盘通过分区来最大限度减少寻道时间

分区是一组柱面的集合

每个分区都可视为逻辑上的独立的磁盘


磁盘分区.png

文件卷:一个拥有完整文件体统实例的外存空间通常常驻在磁盘的单个分区上

多磁盘管理

多磁盘管理.png

RAID-0:磁盘条带化

把数据块分成多个字块, 存储在独立的磁盘中

RAID-1:磁盘镜像

向两个磁盘写入, 从任何一个读取

RAID-4:带校验的磁盘条带化

RAID-5:带分布式校验的磁盘条带化

基于位和基于块的磁盘条带化

RAID-0/4/5:基于数据块

RAID-3:基于位

可纠正多个磁盘错误的冗余磁盘阵列

RAID-5: 每组条带块有一个就校验快

        允许一个磁盘错误

RAID-6: 每组条带块带有两个冗余块

        允许两个磁盘错误

RAID嵌套






回复:

metasploit

1楼 2015-06-02 12:14:28

可以做成有道笔记分享下吗

ejacky回复metasploit

2015-06-02 14:38:42
用的wiz

metasploit回复ejacky

2015-06-02 17:46:04
可以分享吗,wiz

ejacky回复metasploit

2015-06-02 18:05:24
我看一下, 可以的话把链接分享出来 :)

学堂course

2楼 2015-06-02 13:14:25

恭喜!你的笔记已入选【学堂笔记展览馆】第三期·精品笔记展,获得【精品笔记奖】!赶紧来领奖吧!

领奖地址:http://www.xuetangx.com/community/post/337


ejacky回复学堂course

2015-06-25 18:02:01
等的花都谢了, 还是没见 奖给的 笔记本 :(

学堂活动小队长♂回复ejacky

2015-06-30 15:37:02
该信息已被删除

ejacky回复学堂course

2015-06-30 18:18:38
haha, 收到了 。 在前台, 没给我 打电话 , 谢谢了 :)

请先登录

说点什么吧~

学堂公告

各位MOOCer大家好 (^-^)V

欢迎来到学堂在线广场~

在这里你可以玩活动,看资讯,晒笔记。

还可以交学友、发心情、聊人生。

在学堂的每一天,就从这里开始吧!

点击 广场指南 了解更多

推荐活动

我要举报
提交