文件管理
文件
定义
- 一组有意义信息的集合
属性
-
文件名
-
标识符
-
类型
-
位置
-
大小
-
保护信息
操作
- 增删查改
文件逻辑结构
无结构文件
- 文件的内容是二进制流或者字符流
(txt文件)
有结构文件
-
由相似的数据组成
(excel表)-
顺序文件
-
链式存储
- 不能实现随机存储
-
顺序存储
-
串结构
- 不按照关键字排列
-
顺序结构
-
按照关键字排列
-
定长记录
- 能够实现随机存储
-
不定长记录
- 一个一个顺序查找
-
-
-
-
索引文件
-
为文件建立索引,这样文件就可以离散存储,根据索引查找文件
-
索引表本身是定长记录的顺序文件
-
-
索引顺序文件
-
当索引表比文件本身还大时,索引表中的一项会对应文件的一组内容(如:以a开头的文件)
-
多级索引顺序文件
-
-
文件目录
文件控制块(FCB)
- 一个FCB就是一个目录项
目录结构
-
单级
-
一个系统一张目录表
-
文件不允许重名
-
-
两级
-
系统和用户的目录表分开
-
不同用户文件可以重名
-
-
多级(树形)
-
不同目录下的文件可以重名
-
绝对路径 & 相对路径
-
-
无环图目录结构
-
如果多个用户之间使用了同一个文件,就让他们的文件指针都指向这个文件
-
有利于文件的共享
-
索引节点
-
是对于目录表的一次 “瘦身”
-
存放除了 文件名 的所有文件信息
-
目录表中只需要使用一个索引节点指针就能够找到文件的信息
-
当有用户删除这个文件的时候,只会删除这个文件结点上的计数器,只有计数器为0才会删除文件
文件存储
连续分配
- FCB中记录 起始 和 长度 即可
链式分配
-
显式
-
有一张 FAT 表进行记录每个块后面的块是谁
-
可以实现随机存取
-
-
隐式
-
每个物理块中自己存储自己的下一块是谁
-
只能顺序读取
-
索引分配
-
索引表
-
为每个文件都建立一张索引表,用于存放这个文件使用到了哪些物理块
-
索引表 < 块大小
-
-
方案
-
链接方案
- 如果一个文件拥有的块一个索引表放不下,那么就让这些索引表链接起来(在最后一张项上写傻上下一张表的地址)
-
多层索引
-
像建立多级页表一样,对于索引表进行分割
-
如果有k级索引,那么就需要k+1次访存
-
缺点
- 对于一个小文件也需要访问k+1次
-
-
混合索引
- 顶级索引表中有:
-
1.直接索引
2.一级间接索引
3.二级间接索引
- FCB中存有 顶级索引表 的地址
文件共享
硬链接
-
不创建新文件
-
就是索引结点
软链接
-
创建新文件(link类型)
-
对应的文件本体被删除,软链接仍然还在,只是找不到对应的资源
-
访问文件的时候有多次磁盘 I/O,所以比 硬链接慢
文件保护
口令保护
- 需要输入密码才能访问
加密保护
- 对原来的数据进行加密,需要使用密钥解锁(http加密)
访问控制
- 对用户对于文件的访问权限阶梯控制
磁盘
”机械硬盘“
结构
-
盘片
-
盘面
- 磁盘的一个切面
-
磁道
- 盘面上的一个轨道
-
柱面
- 竖着的所有同一位置的磁道组成的柱体
-
扇区
- 磁道切出来的一个扇形
地址
-
(柱面号,扇面号,扇区号)
-
为什么不是(扇面号,柱面号,扇区号)?
-
1.所有磁头是 “共进退” 的
-
2.存储的时候如果按照先往相同的柱面存储,那就不需要移动磁头,只有这个柱面上的所有磁道都存满之后才需要移动磁头,减少了磁头的移动时间
-
-
一次读写时间
-
寻道时间
-
延迟时间
-
减少延迟的办法
-
交替编号
- 1.因为每次磁头读完一个扇区的磁道都有反应时间,所以如果数据是连续每个磁道存放,那么磁头就需要停着等待。
-
-
2.如果是隔着道存,那就能用移动的时间避开这个 “反应时间”
- 错位命名
- 对于每个扇区也 “交替编号”,原理同交替编号
- 寻址结构设计
- 使用先确定柱面,后确定扇面;
而不是反过来(减少磁头的移动)
- 传输时间
调度算法
-
先来先服务(FCFS)
-
优点
- 公平
-
缺点
- 若访问的磁道分散,性能很差
-
-
最短寻找时间优先(SSTF)
-
访问离目前磁头所在位置最近的磁道
-
优点
- 性能好,寻道时间短
-
缺点
- 产生饥饿
-
-
扫描算法(SCAN、电梯算法)
-
只有到达磁盘最外道,才能向内走
-
优点
- 不会产生饥饿
-
缺点
-
1.如果进程访问到的最外道 不是磁盘的最外道,那就有白白浪费的寻道
-
2.对于每个磁道的处理时间不均匀
-
-
LOOK调度算法
- 对于扫描算法的改进,只要到达了进程访问的最外道/最内道,就更改方向
-
-
循环-扫描算法(C-SCAN)
-
单向处理每个磁道,像循环链表一样
-
C-LOOK算法
- 不再从磁盘的0磁道一直到最外道;
从进程访问的最内道单向访问到进程访问的最外道
- 不再从磁盘的0磁道一直到最外道;
-
磁盘管理
-
初始化
-
低级初始化(分扇区)
-
逻辑初始化(创建文件系统)
-
-
引导块
- 计算机启动时,需要有一个 “自举程序”(初始化程序、开机加载的程序),来初始化CPU、寄存器、设备控制器、内存、然后启动操作系统
-
坏块
- 随着磁头滑动,磁道会有损坏,这时会由 “备用扇区” 对其进行逻辑替代