喻承龙CHENGLONG YU全部文章 ↗
笔记

操作系统学习笔记_03

从零开始的操作系统学习记录『第三章|输入输出系统』

I/O 硬件原理

I/O 设备

I/O 设备可以分为:

❗ I/O 设备在速度上差异很大,见下图,这为我们管理 I/O 设备提出了挑战,在后文中会提到解决办法。

设备控制器

I/O设备组成中的电子部件被称为设备控制器,操作系统往往和设备的控制器打交道,大多数个人计算机采用总线模型进行 CPU 与控制器之间的交流。

​ 大型机则采用其他模型,此类模型带有I/O通道,一种专用于输入输出工作的计算机。

内存映射I/O

❓ CPU如何控制寄存器与设备数据缓冲区进行通信?

中断

大部分I/O接口提供一个输出用于驱动IRQ Interrupt ReQuest线

即插即用技术使得 BIOS 在启动时为设备自动分配 IRQ 以避免冲突

直接存储器存取 DMA

Direct Memory Access , DMA

它使得毋须占用CPU宝贵的时间去交换数据,利用 DMA 控制器调控多个设备的数据传送

I/O 软件原理

目标

设备驱动程序

用来控制特定设备的一组特定的代码被称作设备驱动程序,驱动程序传统上是系统内核的一部分

死锁

资源

使用一个资源的顺序

  1. 请求资源
  2. 使用资源
  3. 释放资源

死锁的原理

一个进程集合中的每个进程都在等待本集合中其他进程才能引发的事件,那么这组进程是死锁的

死锁发生的四个必要条件

死锁模型

处理死锁的四个策略

死锁的预防

避免死锁

通过仔细分配资源来避免死锁

单一资源的银行家算法

在进程申请资源的时候,判断本次申请是否安全,如果安全再分配,就像银行借贷款。

资源轨迹

上图中,阴影区域内就是资源发生冲突的区域

多种资源的银行家算法

算法详情:

  1. 查找右边矩阵中是否有一行,其未被满足的资源数均小于等于A。如果不存在这样的行,系统将死锁,因为任何进程都无法运行结束。
  2. 若找到这样一行,则可以假设它获得所需的资源并运行结束,将该进程标为结束,并将资源加到向量 A 上。
  3. 重复以上两步,直到所有的进程都标记为结束。若能达到这种状态,则初始状态是安全的;或者直到发生死锁。

📌事实上,银行家算法虽然很有意义,但缺乏实用价值,因为很少有进程能在运行前知道自己所需资源的最大值!