计算机操作系统笔记(四)

计算机操作系统笔记(一)

一、操作系统
二、进程
点此跳转

计算机操作系统笔记(二)

二、进程
点此跳转

计算机操作系统笔记(三)

二、进程
三、内存
点此跳转

四、文件

4.1、初识文件

4.1.1、文件管理

一个文件的属性
文件名:同一目录下不允许有重名文件。
标识符:一个系统内的各文件标识符唯一
类型:指明文件的类型
位置:文件存放的路径(让用户使用)、在外存中的地址(操作系统使用,对用户不可见)
创建时间
上次修改时间
文件所有者信息
保护信息:对文件进行保护的访问控制信息

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

  1. 创建文件(create系统调用)
  2. 删除文件(delete系统调用)
  3. 读文件(read系统调用)
  4. 写文件(write系统调用)
  5. 打开文件(open系统调用)
  6. 关闭文件(close系统调用)

4.1.2、文件的逻辑结构

4.1.2.1、无结构文件

无结构文件:文件内部的数据就是一系列二进制流或字符流组成。又称“流式文件”。如:Windows操作系统中的.txt文件。

4.1.2.2、有结构文件

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

顺序文件:文件中的记录一个接一个地顺序排列(逻辑上),记录可以是定长的或可变长的。各个记录在物理上可以顺序存储链式存储
可见,顺序文件的缺点是增加/删除一个记录比较困难(如果是串结构则相对简单)

索引文件
索引表本身是定长记录的顺序文件。因此可以快速找到第i个记录对应的索引项。
由于索引文件有很快的检索速度,因此主要用于对信息处理的及时性要求比较高的场合。

索引顺序文件
一组记录对应一个索引表项。

多级索引顺序文件
为了进一步提高检索效率,可以为顺序文件建立多级索引表。

4.1.2、文件目录

目录本身就是一种有结构文件

需要对目录进行哪些操作?
搜索、创建文件、删除文件、显示目录、修改目录

单级目录实现了“按名存取”,但是不允许文件重名
两级目录结构。分为主文件目录(MFD,Master File Directory)和用户文件目录(UFD,User Flie Directory) 。允许不同用户的文件重名
多级目录结构用户(或用户进程)要访问某个文件时要用文件路径名标识文件,文件路径名是个字符串。各级目录之间用“/”隔开。从根目录出发的路径称为绝对路径
可以很方便地对文件进行分类,层次结构清晰,也能够更有效地进行文件的管理和保护。但是,树形结构不便于实现文件的共享。为此,提出了“无环图目录结构”。

4.1.3、文件的物理结构

很多操作系统中,磁盘块的大小与内存块、页面的大小相同

在外存管理中,为了方便对文件数据的管理,文件的逻辑地址空间也被分为了一个一个的文件“块”
于是文件的逻辑地址也可以表示为(逻辑块号,块内地址)的形式。

4.1.3.1、连续分配

连续分配方式要求每个文件在磁盘上占有一组连续的块。
物理块号=起始块号+逻辑块号
可以直接算出逻辑块号对应的物理块号,因此连续分配支持顺序访问和直接访间(即随机访间)
连续分配的文件在顺序读/写时速度最快
物理上采用连续分配,存储空间利用率低,会产生难以利用的磁盘碎片
可以用紧凑来处理碎片,但是需要耗费很大的时间代价。

4.1.3.2、链接分配

链接分配采取离散分配的方式,可以为文件分配离散的磁盘块。分为隐式链接显式链接

采用链式分配(隐式链接)方式的文件,只支持顺序访问,不支持随机访问
采用隐式链接的链接分配方式,很方便文件拓展。另外,所有的空闲磁盘块都可以被利用,不会有碎片问题,外存利用率高。

采用链式分配(显式链接)方式的文件,支持顺序访问,也支持随机访问(想访问i号逻辑块时,并不需要依次访问之前的0~i-1号逻辑块)
一个磁盘只会建立一张文件分配表。开机时文件分配表放入内存,并常驻内存

4.1.3.3、索引分配

索引分配允许文件离散地分配在各个磁盘块中,系统会为每个文件建立一张索引表,索引表中记录了文件的各个逻辑块对应的物理块(索引表的功能类似于内存管理中的页表――建立逻辑页面到物理页之间的映射关系)。索引表存放的磁盘块称为索引块``。文件数据存放的磁盘块称为数据块。 索引分配方式可以支持随机访问。文件拓展也很容易实现,但是索引表需要占用一定的存储空间

4.1.3.4、文件存储空间管理

空闲表法
如何分配磁盘块:与内存管理中的动态分区分配很类似,为一个文件分配连续的存储空间。同样可采用首次适应、最佳适应、最坏适应等算法来决定要为文件分配哪个区间。
回收时需要注意表项的合并问题。

空闲链表法
空闲盘块链:以盘块为单位组成一条空闲链
空闲盘区链:以盘区为单位组成一条空闲链
操作系统保存着链头、链尾指针。

位示图法
要能自己推出盘块号与(字号,位号)相互转换的公式。
注意题目条件:盘块号、字号、位号到底是从o开始还是从1开始
(字号,位号)=(i, j)的二进制位对应的盘块号b=ni+ j

4.1.4、文件的基本操作

  1. 创建文件(create系统调用)
    在外存中找到文件所需的空间
    创建该文件对应的目录项
  2. 删除文件(delete系统调用)
    找到文件名对应的目录项
    回收文件占用的磁盘块
    删除文件对应的目录项
  3. 读文件(read系统调用)
    根据读指针、读入数据量、内存位置将文件数据从外存读入内存
  4. 写文件(write系统调用)
    根据写指针、写出数据量、内存位置将文件数据从内存写出外存
  5. 打开文件(open系统调用)
    从目录中找到文件名对应的的目录项
    将目录项复制到内存中的“打开文件表”中。并将对应表目的编号返回给用户。之后用户使用打开文件表的编号来指明要操作的文件。
  6. 关闭文件(close系统调用)
    将进程的打开文件表相应表项删除
    回收分配给该文件的内存空间等资源
    系统打开文件表的打开计数器count 减1,若count =0,则删除对应表项。

4.1.5、文件共享

硬链接
各个用户的目录项指向同一个索引结点
索引结点中需要有链接计数count
某用户想删除文件时,只是删除该用户的目录项,且count–
只有count == 0时才能真正删除文件数据和索引结点,否则会导致指针悬空
软连接
在一个Link型的文件中记录共享文件的存放路径(Windows快捷方式)
操作系统根据路径一层层查找目录,最终找到共享文件
即使软链接指向的共享文件已被删除,Link型文件依然存在,只是通过Link 型文件中的路径去查找共享文件会失败(找不到对应目录项)
由于用软链接的方式访问共享文件时要查询多级目录,会有多次磁盘I/O,因此用软链接访问

4.1.6、文件保护

口令
优点:保存口令的空间开销不多,验证口令的时间开销也很小。
缺点:正确的“口令”存放在系统内部,不够安全。
加密
优点:保密性强,不需要在系统中存储“密码”
缺点:编码/译码,或者说加密/解密要花费一定时间。

4.1.7、文件系统的层次结构

在这里插入图片描述

4.2、磁盘

4.2.1、磁盘的物理地址

可用(柱面号,盘面号,扇区号)来定位任意一个“磁盘块”。在“文件的物理结构”小节中,我们经常提到文件数据存放在外存中的几号块,这个块号就可以转换成(柱面号,盘面号,扇区号)的地址形式。

4.2.2、磁盘调度算法

寻找时间(寻道时间)Ts:在读/写数据前,将磁头移动到指定磁道所花的时间。
①启动磁头臂是需要时间的。假设耗时为s;
②移动磁头也是需要时间的。假设磁头匀速移动,每跨越一个磁道耗时为m,总共需要跨越n条磁道。则:
寻道时间Ts = s+ m*n

延迟时间Tr通过旋转磁盘,使磁头定位到目标扇区所需要的时间。设磁盘转速为r(单位:转/秒,或转/分),
则平均所需的延迟时间Tr=(1/2)[一次半圈]*(1/r)= 1/2r

传输时间Tt:从磁盘读出或向磁盘写入数据所经历的时间,
假设磁盘转速为r,此次读/写的字节数为b,每个磁道上的字节数为N。
则:传输时间Tt=(1/r)*(b/N)= b/(rN)

4.2.2.1、先来先服务算法(FCFS)

根据进程请求访问磁盘的先后顺序进行调度。
在这里插入图片描述
优点:公平;如果请求访问的磁道比较集中的话,算法性能还算过的去
缺点:如果有大量进程竞争使用磁盘,请求访问的磁道很分散,则FCFS在性能上很差,寻道时间长。

4.2.2.2、最短寻找时间优先(SSTF)

SSTF算法会优先处理的磁道是与当前磁头最近的磁道。可以保证每次的寻道时间最短,但是并不能保证总的寻道时间最短。(其实就是贪心算法的思想,只是选择眼前最优,但是总体未必最优)

在这里插入图片描述
优点:性能较好,平均寻道时间短
缺点:可能产生“饥饿”现象

4.2.2.3、扫描算法(SCAN)

SSTF算法会产生饥饿的原因在于:磁头有可能在一个小区域内来回来去地移动。为了防止这个问题,可以规定,只有磁头移动到最外侧磁道的时候才能往内移动,移动到最内侧磁道的时候才能往外移动。这就是扫描算法(SCAN)的思想。由于磁头移动的方式很像电梯,因此也叫电梯算法。
在这里插入图片描述
优点:性能较好,平均寻道时间较短,不会产生饥饿现象
缺点:只有到达最边上的磁道时才能改变磁头移动方向

4.2.2.4、LOOK 调度算法

扫描算法(SCAN)中,只有到达最边上的磁道时才能改变磁头移动方向,事实上,处理了184号磁道的访问请求之后就不需要再往右移动磁头了。LOOK调度算法就是为了解决这个问题,如果在磁头移动方向上已经没有别的请求,就可以立即改变磁头移动方向。(边移动边观察,因此叫 LOOK)
在这里插入图片描述
优点:比起SCAN算法来,不需要每次都移动到最外侧或最内侧才改变磁头方向,使寻道时间进一步缩短

4.2.3、磁盘的物理地址减少延迟时间的方法

减少延迟时间的方法:交替编号
若采用交替编号的策略,即让逻辑上相邻的扇区在物理上有一定的间隔,可以使读取连续的逻辑扇区所需要的延迟时间更小。
减少延迟时间的方法:错位命名
:若相邻的盘面相对位置相同处扇区编号相同

五、I/O

5.1、I/O控制器的功能

  1. 接受和识别CPU发出的命令
    如CPU发来的read/write命令,I/O控制器中会有相应的控制寄存器来存放命令和参数
  2. 向CPU报告设备的状态
    I/O控制器中会有相应的状态寄存器,用于记录I/O设备的当前状态。如:1表示空闲,0表示忙碌
  3. 数据交换
    I/O控制器中会设置相应的数据寄存器。输出时,数据寄存器用于暂存CPU发来的数据,之后再由控制器传送设备。输入时,数据寄存器用于暂存设备发来的数据,之后CPU从数据寄存器中取走数据。
  4. 地址识别
    类似于内存的地址,为了区分设备控制器中的各个寄存器,也需要给各个寄存器设置一个特定的“地址”。1/o控制器通过cPU提供的“地址”来判断CPU要读/写的是哪个寄存器

5.2、I/O控制器的组成

  1. CPU与控制器的接口
    用于实现CPU与控制器之间的通信。CPU通过控制线发出命令;通过地址线指明要操作的设备;通过数据线来取出(输入)数据,或放入(输出)数据
  2. I/O逻辑
    负责接收和识别CPU的各种命令(如地址译码),并负责对设备发出命令
  3. 控制器与设备的接口
    用于实现控制器与设备之间的通信

5.3、I/O控制方式

5.3.1、程序直接控制方式

Key word:轮询
1.完成一次读/写操作的流程(以读操作为例)

在这里插入图片描述

5.3.2、中断驱动方式

引入中断机制。由于I/O设备速度很慢,因此在CPU发出读/写命令后,可将等待l/O的进程阻塞,先切换到别的进程执行。当I/O完成后,控制器会向CPU发出一个中断信号,CPU检测到中断信号后,会保存当前进程的运行环境信息,转去执行中断处理程序处理该中断。处理中断的过程中,CPU从I/o控制器读一个字的数据传送到CPU寄存器,再写入主存。接着,CPU恢复等待I/O的进程(或其他进程)的运行环境,然后继续执行

在这里插入图片描述

5.4、I/O软件层次结构

在这里插入图片描述
用户层软件:用户层软件实现了与用户交互的接口,用户可直接使用该层提供的、与l/o操作相关的库函数对设备进行操作

设备独立性软件:设备独立性软件,又称设备无关性软件。与设备的硬件特性无关的功能几乎都在这一层实现。

设备驱动程序:主要负责对硬件设备的具体控制,将上层发出的一系列命令(如read/write)转化成特定设备“能听得懂”的一系列操作。包括设置设备寄存器;检查设备状态等

中断处理程序:进行中断处理

硬件:不同的I/O设备有不同的硬件特性,具体细节只有设备的厂家才知道。因此厂家需要根据设备的硬件特性设计并提供相应的驱动程序。

5.5、缓冲区

缓冲区的作用

  1. 缓和CPU与I/O设备之间速度不匹配的矛盾
  2. 减少对CPU的中断频率,放宽对CPU中断相应时间的限制
  3. 解决数据粒度不匹配的问题
  4. 提高CPU与I/O设备之间的并行性

5.5.1、单缓冲

假设某用户进程请求某种块设备读入若干块的数据。若采用单缓冲的策略,操作系统会在主存中为其分配一个缓冲区(若题目中没有特别说明,一个缓冲区的大小就是一个块)。
注意:当缓冲区数据非空时,不能往缓冲区冲入数据,只能从缓冲区把数据传出;当缓冲区为空时,可以往缓冲区冲入数据,但必须把缓冲区充满以后,才能从缓冲区把数据传出
在这里插入图片描述

5.5.2、双缓冲

假设某用户进程请求某种块设备读入若干块的数据。若采用双缓冲的策略,操作系统会在主存中为其分配两个缓冲区(若题目中没有特别说明,一个缓冲区的大小就是一个块
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值