王道OS_文件管理

文件的逻辑结构

无结构文件(字符流/流式文件)

最简单的文件组织形式;按照顺序组织记录并积累保存(有序);穷举搜索;适合操作不多的文件,管理简单

有结构文件( 记录式文件)

顺序文件

记录一个接一个顺序排列,记录定长;顺序/链表存储;效率高;增删改查困难

索引文件

定长记录文件:由公式Address=第 i 条记录 * 文件长度L

不定长记录文件:查找前 i-1 条记录后,才能查找第 i 条记录;建立索引表提高查找速度

索引顺序文件

索引文件将顺序文件中的所有记录分成若干组,为顺序文件建立索引表(各个索引项的集合),在索引表中为每组中的第一条记录建立一个索引项,含有该记录的关键字和指向该记录的指针

提高查找效率,索引表占空间

直接文件/散列文件

给定记录的键值/通过散列函数转换的键值直接决定记录的物理地址;无顺序;可能引起冲突(不同关键字散列函数相同)

目录结构

文件控制块FCB

存放控制文件需要的数据结构,实现“按名存取”

FCB有序集合=文件目录;一个FCB=一个文件目录项

索引结点

检索目录文件时,不需要将文件调入内存,只要查找其目录项

目录结构

单级目录、两级目录、多级目录(树形目录)、有向无环图目录(文件共享)

文件共享

基于索引结点的共享方式(硬链接)

文件目录中设置文件名 + 指向索引结点的指针,索引结点中有一个计数器count(表示链接到本索引结点上的用户目录项数目)

多个指针指向一个索引结点,只要还有一个指针指向索引结点,索引结点就不能删除

速度快!

符号链实现的文件共享(软链接)

创建一个LINK类型的新文件,只包含被链接文件的路径名,当访问文件时,根据路径寻找文件

增加开销,浪费空间

文件保护

口令保护、加密保护、访问控制

文件物理结构(文件分配方式)

连续分配

顺序访问/直接访问(随机访问);实现简单,速度快,磁盘寻道数和寻道时间最小;文件不宜动态增长,产生外部碎片

访问内存 1 次

链接分配

隐式链接

顺序访问,无法直接访问盘块,只能通过指针顺序访问,除最后一个盘块,其他盘块都有指向下一个盘块的指针;

显式链接

顺序访问 + 随机访问,链接文件各物理块的指针从物理块末尾提取,保存在FAT中(整个磁盘一张),每个表项存放块的下一块链接指针(下一块盘块号)

FAT表项与全部磁盘块一一对应;FAT常驻内存,减少磁盘访问次数

访问内存 n 次

索引分配

顺序访问 + 直接访问

系统为每个文件建立一张索引块,记录文件各个逻辑块对应的物理块(存放文件对应磁盘块地址的数组);目录条目 = 文件名 + 索引块地址

索引块的第 i 个条目指向文件的第 i 个块;读第 i 个块,通过索引块的第 i 个条目的指针来查找和读入所需的块

【创建文件时,索引块的所有指针初始为空,首次写入第 i 块时,从空闲空间中取一个块——>将地址写到索引块的第 i 个条目】

优化机制

链接方案:一个索引块为一个磁盘块,为处理大文件,可以将多个索引块链接起来

多层索引:第一层索引块指向第二层索引块,第二层指向文件块(或者还有第三层/第四层……最后一层指向文件块)

【m级需要m+1次访问磁盘;采用 k 层索引结构,且顶级索引块未调入内存,则访问一个数据块需要 k+1 次读磁盘操作】

混合索引:既采用直接地址也采用单级索引分配方式/两级索引分配方式

文件存储空间管理

文件存储设备分成许多大小相同的物理块,以块为单位交换信息

实质:空闲块的组织和管理、分配和回收

空闲块管理

空闲表法:连续分配方式,系统为空闲区建立一张空闲盘块表,包括每个空闲区第一个盘块号和该区的空闲盘块数等信息。

空闲链表法:所有的空闲盘区拉成一条空闲链,根据构成链所有的基本元素不同分为

空闲盘块链——将磁盘上所有空闲空间以盘块为单位拉成一条链

空闲盘区链——将磁盘上所有空闲盘区拉成一条链

位示图法

采用二进制的一位表示一个盘块的使用情况,磁盘上所有盘块都有一个二进制位与之对应 i 行 j 列

盘块分配

b=n * (i-1) + j

b=n * i + j

盘块回收

i = (b-1) /n +1 i=b / n

j = (b-1) %n +1 j=b%n

成组链接法

UNIX使用

把顺序的 n 个空闲扇区地址保存在第一个空闲扇区内,其后的一个空闲扇区保存另一顺序空闲扇区的地址

磁盘调度算法

读写时间组成:寻找时间、延迟时间、传输时间

写出移动磁道的顺序——>计算每次间隔的磁道数,再计算平均寻道长度

先来先服务FCFS

进程请求访问磁盘的先后顺序进行调度

最短寻找时间优先SSTF

选择调度处理的磁道是当前磁头所在磁道距离最近的磁道(”饥饿“现象)

扫描SCAN(电梯调度)

规定磁头移动方向后,选择当前磁头所在磁道距离最近的磁道(假如磁头沿着磁道号增大的顺序移动)

移动到最外侧磁道才能向内移动,移动到最内侧磁道才可以向外移动(磁盘端点处才可以改变磁头移动方向)

——>访问未访问的磁道

循环扫描C-SCAN

磁头单向移动,回返时直接移动到起始端而不服务任何请求

【SCAN与C-SCAN都是从盘面的一端到盘面的另一端,也就是需要到达磁道端点后才可以返回。改进后:磁头移动只需要到达最远端的一个请求就可以返回,不要到磁盘端点】

LOOK

查看移动方向上是否有请求,如果没有不再继续向前移动,直接改变方向访问未访问的磁道

C-LOOK

查看移动方向上是否有请求,如果没有不再继续向前移动,直接回到第一个请求处再访问未访问的磁道

需要到达磁道端点后才可以返回。改进后:磁头移动只需要到达最远端的一个请求就可以返回,不要到磁盘端点】**

LOOK

查看移动方向上是否有请求,如果没有不再继续向前移动,直接改变方向访问未访问的磁道

C-LOOK

查看移动方向上是否有请求,如果没有不再继续向前移动,直接回到第一个请求处再访问未访问的磁道

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值