第六章 设备管理 输入输出系统——I/O系统

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37868325/article/details/84557788
  1. 磁盘性能简述

首先与格式有关

  1. 数据的组织和格式
    • 盘片、面、磁道、扇区
    • 为方便处理,每条磁道存储容量相同,每个磁道上的每个扇区相当于一个盘块。磁盘”格式化”的过程就是按规定的格式规划盘块。

如温盘格式:

    1. 每道30个扇区,每扇600个字节。512字节用于存放数据,其余存放控制信息。
    2. 标识符字段:标识一个扇区的信息记录;    1+2+1+1+3 bytes
    3. 数据字段:每个扇区存放数据的空间。

    数据前后还有若干特定功能字节。    1+512+2 bytes

 

与速度有关

  1. 磁盘类型
    • 固定磁头(每道一磁头)
    • 移动磁头(每盘一磁头)
  2. 访问时间的计算
    • 寻道时间(到磁道)
    • 旋转延迟(到扇区)
    • 传输时间

              传输时间占总时间的比例最小,磁盘读写速度的提高要选择合适的调度算法,减少前两项用时,使所有作业的磁盘处理时间均衡。

2)磁盘调度方法

  1. 对所有请求访问磁盘的进程进行合理调度,使对磁盘的平均访问时间最小。
  2. 目标:使平均寻道时间最少。
  3. 算法:
    • FCFS
    • 最短寻道时间优先SSTF
    • 扫描算法SCAN(磁盘电梯调度算法)
      1. 循环扫描算法CSCAN
      2. N-Step-SCAN算法
      3. FSCAN算法

FCFS

  1. 多个进程的磁盘I/O请求构成一个随机分布的请求队列。
  2. 磁盘I/O执行顺序按磁盘请求的先后顺序。

最短寻道时间优先SSTF  Shortest Seek Time First

  1. 选择从当前磁头位置出发移动最少的磁盘I/O请求
    • 使每次磁头移动时间最少。
    • 不一定是最短平均柱面定位时间,但比FIFO算法有更好的性能。
    • 对中间的磁道有利,但可能会有进程处于饥饿状态(I/O请求总不被执行)。

 

 

设当前在100磁道上;

进程要求的访问顺序:55,58,39,18,90,160,150,38,184

扫描算法SCAN(磁盘电梯调度算法)

  1. SSTF会导致“饥饿”现象
    • 总选择最近的磁道访问,远磁道请求的进程会长时间得不到执行。
  2. 改进:
    • 考虑距离的同时,更优先考虑方向
  1. SCAN算法
    • 规定磁头移动方向:自里向外,再自外向里移动。
    • 后续的I/O磁道请求,哪个在规定方向上距离最近,就先执行哪个。
    • 如当前为100,后续要求55,86,95,180,165,105
      1. 先由内向外:选最近的105执行,再判断剩余的,选165,180。

再由外向内:95,86,55

 

  1. 循环扫描CSCAN
  1. SCAN的错过问题:
    • 容易错过与当前磁道距离近,但方向不一致的磁道。
  2. 修改:将SCAN规定的移动方向改为“单向移动”
    • 由里向外后,再由里向外。
  1. N-Step-SCAN
  1. 前述最近寻道算法共同问题:
    • “磁臂粘着”——磁头静止在一个磁道上,导致其它进程无法及时进行磁盘I/O。(因:高密度盘,进程的读写可能集中在某一磁道)
    • 如现有一系列请求:

3 3 5 2 3 3 3 2 3 3 2 3 3 4 4 5 2 3 3 3 4 4 2 3 3 3 2 2 2 3

不管哪种算法,从3开始向下执行会是

3 3 3 3 3 3 3 3 3 3….2 2 2 2 2 2 … 4 4 ….

 

  1. 改进:
    • 将磁盘请求队列分成长为N 的子队列
    • 按FCFS选择子队列。队列内又按SCAN算法。

3 3 5 2 |3 3 3 2| 3 3 2 3| 3 4 4 5| 2 3 ….2 3

    • 处理子队列过程中产生的新I/O再依次排队列。
    • N=1时,就是FCFS,N很大时就是SCAN。
  1. F-SCAN
  1. N-Step-SCAN的简化:
    • 请求队列只分为两个子队列
    • 当前一个队列,按SCAN算法执行;
    • 扫描期间新生成的组成一个队列,等待被扫描。

 

  1. 假设一个活动头磁盘有200道,编号从0-199。当前磁头正在155道上服务,并且在此之前完成的是173道的访盘请求。

       现有如下访盘请求序列(磁盘号):75,168,81,138,87,143,187,129,198,44。试给出采用下列算法后磁头移动的顺序和移动总量(总磁道数)。

1.最短寻道时间优先(SSTF)磁盘调度算法。

2.扫描法(SCAN)磁盘调度算法(假设沿磁头移动方向不再有访问请求时, 磁头就沿相反方向移动。 44到0磁道的移动忽略不计)

答:1.SSTF磁头移动顺序:

155,143,138,129,168,187,198,87,81,75,44

三段(155~129,129~198,198~44)

移动总量=155-129+198-129+198-44=249

2.SCAN:

155,143,138,129,87,81,75,44,168,187,198

两段(155~44,44~198)

移动总量=155-44+198-44=265

 

 

  1. (8分)若干个等待访问磁盘者依次要访问的柱面为20,44,40,4,80,12,76,假设每移动一个柱面需要3毫秒时间,移动臂当前位于40号柱面,请按下列算法分别计算为完成上述各次访问总共花费的寻找时间。

(1)先来先服务算法

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

 

Fcfs: 40-20+44-20+44-4+80-4+80-12+76-12=292

Sstf: 40,44,20,12,4,76,80

44-10+44-4+80-4=150

练习

 

  1. 虚拟设备是指:

通过虚拟技术将一台独占设备改造成若干台逻辑设备,供若干个用户进程同时使用。

  1. 按信息交换单位分类,可将设备分为:

块设备和字符设备。

  1. 通道是:

       一种负责I/O的处理机。       

  1. 字节多路通道主要用作:

     连接大量的低速I/O设备。

  1. 从资源分配的角度看,操作系统将外部设备分为:

独占型设备、共享型设备、虚拟设备。

  1. 根据信息交换方式的不同,可以将通道分为:

字节多路通道、数据选择通道、数据多路通道。

  1. 设备独占性是指:

应用程序独立于具体使用的物理设备。

  1. 缓冲技术中的缓冲池在:

主存中。

  1. 进行设备分配时所需要的数据表格主要有:

设备控制表、设备控制器控制表、通道控制表和系统设备表。

  1. 如果有多个中断同时发生,系统将根据中断优先级响应优先级最高的中断请求。若要调整中断事件的响应次序,可以利用:

中断屏蔽。

  1. 在操作系统中,一种用空间换取时间的资源转换技术是:

         Spooling。 

  1. 大多数低速设备都属于:

独享设备。

  1. 为了实现CPU与外设的并行工作,系统引入了:

中断和通道硬件机制。

  1. 在操作系统中,用户在使用I/O设备时,通常采用:

逻辑设备名。

  1. Spooling系统是由:

磁盘中的输入井和输出井、内存中的输入缓冲区和输出缓冲区以及输入进程和输出进程组成。

  1. 引起中断发生的事件称为:

中断源。

  1. 设备与内存之间的传输方式有:

程序直接控制方式、中断控制方式、通道控制方式和DMA控制方式,其中通道方式占用CPU时间最短。

  1. 设备分配中的安全性是指:

设备分配应保证不会引起进程死锁。

  1. Spooling技术是指:

在共享设备上模拟独占设备。由预输入程序将作业执行中需访问的数据预先读入到输入井中,缓输出程序则负责将输出井中的信息在输出设备上输出。

  1. 发生中断时,刚执行完的那条指令所在的单元号称为:

断点,断点的逻辑后继指令的单元号称为:恢复点。

 

 

  1. 如何将独占型输入设备改造成可共享使用的虚拟设备?
  2. 为什么要设置内存I/O缓冲区?通常有哪几类缓冲区?
  3. 什么是设备驱动程序?其功能是什么?
  4. 在设备管理中,何为设备独立性?如何实现设备独立性?
  5. 试给出常用的I/O调度算法。
  6. 为什么要引入Spooling系统?Spooling系统可带来哪些好处?
  7. DMA控制方式与通道控制方式有什么不同?
  8. 设备分配时为什么要考虑安全性和设备的无关性?

 

访问磁盘过程

  1. 对磁盘的访问总是由缺页引起的:
    • CPU给出地址,需要访问某存储单元;
    • 并行进行TLB查找和cache查找;
    • TLB查找后申明没有找到;
    • 停止并行查找,并通知操作系统处理;
    • 操作系统检查页表,发现该页不在内存中,需要从硬盘调入。应该如何进行呢?
  2. 操作系统从主存中选择一页准备换出,为调入的页安排存放空间;
  3. 若被换出的页是“脏”页,需要将其写回磁盘存储;
  4. 操作系统申请I/O总线;
  5. 获得批准后,发送写命令给I/O 设备(磁盘)。 紧跟着传送需要写回的页的全部数据。
  6. I/O控制器发现发给自己的写命令 ,加入到握手协议,并接受数据。
  7. 根据数据要写入的地址,读/写头移动到正确的柱面,同时,将数据接收到缓冲区。
  8. 寻道结束后,等待相应的扇区旋转到磁头下面,将数据写入扇区中。 
  9. 在写入数据间隙,计算校验码并写入扇区中。
  1. 下一步,操作系统继续申请总线(如果还保持总线控制权,则不必申请)。
  2. 得到授权后,向磁盘发出读命令。 
  3. 然后,磁盘识别地址,并转换为相应的地址段。
  4. 寻道,将读/写头移动到指定位置。
  5. 从指定扇区中读去数据,并进行校验。
  6. 磁盘申请I/O总线。
  7. 得到授权后,将数据通过总线送到内存。

 

猜你喜欢

转载自blog.csdn.net/qq_37868325/article/details/84557788