DJ5-3/4 中断处理程序和设备驱动程序

news2024/11/19 13:27:13

目录

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

5.3.1  中断简介

5.3.2  中断处理程序

5.4  设备驱动程序

5.4.1  设备驱动程序概述

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

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


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

5.3.1  中断简介

1、中断和陷入 -- CPU 外部事件和内部事件导致

“由于中断是由外部设备引起的,故又称为外中断”。中断和陷入的主要区别是信号的来源,即中断是来自 CPU 外部,陷入是来自 CPU 内部。

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

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

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

① 屏蔽中断 ② 嵌套中断


何谓中断、中断源、中断处理程序?

一个进程占有处理器运行时,由于自身或外界的原因(出现了某事件)使运行被打断。让操作系统处理所出现的事件,处理完中断事件之后,再让被打断的进程继续运行,这个过程称为“中断”

把引起中断的事件称为“中断源”

对出现的事件进行处理的程序称为“中断处理程序”

对多中断的处理方式

 

5.3.2  中断处理程序

流程:设备启动 => I/O 完成 => 发送中断 => CPU 调用中断处理过程

中断处理过程:

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

驱动程序一旦启动一个 I/O 操作后,便把自己阻塞起来,直到中断到来时再被唤醒。

5.4  设备驱动程序

设备驱动程序是 I/O 系统的高层(上层软件)与设备控制器之间的通信程序。由于设备驱动程序与精简密切相关,因此需要为每一类设备配置一种驱动程序。

5.4.1  设备驱动程序概述

1、设备驱动程序功能

① 接收由 I/O 进程发来的命令和参数,并将命令中的抽象要求转换为具体要求。

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

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

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

中断请求的 I/O 进程发出的:CPU -- 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 操作后,便把自己阻塞起来,直到中断到来时再被唤醒。

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

Q:CPU 向设备控制器发完命令后做什么?

方案1: 原地踏步等待!

由于没有中断机构,因此 CPU 需要自己不断地测试 I/O 设备的状态。

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

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

in AL, 0x??

while(AL != ready) {
    in AL, 0x??
} 

// 读数据...

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

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

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

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

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

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

1、DMA 控制器的组成

一组寄存器 + 控制逻辑

① 数据寄存器 DR:用于暂存设备到内存或从内存到设备的数据。

② 内存地址寄存器 MAR:存放把数据从设备传送到内存的起始目标地址或内存源地址。

③ 数据计数器 DC:存放本次 CPU 要读或写的字(节)数。

④ 命令/状态寄存器 CR:接收从 CPU 发来的 I/O 命令或有关控制和状态信息。

2、DMA 工作过程

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

DMA 方式将以字为单位的干预减少到以数据块为单位的干预,但当需要一次去读取多个数据块时,CPU 仍需要分别发出多条 I/O 指令及进行多次中断处理才能完成。

1、I/O 通道控制方式的引入

  • 一个通道控制多台设备。
  • 将以一个数据块为单位的干预减少到以一组数据块为单位的干预。
  • CPU 仅在 I/O 操作开始和结束时花费少量时间处理与 I/O 有关的工作。

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

2、通道程序

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

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

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

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

 


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/492181.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于C++的通讯管理系统

1、系统需求 通讯录是一个可以记录亲人、好友信息的工具。本教程主要利用C来实现-个通讯录管理系统 系统中需要实现的功能如下: ●添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人 ●显示联系人:显示通讯录中所有联系…

手把手教你搭建ROS阿克曼转向小车之(增量式PID代码实现)

在上一篇文章中我们已经成功的把编码器的反馈值给计算出来,这篇文章将会讲解怎么使用反馈回来的速度值进行PID计算,从而闭环控制电机的速度。 PID算法介绍 1.开环控制系统 开环控制系统(open-loop control system)是指被控对象的输出(被控制量)对控制器…

【软件开发】从单机到分布式

从单机到分布式 1.单台服务器应用 问题:由于流量越来越大出现服务器性能问题。 2.应用服务器和数据库服务器分离 对架构增加了一台服务器,应用和数据库分别部署到不同的服务器上,对于开发和测试没有任何影响,只需要应用服务器新…

画了个 MSP430F149的最小系统板 开源出来了

使用MSP430F149单片机设计的一个最小系统板,包含晶振电路、复位电路、CH340串口和BSL下载电路、按键和LED电路等,使用了Type-C接口作为供电和串口通信,另外引出了JTAG接口,所有IO口都引出了。 板载了3个按键和LED,可以…

项目范围说明书如何编写?

范围说明书是一份定义了项目范围的所有要素以及假设、项目要求和验收标准的文件。项目范围说明书将作为主要工具,供利益相关者和团队成员参考,并作为准确衡量项目成功的准则。 项目范围说明书是范围管理计划的一部分,包含了管理项目范围的所…

百度智能云联合发布《雄安新区2022年大数据研究报告》

近日,百度智能云、百度研究院商业智能实验室联合发布《未来之城 雄姿初显——雄安新区2022年大数据研究报告》(以下简称《报告》),运用人工智能和大数据分析技术,全面呈现过去一年雄安新区在承接疏解、生态治理、城市建…

Golang当中的定时器

定时器 前言定时器的基本使用 前言 在平时写代码的时候,我们经常会遇到在将来某个时间点或者间隔一段时间重复执行函数。这个时候我们就可以考虑使用定时器。本片文章主要介绍一下golang当中的几个常用的定时器。time.Timer,time.Ticker,time.After以及time.AfterF…

文鼎创智能物联云原生容器化平台实践

作者:sekfung,深圳市文鼎创数据科技有限公司研发工程师,负责公司物联网终端平台的开发,稳定性建设,容器化上云工作,擅长使用 GO、Java 开发分布式系统,持续关注分布式,云原生等前沿技…

《安富莱嵌入式周报》第311期:300V可调节全隔离USB PD电源,开源交流负载分析仪,CANFD Trace,6位半多斜率精密ADC设计,开源数学库

周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 视频版: https://www.bilibili.com/video/BV1Hh4y1H7dR 《安富莱嵌入式周报》第311期:300V可调…

【机器学习】决策树算法解读

【机器学习】决策树算法解读 文章目录 【机器学习】决策树算法解读1. 介绍1.1 优缺点1.2 结构1.3 学习过程1.4 决策树与条件概率分布 2. 决策树学习过程2.1 训练策略2.2 特征选择2.2.1 信息增益和条件熵 2.3 决策树的生成2.3.1 ID32.3.2 C4.52.3.3 CART2.3.4 小结 2.4 决策树的…

Nacos配置中心、配置热更新、及配置共享的记录

Nacos除了提供了注册中心的功能,同样也提供了配置中心的功能,用于管理一些叫常改动的配置 当微服务部署的实例越来越多,达到数十、数百时,逐个修改微服务配置就会让人抓狂,而且很容易出错。我们需要一种统一配置管理方案,可以集中…

计算时间复杂度详解

1,前置知识 我们在计算时间复杂度之前的前置知识是等差数列的通项公式和求和公式以及等比数 列的通项公式和求和公式 等差数列: 通项公式:ana1(n-1)d(d是公差) 求和公式:Snn(a1an)/2 等比数列&#xf…

【Python入门知识】NumPy数组拆分,超详细讲解

前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 今天我们来学习python中NumPy数组的拆分 拆分 NumPy 数组 拆分是连接的反向操作。 连接(Joining)是将多个数组合并为一个,拆分(Spliting)将一个数组拆分为多个。…

Mysql 学习(七)独立表结构存储 二

段的结构 上一节说过表空间分为各个段,每个段里面又是以区为单位,每个区则有64个页。区根据剩余存储空间分为:Free,FREE_FRAG,FULL_FRAG 三种类型,为了方便管理区,给每个区创建XDES Entry结构&…

【校招VIP】用户反驳:你说大厂校招不会问框架实战,现在就有问的了,打脸了吧?一看是专业技能给自己挖的坑

最近有个用户过来质疑,不是说大厂不考框架的使用吗? 但网上的这两份面经里,却问到关于SpringBoot的问题。 接着发来了相对应的简历,一看,直接真相大白: 他在专业技能这栏写了:我熟练掌握Sprin…

flink内存参数配置学习

直接上官网 配置 JobManager 内存 | Apache Flink配置 JobManager 内存 # JobManager 是 Flink 集群的控制单元。 它由三种不同的组件组成:ResourceManager、Dispatcher 和每个正在运行作业的 JobMaster。 本篇文档将介绍 JobManager 内存在整体上以及细粒度…

自动驾驶中地图匹配定位技术总结

引言 汽车定位是让自动驾驶汽车知道自身确切位置的技术,在自动驾驶系统中担负着相当重要的职责。汽车定位涉及多种传感器类型和相关技术,主要可分为卫星定位、惯性导航定位、地图匹配定位以及多传感器融合定位几大类。其中地图匹配定位技术利用道路物理…

CSS绝对定位、相对定位

目录 静态定位 - static 相对定位 - relative 绝对定位 - absolute 固定定位 - fixed z-index属性: 在CSS中定位有以下4种: 静态定位 - static相对定位 - relative绝对定位 - absolute 固定定位 - fixed 静态定位 - static 静态定位是css中的默认定…

网络机顶盒哪个牌子好?资深数码粉分享网络电视机顶盒排名

智能电视配置跟不上经常死机卡顿,但显示正常的情况下不想花钱换电视机怎么办?一台网络机顶盒就可以解决你的烦恼,安装上网络机顶盒以后就可以让旧电视新生,那么你知道网络机顶盒哪个牌子好吗?如果不懂这行,…

【自然语言处理 | Transformer】Transformer:Attention is All You Need论文讲解

Transformer由论文《Attention is All You Need》提出: 论文地址为: https://arxiv.org/pdf/1706.03762.pdf文章目录 一、Transformer 整体结构二、Transformer 的输入2.1 单词 Embedding2.2 位置 Embedding 三、Self-Attention(自注意力机制…