文件管理(操作系统笔记五)

文件管理(操作系统笔记五)


文件的概念

文件(File) 是操作系统中的一个重要概念。在系统运行时,计算机以 进程 为基本单位进行资源的调度和分配: 而在用户进行的输入、输出中,则以文件为基本单位

文件的结构

文件的属性

文件的基本操作 :1.创建文件;2.写文件;3.读文件;4.文件重定位(文件寻址);5.删除文件;6.截断文件。

文件的打开执行 open 操作,在 open 调用完成后,操作系统对该文件的任何操作都不再需要文件名,而只需要 open调用返回的指针

  • 每个被打开的文件都会有一个 文件控制块 (FCB) ,每个打开的文件都关联以下信息:
    • 文件指针 :系统跟踪上次的读写位置作为当前文件位置的指针,这种指针对打开文件的某个进程来说是唯一的,因此必须与磁盘文件的属性分开保存
    • 文件打开计数 :计数器跟踪打开和关闭的数量,计数为0时,系统关闭文件,删除该条目
    • 文件磁盘位置 :该信息保存在内存中,避免每次操作需要从磁盘中读取
    • 访问权限 :便于操作系统允许或拒绝该进程之后的 I/O 请求

文件的逻辑结构

按文件是否有结构分类,可以分为无结构文件、有结构文件两种

无结构文件(流式文件) :文件内部的数据就是一系列二进制流或字符流组成。因此无须探讨无结构文件的“逻辑结构”问题。

有结构文件(记录式文件) :由一组相似的记录组成,每条记录由若干数据项组成,每条记录有一个数据项可作为 关键字 。(作为识别不同记录的ID)根据各条记录的长度(占用的存储空间)是否相等,又可分为 定长记录可变长记录 两种。

有结构文件

注意:一般来说,考试题目中所说的“顺序文件”指的是物理上顺序存储的顺序文件。

文件目录

文件目录

文件的物理结构

文件的分配方式

连续分配

连续分配 不同的另一种分配方式, 链接分配

链接分配 采取 离散分配 的方式,消除了外部碎片,显著提高了磁盘空间的利用率,对文件的增、删、改也十分方便。 链接分配 又可以分为 隐式链接显式链接 两种形式。

隐式链接

显式链接

注意考试题目中遇到未指明隐式/显式的“链接分配”,默认指的是隐式链接的链接分配

链接分配 解决了连续分配的外部碎片和文件大小管理的问题,但是不能有效支持直接访问(FAT除外)。 索引分配 解决了这个问题,把每个文件的所有的盘块号都集中放在一起构成 索引块(表)

索引分配

文件存储空间管理

文件存储空间的划分与初始化

文件存储器空间的划分与初始化

文件存储器空间管理

存储器空间管理

文件的基本操作

  • 创建文件 (create系统调用)
    • 分配外存空间,创建目录项
  • 删除文件 (delete系统调用)
    • 回收外存空间,删除目录项
  • 打开文件 (open系统调用)
    • 将目录项中的信息复制到内存中的 打开文件表 中,并返回打开文件表的 索引号(文件描述符) 返回给用户
    • 打开文件后,对文件的操作不需要每次都查询目录,可以根据内存中的打开文件表进行操作
    • 每个进程 也有自己的 打开文件表系统 中也有一种总的 打开文件表
    • 进程打开文件表 中特有的属性:读写指针、访问权限
    • 系统打开文件表 中特有的属性:打开计数器(多少个进程打开了该文件)
  • 关闭文件 (close系统调用)
    • 将进程打开文件表中的相应表项删除
    • 系统打开文件表的打开计数器减1,若打开计数器为0,则删除系统表的表项
  • 读文件(read系统调用)
    • 根据 读指针、读入数据量、内存位置将文件从外存读入内存 (执行打开文件时并没有将文件读入内存中)
  • 写文件 (write系统调用)
    • 根据写指针、写入数据量、内存位置将文件数据从内存中写出外存

注意 :考试中 打开文件读文件 常常选择题进行考察

文件共享

多用户共享 同一个文件,意味着系统中只有 “一份” 文件数据,并且只要某个用户修改了该文件的数据,其他用户也可以看到文件数据的变化。这是 共享复制 不一样的地方。

文件共享

文件保护

文件保护

现代操作系统 常用的文件保护方法是,将 访问控制列表与用户、组和其他成员访问控制方案一起组合使用

对于 多级目录 结构而言,不仅需要保护 单个文件 ,而且需要保护 子目录内的文件 ,即需要提供 目录保护机制 。目录操作与文件操作并不相同,因此需要不同的保护机制。

文件系统的层次结构

文件的系统层次结构

现代操作系统有多种文件系统类型(如FAT32,NTFS,ext2,ext3,ext4等),因此文件系统的层次结构也不尽相同。

磁盘的结构

磁盘的结构

所有磁头 都是连在同一个 磁臂 上的,所以 所有的磁头 只能 一起移动

磁盘调度算法

一次磁盘读/写 操作需要的时间主要由 3部分组成1.寻找时间 :启动磁臂,移动磁头所花的时间(也是 操作系统唯一可以优化的部分2.延迟时间 :将目标扇区转到磁头下面所花的时间 3.传输时间 :读/写数据花费的时间(后面 两点由硬件 上的转速决定,操作系统无法优化)

以下磁盘调度算法就是针对寻找时间的

磁盘调度算法

减少磁盘延时时间的方法

磁头读入一个扇区数据后需要一小段时间处理 ,如果 逻辑上相邻的扇区在物理上也相邻 ,则读入几个连续的逻辑扇区,可能需要很长的 “延时时间” 。虽然在软件上无法优化,但仍然可以从 编号 方式的不同进行改善。

磁盘地址为(柱面号,盘面号,扇区号), 而不是 (盘面号,柱面号,扇区号) ,因为在读完一个 扇区 之后,如果命名是第二种,我们需要改变柱面号,这个操作需要 磁头 进行移动,这个是需要比较大的时间开销的,如果是第一种,我们只需要改变盘面号,只需要 激活不同盘面的磁头 就好了,不需要移动磁头,这样就减少了时间开销,提升了效率。

减少延迟的方法

磁盘的管理

磁盘的初始化 : 1.进行低级格式化(物理格式化),将磁盘的各个磁道划分为扇区; 2.将磁盘分区,每个分区由若干柱面组成; 3.进行逻辑格式化,创建文件管理系统。

引导块 :ROM(不可更改)中存放很小的 “自举装入程序” ,完整的自举程序放在磁盘启动块中,计算机开机时先运行 “自举装入程序” ,通过执行该程序就可以找到 引导块 ,并将完整的 “自举程序” 读入内存,完成初始化。

  • 坏块管理
    • 简单的磁盘 :逻辑格式化的时候将坏块标记出来,这种方式对操作系统 不透明
    • 复杂的磁盘 :磁盘控制器维护一个 坏块链 ,并管理备用扇区。这种方式对操作系统 透明
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值