DJ5-3 中断处理程序、设备驱动程序

目录

5.3  中断机构和中断处理程序

5.3.1  中断简介

5.3.2  中断处理程序

5.4  设备驱动程序

5.4.1  设备驱动程序概述

5.4.2  设备驱动程序的处理过程

5.4.3  对 I/O 设备的控制方式

1、程序 I/O 方式

2、中断方式

3、DMA 方式

4、通道方式


5.3  中断机构和中断处理程序

5.3.1  中断简介

1、中断和陷入

主要区别是信号的来源:

  • 中断来自 CPU 外部
  • 陷入来自 CPU 内部

由于中断是由外部设备引起的,故又称为外中断

2、中断、中断源、中断处理程序

中断:在计算机运行过程中,如果发生某种随机事态,CPU 将暂停执行现行程序,转向去执行中断处理程序,为该随机事态服务,并在服务完毕后自动恢复原程序的执行。

  • 中断源:引起中断的事件。
  • 中断处理程序:对出现的事件进行处理的程序。

3、中断向量表和中断优先级

  • 中断向量表用于存储各中断处理程序的入口地址

4、对多中断源的处理方式

  • 屏蔽中断
  • 嵌套中断

5.3.2  中断处理程序

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

I/O 进程是调用了设备驱动程序去启动设备,设备启动之后数据准备完毕之前,该 I/O 进程和设备驱动程序的进程均处于阻塞状态。

I/O 操作流程:

  1. 启动 I/O 设备
  2. I/O 设备完成数据传送
  3. 设备控制器发送中断
  4. CPU 调用中断处理过程

中断处理过程:

  1. 唤醒被阻塞的设备驱动程序进程
  2. 保护被中断进程的 CPU 环境
  3. 转入相应设备的中断处理程序
  4. (特性) 中断处理
  5. 恢复被中断进程的现场

5.4  设备驱动程序

设备驱动程序:是 I/O 系统的上层软件 (设备无关的 I/O 软件) 与设备控制器之间的通信程序。

  • 接收上层软件发来的抽象 I/O 要求,如 read 或 write
  • 将其转换为具体要求后,发送给设备控制器
  • 也将由设备控制器发来的信号传送给上层软件

由于设备驱动程序与硬件密切相关,因此需要为每一类设备配置一种驱动程序。例如,打印机和显示器需要不同的驱动程序。

5.4.1  设备驱动程序概述

1、设备驱动程序功能

① 接收由设备无关的 I/O 软件发来的命令和参数,并将命令中的抽象要求转换为具体要求。

② 检查用户 I/O 请求的合法性,了解 I/O 设备的状态,传递有关参数,设置设备的工作方式。

③ 发出 I/O 命令并检查设备状态。

设备状态记录在设备控制器中

  • 若 I/O 设备空闲,则立即启动 I/O 设备
  • 若 I/O 设备忙碌,则将请求表挂在设备请求队列上等待

④ 及时响应由设备控制器或 I/O 通道发来的中断请求并处理。

中断请求

2、设备驱动程序的特点

① 驱动程序:是指在请求 I/O 的进程与设备控制器之间的一个通信和转换程序。

② 驱动程序与设备控制器、I/O 设备的硬件特性紧密相关,因而对不同类型的设备应配置不同的驱动程序。

③ 驱动程序与 I/O 设备所采用的 I/O 控制方式紧密相关,常采用中断方式和 DMA 方式。

④ 由于驱动程序与硬件紧密相关,因而其中的一部分必须用汇编语言编写。

⑤ 驱动程序允许可重入,即一个驱动程序可以被多个 I/O 进程使用。

3、设备处理方式

根据在设备处理时是否设置进程,以及设置什么样的进程而把设备处理方式分成以下三类:

① 为每一类设备设置一个 I/O 进程,专门用于执行这类设备的 I/O 操作。

② 在整个系统中设置一个 I/O 进程,专门用于执行系统中所有各类设备的 I/O 操作。

③ 不设置专门的设备处理进程,而只为各类设备设置相应的设备处理程序,供用户进程或系统进程调用。

5.4.2  设备驱动程序的处理过程

设备控制器的状态寄存器

只有驱动程序才同时了解上层软件的抽象要求和设备控制器中的寄存器情况

  1. 将抽象要求转换为具体要求:设置设备控制器中的寄存器。
  2. 检查 I/O 请求的合法性:若请求的设备不支持本次的 I/O 请求,则认为是非法操作。
  3. 读出和检查设备的状态:检查设备是否空闲或是否就绪(状态寄存器)。
  4. 传送必要的参数:如数据量、起始地址等。
  5. 工作方式的设置:对于有多种工作方式的设备进行设置。
  6. 启动 I/O 设备。

设备驱动程序一旦启动一个 I/O 操作后,便把自己阻塞起来,直到中断到来时再被唤醒。具体的 I/O 操作是在设备控制器的控制下进行的,因此,在设备忙于传送数据时,CPU 又可以去干其它的事情,实现了 CPU 与 I/O 设备的并行操作。

5.4.3  对 I/O 设备的控制方式

1、程序 I/O 方式

方案一: 原地踏步等待!由于没有中断机构,CPU 需要自己不断地测试 I/O 设备的状态。

工作原理:在 CPU 向设备控制器发出一条 I/O 指令,启动输入设备输入数据时,要同时把状态寄存器中的忙/闲标志 busy 置为 1,然后便不断地循环测试 busy(称为轮询)

  1. CPU 启动设备时,将 busy 置为 1,然后轮询 busy;
  2. 当 busy=1 时,表示设备尚未输入完一个字,CPU 继续轮询;
  3. 当 busy=0 时,表示设备已将一个字送入控制器的数据寄存器中;
  4. CPU 将数据寄存器中的数据取出,并送入内存指定单元中。

这样便完成了一个字的 I/O,接着再去启动设备读下一个字,并置 busy=1 。

CPU 全程运行的是设备驱动程序;这里的状态寄存器和数据寄存器都是设备控制器的

缺点:CPU 需花代价不断查询 I/O 状态,CPU 资源浪费极大。例如:从终端输入一个字符的时间约为 100ms,而将该字符送入终端缓冲区的时间小于 0.1ms,那么 CPU 有 99.9ms 是在忙等。

2、中断方式

方案二:设备就绪了告诉 CPU 一声!

工作原理:CPU 向设备控制器发出一条 I/O 指令,然后立即返回继续执行原来的任务。设备控制器按照命令的要求去控制指定的 I/O 设备。一旦数据进入数据寄存器,控制器便通过控制线向 CPU 发送一中断信号,(设备驱动程序被唤醒) ,由 CPU 检查输入进程中是否出错,若无错,便向控制器发送取走数据的信号,然后再通过控制器及数据线,将数据写入内存指定单元中。

优点:可使 CPU 与 I/O 设备并行工作,从而提高整个系统的资源利用率及吞吐量。

缺点:中断 I/O 方式比程序 I/O 方式更高效,但仍以字/字节为传输单位。每完成一个字/字节的传输,设备均要向 CPU 请求一次中断。

每一个字都是由 CPU 负责写入到内存。可以设计有一定处理能力的外围设备,将这种简单的任务交给它。

3、DMA 方式

方案三:简单任务自己做,完成了告诉 CPU 一声!

DMA 方式的细节由 DMA 设计者考虑,对于操作系统而言,这仍然只是中断处理,只不过是把之前的若干个中断封装成了一个罢了。

(1)DMA 方式的特点

  • 数据传输的基本单位是数据块
  • 所传送的数据是从设备直接送入内存的,或者相反
  • 仅在传送一个数据块的开始和结束时,才需 CPU 干预

(2)DMA 控制器的组成

一组寄存器 + 控制逻辑

  • 数据寄存器 DR:用于暂存设备到内存或从内存到设备的数据。
  • 地址寄存器 MAR:存放把数据从设备传送到内存的起始目标地址或内存源地址。
  • 数据计数器 DC:存放本次 CPU 要读或写的字(节)数。
  • 命令/状态寄存器 CR:接收从 CPU 发来的 I/O 命令或有关控制和状态信息。

(3)DMA 工作过程

(4)DMA 的优缺点

  • 优点:将中断方式以字为单位的干预减少到以数据块为单位的干预
  • 缺点:CPU 每发出一条 I/O 指令,只能读写一个连续的数据块

当需要一次去读取多个数据块时,CPU 仍需要分别发出多条 I/O 指令及进行多次中断处理才能完成。

4、通道方式

方案四:多个任务自己做,完成了告诉 CPU 一声!

(1)通道方式

  • 一个通道控制多台设备
  • 仅在传送多个个数据块的开始和结束时,才需 CPU 干预
  • 将以一个数据块为单位的干预减少到以一组数据块为单位的干预

通道方式实现了 CPU、通道 和 I/O 设备三者的并行操作,从而更有效地提高整个系统的资源利用率。例如,CPU 只需向 I/O 通道发送一条 I/O 指令,通道接到该指令后,通过执行通道程序便可完成 CPU 指定的 I/O 任务。

(2)通道程序

通道是通过执行通道程序并与设备控制器共同实现对 I/O 设备的控制的。

通道程序是由一系列通道指令构成的,通道指令中包含:

  • 操作码:规定指令所执行的操作,如读、写、控制等。
  • 内存地址:标明字符送入内存或从内存取出的内存首址。
  • 计数:本条指令所要读/写的字节数。
  • 通道程序结束位 P:表示通道程序是否结束,P=1 表示结束。
  • 记录结束标志 R

R=0 表示本指令与下一指令处理同一个记录;R=1 表示这是处理某记录的最后一条指令。


  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 中断处理函数不是驱动程序驱动程序是一段软件代码,它允许操作系统或应用程序与硬件交互,控制硬件设备的操作和管理。中断处理函数是一种特殊的函数,在处理器接收到中断信号时自动调用。它的主要作用是响应硬件中断并执行相应的操作,例如读取数据、写入数据或者进行其他处理驱动程序可能包含一个或多个中断处理函数,以便在需要时响应硬件中断。 ### 回答2: 中断处理函数不是驱动程序,而是驱动程序的一部分。在计算机系统中,驱动程序是用来管理和控制硬件设备的软件模块。它负责与硬件设备的通信,提供统一的接口供操作系统和应用程序使用。 中断处理函数是驱动程序的一部分,用来处理硬件设备触发的中断事件。当硬件设备发生中断时,处理器会中断当前的任务,转而执行预先定义好的中断处理函数。这个中断处理函数负责处理硬件设备中断,可能会读取设备状态、执行一些特定的操作,然后返回原来的任务继续执行。 中断处理函数的作用是及时响应硬件设备中断事件,并且采取相应的措施来处理该事件。因为中断事件通常需要立即处理,所以中断处理函数需要被设计为快速、高效的响应。 总结来说,中断处理函数是驱动程序中负责处理硬件设备中断事件的部分,起到及时响应和处理中断事件的作用。但中断处理函数本身不足以完成所有的驱动程序功能,还需要其他的模块和功能来实现驱动程序的完整功能。 ### 回答3: 中断处理函数不是驱动程序,而是操作系统内核的一部分。当计算机中发生硬件中断或软件中断时,操作系统会根据中断的类型和优先级调用相应的中断处理函数来进行处理中断处理函数的任务是响应中断请求,处理中断事件,并且进行必要的操作和处理,例如保存现场、处理中断请求、更新相关数据等。中断处理函数通常由操作系统内核或驱动程序去实现,用来处理硬件设备或软件任务发生的中断事件。 驱动程序是操作系统中的一种软件,用于与硬件设备进行交互和控制。驱动程序的主要任务是为特定硬件设备提供必要的功能和接口,让操作系统能够与硬件设备进行通信和操作。驱动程序负责管理和控制硬件设备的资源,提供设备的初始化、读取和写入数据、处理中断请求等功能。驱动程序通常会包含一些中断处理函数,用来处理硬件设备发生的中断事件。 因此,可以说中断处理函数是驱动程序的一部分,用来处理硬件中断事件。中断处理函数是操作系统内核和驱动程序的重要组成部分,它们一起协作完成对计算机中断事件的处理和响应。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值