操作系统13:中断处理程序和设备驱动程序

本文详细介绍了操作系统中I/O管理的关键概念,包括中断处理程序的作用和流程,设备驱动程序的功能和处理过程,以及不同I/O设备的控制方式,如轮询、中断、DMA和I/O通道。此外,还讨论了与设备无关的I/O软件,实现设备独立性,以及用户层的系统调用和库函数。最后,提到了假脱机技术如何允许多个用户共享I/O设备,提高了系统效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1、中断处理程序

(1)中断和陷入

(2)中断处理程序的处理过程

2、设驱动程序

(1)设备驱动程序的功能

(2)设备驱动程序的处理过程

(4)对 I/O 设备的控制方式

4.1 - 轮询的可编程 I/O 方式

4.2 - 中断的可编程 I/O 方式

4.3 - DMA 控制器

4.4 - I/O 通道

3、与设备无关的 I/O 软件

(1)物理设备名、逻辑设备名

(2)与设备无关软件的功能构成

(3)逻辑设备名到物理设备名映射的实现

4、用户层的 I/O 软件

(1)系统调用与库函数

1.1 - 什么是系统调用?

1.2 - 什么是库函数?

(2)假脱机(Spooling)系统

2.1 - 什么是假脱机技术?

2.2 - 假脱机系统的工作原理

2.3 - 假脱机系统的组成

2.4 - 使用守护进程(daemon)


1、中断处理程序

        中断在操作系统中有着特殊重要的地位,它是多道程序得以实现的基础。没有中断,就不可能实现多道程序,因为进程之间的切换是通过中断来完成的。另一方面中断也是设备管理的基础,为了提高处理机的用率和实现 CPU与 I/O 备并行执行,也必需有中断的支持。中断处理程序是 I/O 系统中最低的一层,它是整个 I/O 系统的基础。//中断的重要性

(1)中断和陷入

  • 中断:是指 CPU 对 I/O 设备发来的中断信号的一种响应。CPU 暂停正在执行的程序,保留 CPU 环境后,自动地转去执行该 I/O 设备的中断处理程序。执行完后,再回到断点,继续执行原来的程序。
  • 陷入(trap):由 CPU 内部事件所引起的中断,例如进程在运算中发生了上溢或下溢又如程序出错,如非法指令、地址越界,以及电源故障等。

        中断和陷入的主要区别是信号的来源,即是来自CPU 外部,还是CPU内部。

(2)中断处理程序的处理过程

        当一个进程请求 I/O 操作时,该进程将被挂起,直到 I/O 设备完成 I/O 操作后,设备控制器便向 CPU 发送一个中断请求,CPU 响应后便转向中断处理程序,中断处理程序执行相应的处理,处理完后解除相应进程的阻塞状态。

        中断处理程序的处理过程可分成以下几个步骤:

  1. 测定是否有未响应的中断信号。
  2. 保护被中断进程的CPU环境
  3. 转入相应的设备处理序。
  4. 中断处理。
  5. 恢复CPU的现场并退出中断。

//中断处理前需要保存被中断进程的CPU环境,跟上下文切换的思想一致

        中断的处理流程:

2、设驱动程序

        设备处理程序通常又称为设备驱动程序,它是 I/O系统的高层与设备控制器之间的通信程序,其主要任务是接收上层软件发来的抽象 I/O 要求,如 read 或 write 命令,再把它转换为具体要求后,发送给设备控制器,启动设备去执行;反之,它也将由设备控制器发来的信号传送给上层软件。//驱动程序的用途

        由于驱动程序与硬件密切相关,故通常应为每一类设备配置一种驱动程序。例如,打印机和显示器需要不同的驱动程序。//驱动程序由设备供应商提供,系统提供统一接口,设备供应商去实现,从而在系统层屏蔽复杂性

(1)设备驱动程序的功能

  1. 接收由与设备无关的软件发来的命令和参数,并将命中的抽象要求转换为与设备相关的低层操作序列。
  2. 检查用户 I/O 请求的合法性,了解 I/O 设备的工作状态,传递与 I/O 备操作有关的参数,设置设备的工作方式。
  3. 发出 I/O 命令,如果设备空闲,便立即启动 I/O 设备,完成指定的 I/O 操作;如果设备忙碌,则将请求者的请求块挂在设备队列上等待。
  4. 及时响应由设备控制器发来的中断请求,并根据其中断类型,调用相应的中断处理程序进行处理。

(2)设备驱动程序的处理过程

        设备驱动程序的主要任务是启动指定设备,完成上层指定的 I/O工作。但在启动之前应先完成必要的准备工作,如检测设备状态是否为“忙”等。在完成所有的准备工作后,才向设备控制器发送一条启动命令。

        以下是设备驱动程序的处理过程:

  1. 将抽象要求转换为具体要求。
  2. 对服务请求进行校验。检查该用户的 I/O 请求是不是该设备能够执行的。
  3. 检查设备的状态。检查 I/O 设备否处于接收就绪状态。如果是,启动其设备控制器,否则只能等待。
  4. 传送必要的参数。
  5. 启动 I/O 设备。

        在多道程序系统中,驱动程序一旦发出 I/O 命令,启动了一个 I/O 操作后,驱动程序便把控制返回给 I/O 系统,把自己阻塞起来,直到中断到来时再被唤醒。具体的 I/O 操作是在设备控制器的控制下进行的,因此,在设备忙于传送数据时,处理机又可以去干其它的事情,实现了处理机与 I/O 设备的并行操作//驱动程序 -> 阻塞和唤醒

(4)对 I/O 设备的控制方式

        对设备的控制,早期是使用轮询的可编程 I/O 方式,后来发展为使用中断的可编程 I/O 方式。随着 DMA 控制器的出现,从以字节为单位,改为以数据块为单位进行转输,大大地改善了块设备的 I/O 性能。I/O 通道的出现,又使对 I/O 操作的组织和数据的传送都能独立进行,而无需 CPU 的干预。

        在 I/O 控制方式的整个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

swadian2008

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值