操作系统期末复习简记(更新中~)

文件

定义:文件是以计算机硬盘为载体的存储在计算机上的信息集合(宽泛的)

属性:描述文件状态的信息,eg.名称,修改时间等等

基本操作:创建、打开、修改文件


文件的逻辑结构

1、无结构文件(流式文件)

  • 以字节为单位
  • 没有具体结构
  • 使用穷举的方式搜索

eg.我们常用的txt文件,图片都是流式文件

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

  • 顺序文件操作系统期末复习简记(更新中~)_第1张图片
  • 索引文件操作系统期末复习简记(更新中~)_第2张图片 
  • 索引顺序文件操作系统期末复习简记(更新中~)_第3张图片 
  • 直接文件或散列文件(hash file)操作系统期末复习简记(更新中~)_第4张图片 

文件的目录结构 

1、文件控制块

  • 基本信息
  • 存取基本信息(权限)
  • 使用信息

实际上我们在window系统中打开一个目录时,如下图所示,展现的就是各个文件控制块的信息

操作系统期末复习简记(更新中~)_第5张图片

2、索引结点

操作系统期末复习简记(更新中~)_第6张图片

如上图所示,索引结点是根据文件名创建的结点,可以方便我们对文件进行检索 

3、目录结构

目录结构实际上类似数据结构中的树形结构

操作系统期末复习简记(更新中~)_第7张图片

 对于公用文件,其中实现的原理是:各个用户对该目录建立一个连接用于访问

操作系统期末复习简记(更新中~)_第8张图片


文件系统的层次结构

操作系统期末复习简记(更新中~)_第9张图片

如上图所示,从上到下各个层次的作用分别为:用户对文件进行打开、读写、删除等操作,文件系统对用户操作的文件进行打开(可以理解为获取到该文件的索引结点),检验文件权限,将文件的逻辑地址转换为物理地址,最后到物理地址读取到文件 


目录实现

首先需要明确的是目录实际上也可以被看作为一个文件,并且是一个包含多个FCB的文件,因此对目录的实现即对这些FCB存储结构的实现

  • 线性列表
  • 哈希表

操作系统期末复习简记(更新中~)_第10张图片


文件的分配(在磁盘上)

首先需要知道的是磁盘的最小单位是 扇区/磁盘块

1、连续分配

即将文件存储在磁盘上的空间分布是连续,这样分配的优点是方便顺序和直接访问速度快,但是如果我们想要在原先文件中新增内容的话则需要在原先磁盘位置的后面新增块进行存储,此时可能需要的块已经被占用了,这时操作起来就比较麻烦了

操作系统期末复习简记(更新中~)_第11张图片

 2、链接分配

  • 隐式链接:将磁盘块之间的指针存储在块中

操作系统期末复习简记(更新中~)_第12张图片

 优点是支持顺序访问,方便扩展,不会产生碎片

缺点是不支持直接访问即不能像顺序分配那样可以直接计算得到所有块,效率较低,同时块与块之间的链接较为容易丢失

  • 显式链接

操作系统期末复习简记(更新中~)_第13张图片

与隐式链接不同的是,显式链接将指针从盘块中拿了出来,以一个表的形式进行存储

此外,我们可以将该文件分配表在一开始就将其加载到内存当中,因此该种显式分配方式的效率较高,且支持顺序访问,无外部碎片,方便扩展 

3、索引分配

所谓的索引分配即在盘块中使用一个盘块用于存储索引表,其中索引表存放的就是当前文件的所有物理块号,其中值得一提的是为了提高效率,我们通常会建立多级索引或链接索引块或在多级索引的基础上结合快表的思想

操作系统期末复习简记(更新中~)_第14张图片


文件空闲空间管理

操作系统期末复习简记(更新中~)_第15张图片

首先需要知道磁盘的一些结构知识,通常来说,磁盘我们可以将其分为一个一个的卷,其中每一个卷又可以看作一个磁盘,而磁盘中存放的区域我们可以划分为目录区域文件区 

1、空闲表与空闲链表

操作系统期末复习简记(更新中~)_第16张图片

如上图所示,磁盘中灰色的盘块代表空闲盘块,其中空闲表中每一行存放一个空闲区域的第一个空闲块号以及该区域的空闲块数即可

相对地,表的结构也可以使用链表进行实现

操作系统期末复习简记(更新中~)_第17张图片 但是整体而言,它们的效率都不高,特别是面对大文件时,我们如果顺序访问的话,那么访问的次数会太多,导致效率低下


成组链接法 

操作系统期末复习简记(更新中~)_第18张图片

如上图所示,我们将所有的空闲块分为每100个为一组,其中我们将每一组作为一个栈的结构进行存储,每一组的栈底元素会存放下一组的所有信息,分配时我们按照后进先分配,回收时进行进栈即可

操作系统期末复习简记(更新中~)_第19张图片

需要注意的是,对于盘块的回收中,在回收到一组满了的时候,我们会新建一组同时将新组的指针指向下一组的栈顶


位示图法

操作系统期末复习简记(更新中~)_第20张图片

如上图所示,我们将每一个磁盘都使用一个二维矩阵进行标志,其中矩阵中的每一个元素代表磁盘中的一个块,其中元素的值为1代表已经被分配了,为0代表未分配,具体盘块号与矩阵的行与列的计算关系见上图

I/O设备

基本概念

I/O就是输入输出,将数据输入到计算机,或接收计算机的数据输出到外部设备

I/O设备分类

  • 按信息交换的单位分类
    • 块设备:信息的存取以数据块为单位,如磁盘
    • 字符设备:无结构的数据I/O,如键盘.1、打印机
  • 按设备的外部特征分类
    • 存储设备:存储信息的设备,如磁盘、磁带    
    • 输入设备:外部向计算机输送数据,如键盘
    • 输出设备:计算机向外部输送数据,如打印机
  • 按传输速率分类
    • 低速设备:1kByte/s以下,如键盘、鼠标
    • 中速设备:1k-100kB/s,如打印机
    • 高速设备:100Kb/s以上,磁盘机
  • 按设备的共享属性分类
    • 独占设备:一段时间只允许一个用户使用
    • 共享设备:可同时(并发)允许多个用户使用
    • 虚拟设备:采用虚拟技术将一物理设备变换为多个逻辑设备

IO设备的构成

  • 机械部件:比如键盘鼠标的按键,用于执行具体的IO操作
  • 电子部件(可以简单理解为驱动):即IO控制器、设备控制器,是CPU与硬件设备之间的桥梁

IO控制器主要作用

  • 接收并识别CPU命令
  • 向CPU报告设备状态
  • 数据交换
  • 地址识别

IO控制器的组成

  • CPU与控制器之间的接口
  • IO逻辑
  • 控制器与设备之间的接口

操作系统期末复习简记(更新中~)_第21张图片

上图需要注意的是如果右边对应有多个设备接口,那么每个设备在左边都会有自己的数据寄存器、控制寄存器和状态寄存器


对IO设备的控制方式

1、程序直接控制方式

操作系统期末复习简记(更新中~)_第22张图片

如上图所示,CPU向IO控制器发出指令后,IO逻辑会向状态寄存器中添加一个状态表示当前自己在忙,我们知道CPU相对IO设备来说是非常快的,因此CPU在发出自己的指令后会一直访问状态寄存器,直到CPU通过状态寄存器知道了IO操作以及完成,而IO控制器之后便是通过接口得到CPU想要的东西后则将其存放到数据寄存器中后再修改自己的状态寄存器的值

在上述过程中

可以看出该种方式的优缺点:

实现简单,但是CPU与IO设备串行了,导致CPU处于盲等状态(即频繁访问状态寄存器等待IO操作完成) 

2、中断驱动方式

与上面一种方式类似,不过这种方式CPU在发出指令后会收到来自IO控制器的一个中断信号,即告诉CPU可以先去干别的事,那么此时CPU就会将当前IO进程阻塞了,等到IO操作完成,IO控制器又会再次向CPU发送一个中断指令告诉CPU IO操作已经完成,让CPU回来

上述过程很好地改善了前面一种方式的缺点,即让CPU不再轮询IO控制器,但是由于每次的读写操作大小为一个字,而大部分时候我们需要操作的大小肯定大于一个字,那么CPU就会频繁中断IO进程,这样会影响效率

3、DMA方式

操作系统期末复习简记(更新中~)_第23张图片

首先前面两种方式我们知道有两个共同的缺点,第一个是每次IO操作只能传输一个字的大小,第二个是每次IO操作都要经过CPU的寄存器再运输到内存

DMA方式就很好地解决了上述问题

DMA方式每次传输的单位不在是字而是块了,IO控制器在DR(数据寄存器)中存储需要运输的数据,其中需要注意的是,如果需要运输的数据在设备中的存储是连续存储的,那么我们是可以连续读取多个块到DR的,但是如果不是连续存储则需要重新中断读取

其中DC会对当前所运输到DR的字节数进行计数,如果已经满了,那么IO控制器会告诉CPU IO操作已经完成,这个时候CPU就可以从DR中直接将数据读到内存中了

4、通道控制方式

该种方式解决了上面所有方式出现的缺点

操作系统期末复习简记(更新中~)_第24张图片

它的实现是我们直接在硬件上新增一个专用于IO操作的处理机,即类似GPU专门用于渲染图片视频,这个处理机我们称为通道,且它同时也是IO控制器,CPU向其发送指令后,通道会到内存中读取自己需要的程序命令,然后去底层硬件将需要的资源得到后直接写入内存,最后会发送中断信号给CPU告诉它IO操作已经完成


IO软件层次结构

操作系统期末复习简记(更新中~)_第25张图片

  1. 用户层软件
    1. 实现用户交互接口
    2. 通过库函数实现系统调用
  2. 设备独立性软件
    1. 向上一层提供调用接口
    2. 设备保护
    3. 容错处理
    4. 设备分配与回收
    5. 数据缓冲区管理
    6. 逻辑设备与物理设备映射
  3.  设备驱动程序
    1. 不同设备硬件特性不同,但是CPU指令相同,负责控制硬件设备,将CPU指令转成设备操作驱动程序会以独立进程存在
  4. 中断处理程序
    1. IO完成后会发出中断信号,执行中断处理程序,会直接操作硬件

你可能感兴趣的:(学习)