块设备输入时, 输入到缓冲区的时间为T, OS将数据从缓冲区传到用户区的时间为M, CPU处理这块数据的时间为C; 显然T和C是可以并行的。
为了加快I/O速度提高设备利用率,又引入了双缓冲机制(缓冲对换 Buffer Swapping); 如果C“<”T, 块设备可连续输入
1.设备驱动程序的功能
(1) 将接受到的抽象(逻辑)要求转化为具体(物理)要求。
(2) 检查用户I/O请求的合法性, 读出和检查I/O设备的状态, 传递有关参数, 设置设备的工作方式。
(3) 发出I/O命令,若设备空闲则启动的I/O设备, 否则将请求进程挂到设备等待队列上。
(4) 及时响应由控制器或通道发来的中断请求, 并根据中断类型调用相应的中断处理程序进行处理。
(5) 对于设置通道的计算机系统, 驱动程序还应能够根据用户的I/O请求, 自动地构造通道程序。
2.设备处理方式
(1) 为每类设备设置一个I/O进程。
(2) 整个系统设置一个I/O进程。
(3) 只为各类设备设置相应的设备处理程序供调用。
用户程序:调用send将I/O请求发送给I/O进程;调用block将自己阻塞,直到I/O任务完成后被唤醒
系统:利用wakeup唤醒I/O进程,完成用户所要求的I/O处理
I/O中断的进入
当I/O中断发生时,内核中的中断处理程序发一条消息给I/O进程,由I/O进程负责判断并处理中断
I/O进程
是系统进程,一般赋予最高优先级。一旦被唤醒,它可以很快抢占处理机投入运行
I/O进程开始运行后,首先关闭中断,然后用receive去接收消息。两种情形:
(1) 没有消息,则开中断,将自己阻塞;
(2) 有消息,则判断消息(I/O请求或I/O中断);
a. I/O请求
准备通道程序,发出启动I/O指令,继续判断有无 消息
b. I/O中断,进一步判断正常或异常结束
正常:唤醒要求进行I/O操作的进程
异常:转入相应的错误处理程序
设备驱动程序的特点
(1) 驱动程序主要是在请求I/O的进程与设备控制器之间的一个通信程序。
(2) 驱动程序与I/O设备的特性密切相关。
(3) 驱动程序与I/O控制方式相关。
(4) 有些驱动程序固化在ROM上。
在设备控制器的控制下, 设备完成I/O操作后, 设备控制器便向CPU发出一个中断请求; CPU响应后, 转向中断处理程序,中断处理含以下几个步骤:
(1) 唤醒被阻塞的驱动(程序)进程
(2) 保护被中断进程的CPU环境
(3) 分析中断原因转入相应的设备处理程序
(4) 进行中断处理
(5) 恢复被中断进程的现场
容量大, 断电后仍可保存信息, 存取速度较快, 成本较低,可实现直接(随机)存取, 存取磁盘上任一物理块的时间不依赖于该物理块所处的位置。
盘设备由两部分组成: 驱动部分+存储介质(磁盘)
磁盘以恒定转速旋转, 磁臂沿径向驱动磁头移动到所要求的磁道上, 并等待所要求的扇区开始位置旋转到磁头下, 开始读写数据, 在磁头和缓冲区间传输数据
说明:图中的一圈圈灰色同心圆为一条条磁道,从圆心向外画直线,可以将磁道划分为若干个弧段,每个磁道上一个弧段被称之为一个扇区(图践绿色部分)。扇区是磁盘的最小组成单元,通常是512字节。
信息记录在磁道上, 多个盘片, 正反两面都用来记录信息, 每面一个磁头, 所有盘面中处于同一磁道号上的所有磁道组成一个柱面
当多个进程都需要访问磁盘时, 访盘请求在等待, 应采用一定的策略, 对这些请求的服务顺序调整安排,旨在降低平均磁盘服务时间, 达到公平、高效。
公平:一个I/O请求在有限时间内满足。
高效:减少设备机械运动所带来的时间浪费。
磁盘调度考虑的问题:
一次访盘时间 = 寻道时间+旋转延迟时间+存取时间
(1) 减少寻道时间(活动头磁盘)
(2) 减少延迟时间(固定头磁盘)
- 先来先服务FCFS(First-Come First Served)
按访问请求到达的先后次序服务
优点:简单, 公平;
缺点:效率低, 相临两次请求可能会造成最内到最外的柱面寻道, 使磁头反复移动, 增加了平均寻道时间
- 最短寻道时间优先SSTF(Shortest Seek Time First)
优先选择距当前磁头最近的访问请求进行服务,主要考虑寻道优先
优点:磁盘的平均寻道时间最小
缺点:进程”饥饿”现象, 有时会造成与当前磁道距离远的访问请求长期等待得不到服务(不公平)
- 扫描算法SCAN**电梯**调度算法
当设备无访问请求时, 磁头不动;当有访问请求时, 磁头按一个方向移动, 在移动过程中对遇到的访问请求进行服务, 然后, 判断该方向上是否还有访问请求,如果有则继续扫描; 否则改变移动方向,并为经过的访问请求服务, 如此反复。
- 循环扫描(CSCAN)算法
磁头单向移动(如向外), 移动到最外磁道后立即返回最里面要访问的磁道, 构成循环扫描