操作系统学习总结(下)

目录

第六章虚拟存储器

虚拟存储器概述

常规存储器的特点

局部性原理

虚拟内存的定义和特征

如何实现虚拟内存技术

总结​

请求分页管理系统 

与基本分页管理系统的不同

 页表机制—请求页表与基本页表的区别

 缺页中断机构

地址变换机构

总结

页面置换算法 

 最佳置换算法—OPT

先进先出置换算法—FIFO

最近最久未使用置换算法—LRU

时钟置换算法—CLOCK

改造型时钟置换算法

总结

页面分配策略 

驻留集

 页面分配、置换策略

何时调入页面?

 何时调入页面

从何处调页?

抖动(颠簸)现象

工作集

影响页面换入换出效率的若干因素

第七章 输入输出系统

I/O设备简单介绍

什么是I/O设备?

I/O设备的分类

总结

设备控制器 

什么是设备控制器

I/O设备的组成

I/O控制器的组成

I/O控制器的两种寄存器编址方式

 总结

I/O设备的四种控制方式 

程序直接控制方式

中断驱动方式

DMA方式

总结

OS之I/O软件的层次结构

 总体层次

 用户层软件(在用户层,不在内核)

 系统调用 

 库函数

假脱机技术 

假脱机的特点

设备独立性软件

逻辑设备名映射到物理设备名

设备的分配和回收

设备分配的改进步骤

 缓冲区管理

缓存

I/O调度

设备驱动程序

 设备驱动程序的功能

设备驱动程序的特点

设备驱动程序的执行过程

中断处理程序

中断处理过程

中断向量表 

中断优先级

处理多中断信号源的方式

 总结

OS内核的I/O核心子系统及功能  

I/O核心子系统以及功能

1.这些功能在哪个层次实现?

磁盘组织和管理

磁盘的基本结构 

.磁盘、磁道、扇区

如何在磁盘中读/写数据

盘面、柱面

磁盘的分类

总结

 OS之磁盘调度算法

先来先服务(FCFS)

扫描算法(SCAN)

LOOK算法

循环扫描算法(S-SCAN)

C-LOOK算法

 总结​

 OS之减少磁盘延迟时间的方法

前情回顾

交替编号

错位命名

总结

磁盘管理

磁盘初始化

引导块

坏块的管理

总结



第六章虚拟存储器

虚拟存储器概述

常规存储器的特点

一次性   作业只有全部装入内存才能开始运行

驻留性  作业被装入内存,整个作业都会一直驻留在内存中,其任何部分都不会换出,直到作业运行结束

在这里插入图片描述

传统存储器的管理方式会对内存资源有极大的浪费,所以引入了虚拟存储器的概念

局部性原理

在这里插入图片描述

虚拟内存的定义和特征

 定义

所谓虚拟存储器就是具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统

这里需要注意的是虚拟内存的最大容量和实际容量的区别

在这里插入图片描述

虚拟存储器的特征

多次性 是指一个作业中的程序和数据,无须在作业运行时一次地全部调入内存,而是运行被分成多次调入内存运行

对换性  是指一个作业中的程序和数据无序在作业运行时一直常驻在内存,而允许它们在作业允许时进行换入换出

虚拟性 虚拟性是指能够从逻辑上扩大内存容量,使用户能看到的内存容量远大于实际内存容量
在这里插入图片描述

虚拟存储器的基本工作情况

1将仅须将哪些当前要运行的少数页面或段先装入内存便可运行,其余部分赞留在盘上

2如果程序所要访问页或者段尚未被调入内存(被称为缺页或者缺段),则必须要发出缺页(段)的中断请求,则OS将利用请求调页(段)功能将它们调入内存,以使进程能执行下去

3如果此时内存已经满了,无法装入新的页(段),则OS利用页(段)的置换功能,将内存中暂时不用的页(段)调入盘上,在腾出足够的内存空间后,再将要访问的页(段)调入内存,使程序继续执行下去

如何实现虚拟内存技术

在这里插入图片描述

总结在这里插入图片描述

在这里插入图片描述

请求分页管理系统 

与基本分页管理系统的不同

页表机制

缺页中断机构

地址变换机构

在这里插入图片描述

 页表机制—请求页表与基本页表的区别

1状态位 用于表示该页是否被调入内存

2访问字段 用于记录本页在一段时间内被访问的次数,或者记录页本次最近已有多长时间没被访问

3修改位 又称脏位,标志该页在调入内存后是否被修改过

4外存地址 用于指出该页在外存中的地址,通常是物理块号

在这里插入图片描述

 缺页中断机构

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在指令执行期间,产生和处理中断信号,CPU通常会在一条指令执行完,才检查有没有中断请求到达,若有就去处理中断请求,没有则取继续处理下一条指令

但是缺页中断是在指令执行期间,若发现所要访问的指令和数据不在内存,便立即产生和处理缺页中断信号,以便及时将所缺之页调入内存,便立即产生中断和处理中断,以便及时将所缺之页调入内存

一条指令执行期间,可能会产生多次中断
在这里插入图片描述

地址变换机构

相对于基本分页管理系统多了产生和处理缺页中断,以及从内存中换出一页的功能等

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结

在这里插入图片描述

页面置换算法 

页面置换算法用于当访问的信息不在内存中,但是内存已经满了无空闲块,这时候需要页面置换算法来将暂时不需要的页面置换出去 好的算法应该有低的缺页率
在这里插入图片描述

 最佳置换算法—OPT

每次淘汰的页面是以后永久不用的,或者在最长时间内都不会在被访问的页面

这种算法有最低的缺页率,但是在理论上是无法实现的

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

先进先出置换算法—FIFO

每次换出的页面是最早进入内存的页面

会发生Belady异常 

在这里插入图片描述
在这里插入图片描述

最近最久未使用置换算法—LRU

每次换出的页面是最近最久未使用的页面,使用的数据是过去的数据,而不是未来的

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

时钟置换算法—CLOCK

是一种性能和开销比较均衡的算法 最多经历两轮扫描

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.改造型时钟置换算法

最多四轮 为了减少写入外存的操作  只有淘汰的页面是修改过的才会取写入外存

只需一轮:
在这里插入图片描述
需要两轮:在这里插入图片描述
需要三轮:在这里插入图片描述
在这里插入图片描述
需要四轮:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结

在这里插入图片描述

页面分配策略 

驻留集

最小物理块数 能保证进程正常运行所需的最小物理块数,当系统为进程分配的物理块数小于此值时,进程将无法运行

在这里插入图片描述

 页面分配、置换策略

固定分配局部置换、可变分配局部置换、可变分配全局置换

可变分配全局置换  只要缺页就给分配新物理块 没有空闲物理块才会将页面调出

可变分配局部置换 要根据发生缺页的频率来动态增加或者减少进程的物理块

在这里插入图片描述
在这里插入图片描述

何时调入页面?

预调页策略 如果进程的许多页都存放在外存的一个连续区域中,则一次调入若干个相邻的页会比一次调入一页更高效  主要用于进程首次调入 在运行之前

请求调页策略  当进程在运行中需要访问某部分程序和数据时,若发现其所在的页面不在内存中,就立即提出请求 每次是一页

在这里插入图片描述

 何时调入页面

在这里插入图片描述

从何处调页?

1当拥有足够的对换区空间,这时可以从对换区调入所需页面

2当不具有足够的对换区空间,这是凡是不会被修改的文件的都从文件区调入,对于哪些可能会被修改的页面,在将其换出时,需要将其调到对换区,也需要从对换区调入

3UNIX方式 在运行之前,将与进程所需要的文件都放入文件区,凡是未运行过的页面,调出都放入文件区,下次还是从文件区调入,对于运行过的页面,换出时放到对换区,下次调入从对换区调入

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

抖动(颠簸)现象

在这里插入图片描述

6.工作集

实际要访问的页面集合  驻留集的大小不能小于工作集

在这里插入图片描述

影响页面换入换出效率的若干因素

1页面置换算法

2写回磁盘的频率 对于已经修改过的页面,在将其换出时,应当写回磁盘。

3读入内存的频率 

页面缓冲算法

将几个换出的页面累计到一次一下换出 

空闲页面链法   实际上就是一个空闲物理课链表,这些系统掌握的空闲物理块用于分配给频繁发生缺页的进程,以降低进程的缺页率

修改页面链法    修改页面链表是由已经修改的页面组成的链表,设置该链表的目的是减少已经修改页面换出的次数

第七章 输入输出系统

I/O设备简单介绍

什么是I/O设备?

I/O设备一般就是由执行I/O操作的机械部分和执行I/O设备的电子组件组成,通常会将这两部分分开,执行I/O操作的机械部分就是一般的I.O设备而执行I/O控制的电子部件,则被称为设备控制器或者适配器。

在这里插入图片描述

在这里插入图片描述

I/O设备的分类

按使用特性分类

在这里插入图片描述

按传输速率分类

在这里插入图片描述

按信息交换单位分类

在这里插入图片描述

总结

在这里插入图片描述

设备控制器 

什么是设备控制器

控制一个或者多个I/O设备,以实现I/O设备和计算机之间的数据交换,它是cpu和I/O设备之间的接口,接收CPU发来的命令,取控制I/O设备工作,使CPU能从繁杂的设备控制事务中解脱出来。

I/O设备的组成

在这里插入图片描述

(1)机械部件

在这里插入图片描述

(2)电子部件—I/O控制器的功能

1接收和识别命令  在控制器中具有相应的控制寄存器,用于存放接收的命令和参数

2数据交换  设备控制器能实现CPU与设备控制器,或从设备控制器与控制器与设备之间数据交换,前者通过数据总线,由CPU并行地把数据写入设备控制器,或从设备控制器读出数据,后者通过寄存器,由设备将数据输入设备控制器,或者从设备控制器传给设备,为此,在设备控制器中必须设置数据寄存器

3标志和报告设备的状态     设备控制器会记下设备的状态以供CPU了解。所以会设置相应的状态寄存器

4地址识别 1只有一个唯一的设备地址,一个设备对应一个设备地址 2为使CPU能向(从)寄存器中写入(读入)数据 ,这些寄存器也应该具有唯一的地址   为了识别地址,设备控制器中配置地址译码器

5数据缓冲区 由于I/O设备传输速率低,而CPU和和内存的速率教高,故在设备控制器中必须设置一个缓冲区

6 差错控制  对于由于I/O设备传送来的数据,设备控制器还得兼管差错控制

在这里插入图片描述

I/O控制器的组成

设备控制器位于CPU和设备之间,要完成与CPU通信,也要与设备通信,还要具有接收CPU命令来控制设备工作的功能

1设备控制器和CPU的接口 该接口用于实现CPU与设备控制器之间的通信,有三类信号线,数据线,地址线,状态线  数据线与两类寄存器相连 1数据寄存器 用来存放从设备传过来的数据,或者从CPU传来的数据 2控制/状态寄存器   用于存放cpu传送的控制信息和设备的状态信息

2设备控制器与设备的接口 在一个设备控制器,可以连接一个或者多个设备,相应地,在设备控制器中便有一个或者多个设备接口  每个接口都存在数据 状态 控制三种类型的信号

3 I/O逻辑 I/O逻辑用于实现对设备的控制 通过一组控制线与CPU交互,CPU利用该逻辑,向控制器发送I/O命令

在这里插入图片描述
注意:
在这里插入图片描述

I/O控制器的两种寄存器编址方式

内存映像—独立编址

在这里插入图片描述

 总结

在这里插入图片描述

I/O设备的四种控制方式 

程序直接控制方式

key word : 轮询

在处理机向设备控制器发出一条I/O指令,启动设备输入数据时,要同时把状态寄存器中的忙闲标志置为一,边不断地循环测试busy,CPU大部分时间用于轮询,严重浪费CPU资源

1 CPU向控制器发出读指令,于是设备启动,并且状态寄存器设为1(未就绪)

2轮询检查控制器的状态,如果是1就一直循环检查

3输入设备准备好数据,并将数据传给控制器,并报告自身的状态

4控制器将数据放到数据寄存器中,并将状态位改为0(已经就绪)

5CPU发现设备已经就绪,即可将数据寄存器中的数据读入CPU的寄存器,在把CPU寄存器中的内容放入内存

6如果还需要读数据,则CPU继续发出读指令

传输单位是字,因为数据传送需要经过CPU,则每次传送的数据以CPU寄存器的位数为准,也就是机器字长

数据流向是 内存——CPU——I/O设备或者I/O设备——CPU——内存

  • 在这里插入图片描述
    下面以C语言代码和流程图来剖析,程序直接控制方式
    在这里插入图片描述
    分析一下在思维导图中提到的几个问题:
    在这里插入图片描述

中断驱动方式

  • 由于程序直接控制方式CPU利用率低,忙等,所以提出了中断驱动方式。
  • 它实现CPU与I/O设备的并行工作

1由CPU向相应的设备控制器发出一条I/O命令,然后立即继续执行原理的任务

2CPU与I/O设备并行工作,当数据进入数据寄存器中,设备控制器便通过控制线向CPU发出中端信号,由CPU来处理后续工作

由于还是经过CPU的处理,所以传输单位还是字节

CPU会在每个指令周期的末尾去检查中断

中断处理过程需要保存和恢复进程运行的环境,及CPU中各种寄存器的信息

在这里插入图片描述
分析一下在思维导图中提到的几个问题:在这里插入图片描述

DMA方式

  • 前提 :虽然中断驱动方式解决了程序直接控制方式的问题,但是每一次只能读/写一个字,导致CPU频繁切换,耗费了很多时间。于是人们又发明了DMA方式。
  • 1数据传输的单位是块
  • 2数据是从I/O设备直接传送到内存,不需要经过CPU
  • 3仅需要在传送一个或者多个数据块的开始和结束,才需要CPU的干涉,整块数据的传送是由DMA控制器的控制下完成的,进一步提高了CPU与I/O设备之间的并行程度

在这里插入图片描述
DMA控制器

主机与DMA控制器的接口 DMA控制器与块设备的接口 I/O控制逻辑​​​​  

1CPU要从磁盘读入一个数据块时,其便会向磁盘控制器发送一条读指令 

2该指令会被放入命令寄存器中,同时将内存起始地址送入内存地址寄存器中,将读数据的字(节)数送入数据计数器中,还须将磁盘中的源地址直接送入DMA控制器的I/O控制逻辑上

3启动DMA控制器来进行数据传输,CPU就可以去完成其他任务,整个传输过程由DMA控制器完成,当DMA控制器已经从磁盘读入一个字(字节)的数据并传入数据寄存器中,在挪用一个一个存储周期,将该字节传送到内存地址寄存器所指示的内存单元,然后对内存地址寄存器的内容加1,将数据计数器的内容减1,若减一后的数据计数器不为0,则表示没有传送完,继续传送下一个字节
在这里插入图片描述

1命令寄存器

2数据寄存器

3内存地址寄存器

4数据计数器
分析一下在思维导图中提到的几个问题:
在这里插入图片描述通道控制方式

  • 通道控制方式是为了解决DMA方式连续存储的问题

如果要读写多个离散存储的数据块,或者写到到不同地方,CPU需要发出多条I/O指令,进行多次中断

传输单位是一组数据块

当CPU要完成一组相关的读写操作及有关控制时,只许向I/O通道发送一条I/O指令,以及给出所要执行的通道程序的起始地址和访问的I/O设备,通道接到该指令后,通过执行通道程序便可完成CPU指定的I/O任务

通道是一种硬件,可以理解为弱鸡版的CPU,通道可以识别并执行一系列的通道指令

通道指令 包含1操作码 读写控制等 2 内存地址 表示字节读入内存和读出内存的起始位置3计数 表示本条指令所要读入或者写入的数据的字节数4通道程序结束位P 表示通道程序是否结束 P=1表示这是这是通道程序的最后一条指令5 记录结束位R  R=0表示本通道指令与下一条指令处理的数据通属于同一个记录,R=1表示这是处理某记录的最后一条指令

在这里插入图片描述
分析一下在思维导图中提到的几个问题:
在这里插入图片描述

总结

在这里插入图片描述

在这里插入图片描述

OS之I/O软件的层次结构

 总体层次

1用户层接口 用于提供用户交互的接口,用户可通过直接调用该层所提供的与I/O操作有关的库函数对设备操作

在这里插入图片描述

 用户层软件(在用户层,不在内核)

用户层软件实现了与用户交互的接口

大部分的I/O软件都在OS内部,但也有一小部分放在用户层,其中包括与用户程序链接在一起的库函数和完全运行于内核之外的假脱机系统等

在这里插入图片描述

 系统调用 

为使各进程能有条不紊的使用I/O设备,且保护设备的安全性,不允许运行在用户态的应用程序直接调用在内核态的OS过程,但是应用程序在运行时,又必须取得OS提供的服务,所以在用户层引入了一个中介过程--系统调用、

系统调用是应用程序取得OS所以服务的唯一途径

当应用程序需要执行某种I/O操作,在应用程序必须使用相应的系统调用,在OS捕获到应用程序中的系统调用后,然后OS转向OS的相应过程,由该过程执行所需的I/O操作,执行完后,系统将CPU状态从内核态转为用户态

 库函数

用户程序通过调用对应的库函数使用系统调用,这些库函数与调用程序连接在一起,并被嵌入运行时装入内存的二进制程序

假脱机技术 

利用多道程序技术可以将一台物理CPU虚拟成多台逻辑CPU,使多个用户共享一台主机,从而适应假脱机技术可以将一台物理I/O设备虚拟成多台逻辑I/O设备,使多个用户去共享一台物理I/O设备

什么是假脱机技术

这里温习一下手工操作阶段:
在这里插入图片描述

  • 因为手工阶段的速度慢问题,引入了脱机技术
    在这里插入图片描述

在脱机技术的技术上提出假脱机技术,系统利用一道程序来模拟脱机输入时的外围控制器功能,进而把低俗I/O设备上的数据传送到高速磁盘上,在用另一道程序,模拟脱机输出时外围控制机的功能,把数据从磁盘传送到低速输出设备,称为SPOOLing

假脱机系统的组成

输入井和输出井

这是在磁盘上开辟的两个存储区域,输入井模拟脱机输入时的磁盘,输出井模拟输出的磁盘

在这里插入图片描述
在这里插入图片描述

输入进程与输出进程

输入进程用于模拟输入时的外围控制机,先将数据从输入设备放到输入缓冲区,然后存放在输入井,当CPU需要输入数据时,直接从输入井读如内存

输出进程用于模拟输出时的外围控制机,先把用户要求输入的数据从内存传送到输出井,待输出设备空闲时,在将输入井中的数据输出到缓冲区然后输出至设备

在这里插入图片描述
在这里插入图片描述

输入输出缓冲区

这是在内存中开辟的两个缓冲区,为了解决CPU与磁盘之间速度不匹配的问题

在这里插入图片描述

假脱机的特点

提高了I/O速度

将独占设备改造为共享设备    在假脱机打印机系统中,实际没有为任何进程分配设备,而只是在磁盘缓冲区为进程分配了一个空闲盘块和一张I/O请求表 v

实现了虚拟设备功能

共享打印机原理分析—假脱机技术的一种应用

先了解一下独占和共享设备,以此引出假脱机技术如何实现对独占设备的共享:
在这里插入图片描述
在这里插入图片描述

  • 打印请求完成后,请求表从打印队列删除,执行后续队列的打印任务

在这里插入图片描述

在这里插入图片描述

设备独立性软件

为了方便用户和提高OS可适应性和可扩展性,增加了与设备无关的I/O软件,以实现设备独立性,基本含义是应用程序中所用的设备不局限于使用某个具体的物理设备,为每个设备所配置的设备驱动程序,是与硬件紧密相关的软件,为了实现设备独立性,必须在设备驱动器程序之上设置一层软件,称为设备独立软件

三个基本概念 通过物理设备名使用设备  引入逻辑设备名 实现从逻辑设备名到物理设备名的转换

六大功能

1 提供设备驱动程序的同一接口 

2设备保护,禁止用户直接访问设备,以防止无权访问的用户使用设备

3差错控制 有两种错误 1暂时性错误  如电源电压的波动2持久性错误   如电源断电,磁盘上有一条划痕或者计算中发生除以0的情况

4设备的分配和回收 有两种设备 独占设备和共享设备  对于独占设备,为了避免各进程对独占设备争夺,必须由系统统一分配此类设备,而不允许进程自行使用

建立逻辑设备名到物理设备名的映射关系

6提供独立于设备的逻辑数据块 不同设备类型的设备数据交互单位不同,读取和传输的速率各不相同。设备独立性软件应能隐藏这些差异而使用逻辑设备,并向上层提供大小同一的逻辑数据块

7缓冲管理 CPU的运行速度远大于I/O设备,为了缓和CPU与I/O设备之间的矛盾,提高CPU利用率,所以引入缓冲区

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

逻辑设备名映射到物理设备名

逻辑设备表—LUT

有三种数据

逻辑设备名

物理设备名

设备驱动程序的入口 ,不同类型的I/O设备需要不同驱动程序处理

两种逻辑设备表方式

1对于单用户,在整个系统只设置一张逻辑设备表

2对于多用户,是为每个用户设置一张逻辑设备表,每当用户登录系统时,系统便会为该用户建立一个进程,同时为之建立一张逻辑设备表,并将该表放入进程的PCB中

在这里插入图片描述

为什么不同的设备需要不同的驱动程序呢?

在这里插入图片描述
举几个假设的例子:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

设备的分配和回收

设备分配时考虑的因素

设备的固有属性

独占设备,将一个设备分配给进程,便由该进程独占该设备,直至进程完成或者释放设备

共享设备,可将其同时分配给多个进程使用,必须注意这些进程访问该设备的先后次序进行合理调度(宏观共享,微观交替)

虚拟设备,属于共享设备,可同时分配给多个进程

在这里插入图片描述

设备的分配算法

在这里插入图片描述

设备分配中的安全性

安全分配方式      每个进程发出一个I/O请求后,便进入阻塞状态,直到其I/O操作完成才会被唤醒,破坏了请求和保持的条件,导致了CPU与I/O设备是顺序工作的

不安全分配方式  进程在发出I/O请求后仍在继续工作,需要时会发出第二个I/O请求,仅当进程所请求的设备被另一个进程占用时,才会进入阻塞状态。

在这里插入图片描述

.静态分配与动态分配

在这里插入图片描述

设备分配管理中的数据结构

设备、控制器、通道之间的关系:
在这里插入图片描述

设备控制表—DCT

设备类型 

设备标识符 即物理设备名,是设备的唯一ID

设备状态 

设备队列的队首指针 凡是因为请求该设备而被阻塞的进程,应将其PCB按照一定的策略排成一个设备请求队列,其队首指针指向队首PCB

控制器控制表指针 该指针指向该设备所连接的控制器控制表

重复执行次数,当重复执行多次I/O设备还没成功,方才认为此I/O失败

在这里插入图片描述

控制器控制表—COCT

控制器标识符 各个控制器的唯一ID

控制器状态

指向通道表的指针 每个控制器都由一个通道控制,该指针指向响应的通道控制表

控制器队列的队首指针 指向正在等待该控制器的阻塞进程队列(由PCB组成)

控制器队列的队伍指针

在这里插入图片描述

通道控制表—CHCT

通道标识符 各个通道的唯一ID

通道器状态

与通道连接的控制器表首地址 可通过该指针找到该通道管理的所有控制器的相关信息

通道队列的队首指针 指向正在等待该通道的阻塞进程队列(由PCB组成)

通道队列的队伍指针

在这里插入图片描述

系统设备表—SDT

在这里插入图片描述

独占设备的分配程序(分配过程)

1分配设备

根据I/O请求的物理设备名,查找SDT,从中找出该设备的DCT,在根据DCT的设备状态字段获得该设备是否在忙 若忙,则将请求I/O进程的PCB挂在设备队列上,不忙则按照一定的算法计算本次分配的安全性,如果不会导致设备进入不安全状态,则将设备分配给请求进程,如果进入不安全状态,则将PCB插入设备等待队列

在这里插入图片描述
在这里插入图片描述

2分配控制器

在系统把设备分给请求I/O设备后,再到其DCT中找出与该设备连接的控制器的COCT,从COCT状态字段中可知该控制器是否再忙,若忙,则将请求I/O设备的PCB挂在该控制器的等待队列上,否则将该控制器分配给进程 
在这里插入图片描述

3分配通道

在该COCT中也可找到与该控制器连接的的通道的CHCT,根据CHCT内的状态可知该通道是否在忙,若忙,则将请求该I/O设备的进程的PCB挂在该通道的等待队列上,否则,将该通道分配给进程,只有设备,控制器,通道成功分配,才算成功分配,任何启动I/O传输数据
在这里插入图片描述

设备分配的改进步骤

在上面的例子中,进程是以物理名来提出I/O请求的,如果指定的设备分配已经分配给其他进程了,则分配失败,或者说上面的设备分配程序不具有设备无关性,为了获得设备的独立性,进程应该使用逻辑设备名去请求I/O,这样首先会从SDT中找出第一个该类的DCT,若该设备忙,则找出第二个该类设备的DCT,仅当该类设备都忙,才能把进程挂在该类设备的等待队列中。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

 缓冲区管理

什么是缓冲区?有什么作用?

在现代OS中,几乎所有的I/O设备在CPU交换数据时,都使用了缓冲区。缓冲区是一个存储区域,可以由专门的硬件寄存器组成,也可以利用内存作为缓存区

这里介绍的是用内存作缓冲区

在这里插入图片描述

为什么引入缓冲

1缓和CPU与I/O设备之间速度不匹配的矛盾,在数据到达速率与离去速率不同的地方,都可设置缓存区,缓和速度不匹配的问题

2减少对CPU的中断频率,放宽对CPU中断响应时间的限制  ,在远端通信系统中,如a所示,用一位缓冲来接收,则必须在没收到一位数据就需要中断一次CPU,对于9.6Kb/s的数据通信来说,其中断CPU的频率是9.6HZ.即没100us就要中断一次,而且CPU必须在100us以内响应,否则缓冲区的数据会被冲掉。若设置一个8位寄存器,则中断频率是原来的八分之一

3解决数据粒度不匹配的问题,缓冲区可用于解决生产者与消费者之间交换单位不匹配的问题,比如当生产者的数据粒度比消费者粒度小的时候时,生产者可以一连生产好几个数据单位的数据,其总和已经到达消费者进程所要求的数据单元大小时,消费者便可从缓冲区取出数据消费

4提高CPU和I/O设备之间并行性
在这里插入图片描述

.单缓冲

在这里插入图片描述
T>C时的例子:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
T<C时:

在这里插入图片描述

双缓冲

T>C+M时:

在这里插入图片描述
T<C+M时:
在这里插入图片描述
在这里插入图片描述

.单缓冲和双缓冲通信时的区别

在这里插入图片描述
在这里插入图片描述

循环缓冲区

在这里插入图片描述

缓冲池

由系统中共用的缓冲区组成

三个组成 空白缓冲队列emq 输入队列inq 输出队列outq

四个工作方式 收容输入 提取输入 收容输出 提取输出

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

缓存

 缓存(Cache)是保存数据副本的高速内存区域,有CPU缓存,磁盘缓存,光驱缓存,但CPU要读取一个数据时,首先从CPU缓存中进行查找,找到就立即读取将起送给CPU处理,若没有找到,则从速率相对较慢的内存中读取并交给CPU处理,同时将这个数据调进缓存中

缓冲可以保存数据项的唯一现有版本,但缓存只提供一个位于其他地方的数据项的更快存储副本

总结

在这里插入图片描述

I/O调度

用某种算法来合理确定一个顺序来处理各个I/O请求

设备驱动程序

概述

为了实现I/O系统的上层与设备控制器之间的通信,主要负责对硬件设备的具体控制,将上层发出的一系列命名转换为特定设备写得懂的一系列操作,任何发送给设备控制器,进而使其启动设备区执行任务,反之,也会将设备控制器发来的信号传送给上层软件,由于设备驱动器与硬件密切相关,故通常会为每类设备配置一个设备驱动程序

在这里插入图片描述

 设备驱动程序的功能

1接收由与无关设备的软件发来的命令和参数,并将命令中的抽象的I/O要求转换为与设备相关的低层操作序列

2检查用户I/O请求的合法性,了解iI/O设备的工作状态,传递与I/O设备操作有关的参数,设置I/O的工作方式

3发出I/O命令,如果I/O设备空闲,就立即启动它,完成指定的的I/O操作,如果I/O设备忙率,则将请求者的请求块挂在I/O设备队列上

4及时响应设备控制器的发来的中断请求

设备驱动程序的特点

1设备驱动程序是实现与设备无关的软件和设备控制器之间的通信和转换的程序

2设备驱动程序与设备控制器以及I/O设备硬件特性紧密相关,对于不同类型的I/O设备,应配置不同的设备驱动器

3设备驱动器与I/O设备所采用的I/O控制方式有关

4由于设备驱动器程序与硬件紧密相关

5设备驱动器可允许可重入,一个正在运行的设备驱动器常会在一次调用完成前被再次调用

设备驱动程序的执行过程

1将抽象要求转换为具体要求

2校验服务请求

3检查设备状态

4传送必要参数

5启动I/O设备

中断处理程序

中断在OS中有着特殊且重要的地位,是多道程序得以实现的基础,没有中断就不可能有多道程序实现

在这里插入图片描述
在这里插入图片描述

中断处理过程

当一个进程请求I/O操作时,该进程被挂起,直到I/O操作完成,设备控制器才会向CPU发一个中断请求,CPU响应后便转向中断处理程序,中断处理执行相应几个步骤

1测定是否有未响应的中断信号

在每个指令执行结束阶段发出,每当设备完成一个字符(字或者数据块)的读入(或者输出),设备控制器便会向CPU发送一个中断请求信号,请求CPU将设备数据传送到内存的缓冲区中(读入),或者请求CPU将要输出的数据传送给设备控制器。

2保护被中断程序的CPU环境地址

把控制权给中断程序之前,需要先保护被中断进程的CPU现场环境,以便以后恢复运行,首先需要保存的是从中断现场恢复到当前进程运行所需要的信息

3转入相应的中断处理程序

在该设备接收到确认信号后,就立即取消它所发出的中断请求信号,然后,将相应的设备的中断处理程序的入口地址放入程序计数器中

4处理中断

对于不同的设备有不同的中断处理程序,该程序首先从设备控制器中读出设备状态,以判别本次中断是正常完成还是异常结束中断

5恢复CPU现场环境后退出中断

本中断是否采用屏蔽中断驱动I/O方式,若是,则返回被中断的进程

若采用的是中断嵌套方式,如果没有优先级更高的中断请求I/O,则在处理完中断程序就返回被中断的进程,反之去处理优先级更高的中断请求

中断向量表 

为了实现处理上的方便,通常为每种设备配以相应的中断处理程序,并把该程序的入口地址放在中断向量表的一个表项中,为每个设备中断请求规定一个中断信号量,它直接对应中断向量表的一个表项,当I/O设备发出中断请求信号时,由中断控制器确定该请求的中断号,并根据该中断号查找中断向量表。

中断优先级

实际情况是经常会有多个中断信号量,每个中断信号源对服务要求的紧急程度并不同。

处理多中断信号源的方式

屏蔽中断

当一个处理机正在处理一个中断,将屏蔽所有的中断,即处理机对任何新到的中断请求暂时不与理睬(用开中断和关中断实现)

嵌套中断

1当同时有多个优先级不同的中断请求,CPU优先响应最高优先级的中断请求

2高优先级的中断请求可以抢占正在运行的低优先级中断的处理机

 总结

总结回顾

在这里插入图片描述

OS内核的I/O核心子系统及功能  

I/O核心子系统以及功能

在这里插入图片描述

1.这些功能在哪个层次实现?

假脱机技术

在这里插入图片描述

I/O调度

在这里插入图片描述

设备保护

在这里插入图片描述

磁盘组织和管理

磁盘的基本结构 

.磁盘、磁道、扇区

在这里插入图片描述

如何在磁盘中读/写数据

在这里插入图片描述

盘面、柱面

在这里插入图片描述

4.磁盘的分类

按磁头是否可移动分类

在这里插入图片描述

按盘片是否可更换分类

在这里插入图片描述

总结

在这里插入图片描述

 OS之磁盘调度算法

一次磁盘读/写操作需要的时间

寻道时间

启动磁头臂+移动磁头

平均旋转延迟时间

通过旋转转盘,使磁头定位到目标扇区所需要的时间

传输时间

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

磁盘调度算法会影响寻道时间

先来先服务(FCFS)

在这里插入图片描述

最短寻找时间优先算法(SSTF)

在这里插入图片描述

扫描算法(SCAN)

在这里插入图片描述

LOOK算法

在这里插入图片描述

循环扫描算法(S-SCAN)

在这里插入图片描述

C-LOOK算法

在这里插入图片描述

 总结在这里插入图片描述

 OS之减少磁盘延迟时间的方法

前情回顾

因为磁盘是不停的转动的,所以在读完2的时候,会有一小段时间来进行处理,所以会错过读3,就需要下一次3转到磁头才能读3的数据

在这里插入图片描述

交替编号

在这里插入图片描述

磁盘地址结构的设计

在这里插入图片描述

第一圈读的是0 1 2 3,第二圈读的是4 5 6 7
在这里插入图片描述
在这里插入图片描述

采取这种方式编址的可以在读取连续的磁盘块可以减少磁头移动消耗的时间

错位命名

是将不同盘面的柱面号错位命名

在这里插入图片描述
在这里插入图片描述

总结

在这里插入图片描述

 采用交替编号,是为了解决在同一盘面上,防止在逻辑上相邻的磁盘块在物理上不相邻有一段距离,防止读完一个磁盘块的时候,会有一段时间处理磁头,而导致错失了下一个磁盘块的读取,所以让逻辑上相邻的磁盘块有一段距离,可以使之连续读出逻辑上相邻的磁盘块数据

错位命名 ,是为了解决在两个相邻盘面进行读逻辑上相邻的磁盘块数据时,由于一段时间处理磁头,导致错失下一逻辑上的磁盘块数据的读取,

为什么使用柱面号,盘面号,扇区号,由于磁头的移动会浪费大量的时间,为了减少磁头的移动,所以使用这种方式,比如000.00.000到000.01.111 就不会有磁头的移动,因为只是盘面号不同,柱面号是相同的,

磁盘是连轴连续转到的

磁盘管理

磁盘初始化

在这里插入图片描述

引导块

在这里插入图片描述
在这里插入图片描述

ROM中只存放很小的自举装入程序,开机时先运行自举装入程序,通过执行该程序可找到引导块,并将完整的自举程序读入内存,完成初始化

坏块的管理

在这里插入图片描述

总结

在这里插入图片描述

第八章文件管理 

OS之初识文件管理概念和功能

文件的属性和定义

文件是指由创建者所定义的,具有文件名的一组相关元素的集合,一组有意义的信息集合

在这里插入图片描述
在这里插入图片描述

文件名  由创建文件的用户决定文件名,主要为了方便用找到文件,不同系统对文件名的规定是不同的,而且同一目录下不允许有重名文件

 扩展名  是添加在文件名之后的若干个附加字符,又称后缀名,用于指示文件的类型,通常用.来划分文件名和扩展名

标识符   一个系统中各个文件的标识符是唯一的,但对于用户来说是毫无可读性的,因此标识符是来操作系统来区分各个文件的一种内部名称

文件类型 

按性质和用途分类 1系统文件 由系统软件构成的文件,大多数系统文件只允许用户调用,不允许读和写 2用户文件 指用户的源代码,目标文件,可执行文件或数据等所构成的文件3库文件 由标准子列程及常用的例程等所构成的文件,只允许用户调用,但不允许用户修改

按文件中数据 的形式分类 1源文件 由源程序和数据构成的文件,通常由终端或输入设备输入的源程序和数据所形成 的文件都属于源文件,它通常由ASCII或汉字组成 2目标文件 把源程序经过编译后,但尚未经过链接程序链接的目标代码,后缀名是.obj3可执行文件 指源程序经过编译器编译后的目标代码,且经过链接程序链接后所形成的文件,在windows中,后缀名是.exe或者.com

按存取控制类型分类  1可执行文件 2只读文件3读/写文件

按组织形式和处理方式分类 1普通文件2目录文件3特殊文件

文件长度 指文件的当前长度,也是文件的大小,长度单位可以是字节,字或者块

文件的物理位置 通常用于指示文件所在设备及文件在该设备中地址的指针,文件的存放路径让用户使用,在外存的地址让操作系统使用,对用户透明

文件的创建时间   指文件最后一次的修改文件

文件所有者信息 

保护信息 对文件进行保护的访问控制信息

文件内部的数据如何组织

文件的逻辑结构的类型

在这里插入图片描述
在这里插入图片描述

什么是数据项 在文件系统中,数据项是最低级的数据组织形式,有两种类型1基本数据项  用于描述一个对象的某种字符集,是数据组织在可以命名的最小逻辑数据单位,又称字段,例如描述一个学生的基本数据项有学号,姓名,年龄和班级等  2组合数据项  由若干个基本数据项组成,简称组项,例如工资是组项,可由基本工资和工龄工资,和奖励工资等基本数据项组成

什么是记录 记录是一组相关数据项的集合,用于描述一个对象在某方面的属性,例如一个少年,将他当成班上的一个学生,对他的描述应使用学号,姓名和年龄等数据项 ,为了能为了标志一个记录,必须在其各个数据项中确定一个或者几个数据项,并把它称为关键字

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

定长记录 指文件中所有记录的长度都是相同的,所有记录中的各数据项都处于记录中相同的位置

变长记录 是指文件中各个记录的长度不同,可能是由于记录中所包含的数据项的数目不同,也可能是数据项本身的长度不同

无结构文件(流式文件)

文件内部数据就是一系列二进制流或者字符流组成,此类文件的长度单位是字节

文件之间应该如何组织

在这里插入图片描述

操作系统应该向上提供哪些功能

在这里插入图片描述
在这里插入图片描述

从上往下看,文件应该如何存放在外存

在这里插入图片描述
在这里插入图片描述

其他需要由操作系统实现的文件管理功能

在这里插入图片描述

总结

在这里插入图片描述
在这里插入图片描述

文件的逻辑结构 

无结构文件

在系统中大量允许的源程序,可执行程序,库函数等,所采用的就是无结构的文件形式,此类文件的长度是以字节为单位的,对于流式文件的访问,则是利用读写指针来指出下一个要访问的字节

在这里插入图片描述

有结构文件

在这里插入图片描述
定长记录:

定长记录 指文件中所有记录的长度都是相同的,所有记录中的各数据项都处于记录中相同的位置
在这里插入图片描述
不定长记录:

变长记录 是指文件中各个记录的长度不同,可能是由于记录中所包含的数据项的数目不同,也可能是数据项本身的长度不同
在这里插入图片描述

有结构文件的逻辑结构

在这里插入图片描述

顺序文件

排列方式 

串结构  通常按照存入文件的先后时间进行排序

顺序结构 由用户指定一个字段作为关键字,每个记录的关键字必须要有唯一性,然后文件中的记录按照关键字进行排序

顺序存储是指物理上采用顺序存储,指逻辑上相邻的记录在物理上也相邻

链式存储 逻辑上相邻的记录物理上不一定相邻

在这里插入图片描述

顺序文件记录寻址

隐式寻址方式

对于定长记录顺序文件,如果知道当前记录的逻辑地址,则很容易知道下一记录的逻辑地址,设置读写指针

显式寻址方式 该方式对于定长记录顺序文件实现直接访问或随机访问
在这里插入图片描述

索引文件

  • 不经意间让我想起了数据库的索引,聚簇索引和唯一索引等,有了更进一步的理解,而且知道了它的时间空间效率。
  •  定长记录顺序文件可以通过简单的计算实现随机查找,但变长记录顺序文件查找一个记录必须从第一个记录查起,一组顺序查找到目标记录为止,耗时很长,为了解决这种问题,可为变长顺序文件建立一个索引表,并且为主文件每个记录在索引表分别设置一个索引表项,用于记录指向记录的指针和记录的长度

    索引表本身是一种定长记录顺序文件

  • 可以用不同的数据项建立多个索引表,可以用关键字建立的索引,因此在对索引文件进行检索时,可以利用折半查找法检索索引表,通过索引表找到对应的记录在这里插入图片描述

索引顺序文件

索引顺序文件是索引文件和顺序文件的结合

不是每个记录对应一个一个索引表项,而是一组记录对应一个索引表项(为每组第一个记录在索引表中建立一个索引项)

索引顺序文件是对顺序文件的一种改进,他基本克服了变长记录的顺序文件不能随机访问以及不便于删除和插入记录等缺点,但是又保留了顺序文件的关键特征,即记录是按照关键字的顺序组织起来的,又引入两个特征,可以引入文件索引表,通过该表可以实现对索引文件的随机访问,另一个增加了溢出文件,用来记录新增加的,删除的,修改的数据

在这里插入图片描述
索引顺序文件的效率分析:
在这里插入图片描述

多级索引顺序文件

套娃思想

在这里插入图片描述

总结
在这里插入图片描述
在这里插入图片描述

文件的目录结构

文件的目录是为了将文件之间组织起来

文件控制块


为了能对一个文件进行正确的存取,必须为文件设置用于描述和控制文件的数据结构,称为文件控制块(FCB),文件与FCB一一对应,而人们把FCB有序集合称为文件目录,及一个FCB就是一个文件目录项,通常一个文件目录也是一个文件

在这里插入图片描述
在这里插入图片描述

FCB实现了文件名到文件之间的映射,实现了按名存取

FCB中的信息

1基本类信息 文件名 文件物理位置 文件的逻辑结构 文件的物理结构

2存取控制类信息 文件拥有者的存取权限,核准用户的存取权限和一般用户的存取权限
3使用类信息 文件的建立时间 文件上一次修改的时间 当前使用的信息

对目录的操作

在这里插入图片描述

单级目录结构在这里插入图片描述

整个系统只建立一张目录表,每个文件占一个目录项

1查找速度慢

2不允许重名

3不便于实现文件公享

两级目录结构

在这里插入图片描述

 为每一个用户单独建立一个目录表UDF,然后建立一个主文件目录用于存放各个用户的目录表

1提高了检索的速度 

2在不同的用户文件目录,可以使用相同的文件名

3不同的用户可以使用不同的文件名来访问系统中同一个共享文件

多级目录结构(树形目录结构)

不便于文件共享

MDF称为根目录,每个文件目录中,只能有一个根目录,每个文件和目录只能有一个父目录,把数据文件称为树叶,其他的目录称为树的节点,或称为子目录

在这里插入图片描述

路径名 在树型目录中,从根目录到任何数据文件都只有一条唯一的通路,这条路径称为绝对路径,把全部目录文件名与数据文件用/连接起来
在这里插入图片描述

当前目录 当一个文件系统含有很多级时,每访问一个文件,都要从根目录开始到树叶为止,这样是非常麻烦的,需要多次访问磁盘,所以基于这一点,可为每个进程设置一个当前目录,又称工作目录,从当前目录开始到数据文件为止所构成的路径名称称为相对路径名。

无环图目录结构解决文件共享
在这里插入图片描述

无环图目录结构

在树形目录结构的基础上,增加一些指向同一节点的有向边,是没有循环的有向图

在这里插入图片描述

可以用不同的文件名去指向同一个文件,甚至可以是同一个目录
在这里插入图片描述

需要为每一个共享结点设置一个共享计数器,用于记录此时有多少各地方在共享该结点,当用户提出删除结点的请求时,只是删除该用户的FCB,并使共享计数器减1,并不会直接删除共享结点,只有共享计数器减为0,才删除结点

共享文件不同于复制文件,只要有一个用户改变了共享文件内容,其他用户也会看见改变

索引节点(FCB的改进)瘦身

防止目录过大,占用的磁盘块过多

在这里插入图片描述
在这里插入图片描述

索引结点是包含除文件名之外的文件描述信息,只有当找到文件名对应的目录项时,才需要把索引结点调入内存

磁盘索引节点 放在磁盘(外存)的索引结点,每个文件对应一个唯一的磁盘索引节点,包含1文件拥有者标识符 2文件类型 3文件存取权限 4文件物理地址 5 文件长度 6文件连接计数,所有指向该文件名的指针计数 7文件存取时间

内存索引节点 当文件被打开时,要将磁盘索引节点复制到内存索引节点上 包含1索引节点编号2状态 3访问计数 4文件所属文件系统的逻辑设备号 5链接指针

总结

在这里插入图片描述
在这里插入图片描述

文件的物理结构

文件块、磁盘块

在这里插入图片描述
在这里插入图片描述

连续分配

将文件分为若干个逻辑块,连续分配要求每个文件在磁盘上占用一组连续的块

物理块号=逻辑块号+起始块号

连续分配优点:

连续分配的文件在顺序读写时速度最快

可以实现顺序访问和直接访问
在这里插入图片描述
在这里插入图片描述
连续分配缺点:

要求分配一个连续的磁盘存储空间

不利于文件拓展,不能灵活的删除和插入记录,文件利用率低,会产生磁盘碎片

必须事先知道文件的长度

不能满足动态增长的文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

链接分配

在这里插入图片描述

隐式链接

在每个文件目录的每个目录项中,都要含有指向链接文件的第一个盘块和最后一个盘块,每个盘块都含有下一个盘块的指针

在这里插入图片描述

只支持顺序访问
在这里插入图片描述

显式链接

显式链接是指把链接文件各物理盘块的指针,显式地存在在一张链接表中(FAT),一个磁盘只需要设立一个FAT,所以在文件目录表的每个文件目录项中只需要存放该文件的第一个起始块号

物理块号是可以隐含的

在这里插入图片描述
在这里插入图片描述

由于FAT是常驻在内存中的,所以在用逻辑块号转换到物理块号的过程中只需要去访问FAT,所以不会去访问磁盘,故比隐式链接来说访问速度会快很多,而且想要转换块号,不需要依次访问之前的各个块号,只需要去FAT中查找,所以支持随机访问,也支持顺序访问

索引分配

为每个文件建立一个索引表,在目录中的目录项需要记录文件的索引块是哪个

索引表中的逻辑块号是可以隐含的

可以支持随机访问

索引表需要占空间

在这里插入图片描述
如何实现逻辑块号到物理块号的转换?
在这里插入图片描述
数据太大,一个索引表装不下那么多的映射怎么办?

三个方法 1链接方法 多层索引 3混合索引
在这里插入图片描述

链接方案

若想访问256的逻辑块号的物理块号,则需要先去访问索引块7才能去访问索引块15,如果前面的索引块太多,显然这种方式是低效的

在这里插入图片描述

多层索引

建立多级索引(原理类似多级页表)

在这里插入图片描述
在这里插入图片描述

混合索引

多种索引方式的结合,防止一个较小的文件也需要多次访问磁盘

在这里插入图片描述

索引分配总结

在这里插入图片描述

总结

在这里插入图片描述文件管理空闲磁盘块

存储空间的划分与初始化

文件区和目录区

文件区就是放文件数据

目录区放文件目录信息FCB,用于管理磁盘存储空间管理的信息

一个文集卷可以由多个物理磁盘组成

在这里插入图片描述

空闲表法

适用于连续分配方式

如何分配?

建立一个空闲盘块表,在空闲盘表法中,存储第一个空闲盘块号和空闲盘块数,适应于连续分配方式      可以用首次适应,最佳适应,最坏适应等算法来决定为文件分配盘块
在这里插入图片描述

在这里插入图片描述
如何回收?

会遇到跟动态分区的相同的四种情况
在这里插入图片描述
在这里插入图片描述

.空闲链表法

空闲盘块链 是以盘块为单位,空闲盘块中存储着下一个空闲盘块的指针

空闲盘曲链是以盘区为单位 ,空闲盘曲的第一个盘块记录了盘曲的长度和下一个盘曲的指针

在这里插入图片描述

空闲盘块链、

适应于离散分配的物理结构

操作系统中保存着链头和链尾指针如何分配 如果某文件需要申请n个盘块,则从链头开始依次摘下n个盘块分配,并修改空闲链的链头指针 如何回收 回收的盘块依次挂在链尾,并修改空闲链的链位指针

在这里插入图片描述

空闲盘区链

离散分配和连续分配都适用

如何分配 若某文件申请n个盘块,则可以按照首次适应,最佳适应等算法,从链头开始检索,按照算法规则区找到一个合适的连续空闲块,若没有合适的连续空闲块,也可以将不同的盘区的盘块分给一个文件

在这里插入图片描述

 位示图法

适用于连续分配和离散分配

用一串二进制来表示盘块是否是被使用 比如用0表示盘块空闲,用1表示盘块已经分配,位示图法一般用连续的字来表示,比如下列一个字的的字长是16位,一个字代表了16个盘块,所以要推出盘块号道字号和位号的转换的公式

在这里插入图片描述
如何分配与回收?

在这里插入图片描述

成组链接法

在文件卷的目录区中专门用一个磁盘块作为超级块,系统启动时需要将超级块读入内存,并且保证内存与外存的超级块数据一至

在这里插入图片描述
超级块的作用

 超级块的第一个单元放入下一组的空闲盘块数,然后剩下的放入下一组的空闲块号,第二个的空闲块放入下下一组的信息,如下下组的块号数,和下下组的空闲块号,而且最后一个分组的组块数要比第一个小一,因为已经没有下一组空闲块,此处设置为-1,表示结束
在这里插入图片描述
如何分配?
需要1个空闲磁盘块
在这里插入图片描述
在这里插入图片描述
需要100个空闲磁盘块

由于第一组的所有空闲块都被分配了,但是300这个盘块里放入了第二组的所有信息,索引要将300块里的组信息复制道超级块中
在这里插入图片描述
在这里插入图片描述
如何回收?
在这里插入图片描述
在这里插入图片描述
第二种情况,第一组已满

将超级块中的信息都放入这个待回收的空闲块中,并修改超级块的信息,让新回收的块成为第一个分组
在这里插入图片描述
在这里插入图片描述

总结

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

文件的基本操作

创建文件

1为新文件分配必要的外存空间2在文件目录中为之建立一个目录项,目录项中记录了新文件的文件名和在外存的地址等属性

在这里插入图片描述

删除文件

1先从目录文件中找到要删除的文件的目录项,并使之成为空项 2根据目录项中的信息去回收文件占用的外存的磁盘块 

在这里插入图片描述

打开文件

根据文件的存放路径找到对应的目录文件,从目录中找到文件名所对应的目录项,并检查该用户是否有权利进行这样的操作

所为打开,就是就是指系统将指定文件的属性,从外存复制到内存中打开文件表的一个表目,并将对应的表目的编号返回给用户,之后用户使用打开文件表的编号来指明要操作的文件

在这里插入图片描述
打开文件表有两种:

用户进程的打开文件表

系统的打开文件表
在这里插入图片描述

关闭文件

在这里插入图片描述

读文件

读文件之前必须要打开文件

在这里插入图片描述

写文件

写文件之前也要执行打开文件

在这里插入图片描述

 读写指针,不设置读写指针的话,每次只能对文件进行顺序操作,即每次从文件的始端开始读或者写,可以通过设置读写指针的位置,使得读写文件时不必每次都从其始端开始读写,将顺序存取变为随机存取,

在打开文件时,并不会把直接把数据直接放入内存,而是将基本信息放入系统打开文件表,然后把索引号也叫文件描述符返回给用户

在读写文件时,才会把数据读入内存

总结

在这里插入图片描述
在这里插入图片描述

文件共享

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

在这里插入图片描述

基于符号链的共享方式(软链接)

类似于windows中的快捷方式,这个快捷方式的文件中并不是想要找的数据,而是想找数据的存放路径

在这里插入图片描述
例子
在这里插入图片描述
在这里插入图片描述

共享的文件不存在时

则通过软连接实现的共享就会失效,会找不到这个文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结

在这里插入图片描述
在这里插入图片描述

文件保护

.口令保护

类似于输入密码

在这里插入图片描述

加密保护

类似于摩斯密码这种加密模式

在这里插入图片描述

访问控制

 在这里插入图片描述

在用户分为不同的组,每个组的权限不同
在这里插入图片描述

windows的访问控制

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结

在这里插入图片描述

文件层次

知识总览

在这里插入图片描述

1.举个例子

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_50985215/article/details/122446036
今日推荐