开心生活没一天 2023-08-13 23:05 采纳率: 69.2%
浏览 8
已结题

请问程序A执行io操作从执行自陷指令开始,到io操作结束发出中断请求并且处理中断请求的流程具体是什么?

我很不明白驱动程序怎么执行的,做了哪些事,我对io操作的流程理解是,如要从键盘读一个字,程序A执行自陷指令后中断,调用驱动程序然后输出控制字给io端口,启动设备,然后阻塞程序A切换其他程序让cpu执行其他程序,这里中断服务程序结束,若键盘数据准备好,准备好后键盘发出中断请求,cpu再中断去处理这个中断请求,这个中断处理程序中唤醒程序A进入就绪队列,但是下面的中断处理图让我感觉很疑惑,跟我知道的中断处理完全不一样,不知道驱动程序是怎么工作的,他是一个进程还是只是一段代码。我上面的流程可能有些问题,比如好像想读入一个字,要先调用open函数启动设备才能读,我也不太清楚,希望有人能说一说

img

img


下面是我明白的中断处理流程图,上面的流程图连中断服务程序入口都没找就去唤醒了。

img

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-08-14 08:15
    关注

    【以下回答由 GPT 生成】

    驱动程序是操作系统提供的一段代码,它负责将硬件设备和操作系统之间进行交互。在ARM架构中,驱动程序通常以内核模块的形式加载到内核中。

    下面是在ARM架构中,程序A执行自陷指令后到IO操作结束并发出中断请求并处理中断请求的流程:

    1. 程序A执行自陷指令,触发异常,导致CPU从用户态切换到内核态。

    2. 控制权交给操作系统内核,内核检测到自陷指令,并根据指令的类型分发给相应的处理程序。在这种情况下,它会传递给与IO操作相关的异常处理程序。

    3. 异常处理程序检查自陷原因,确定是一个IO请求。

    4. 异常处理程序调用驱动程序来处理IO请求。驱动程序可以通过访问设备的寄存器来发送控制字以启动设备,并将请求放入设备队列中。

    5. 驱动程序使程序A进入阻塞状态,将其置于等待队列中,并继续处理其他请求。

    6. 此时CPU可以执行其他程序,直到中断请求发生。

    7. 当IO设备完成请求时,设备会发出中断请求。

    8. 中断控制器接收到中断请求并将其传递给CPU。此时,CPU会从当前正在执行的程序切换到中断服务程序。

    9. 中断服务程序执行相关的操作,例如从设备读取数据并将其保存到适当的缓冲区中。

    10. 中断服务程序被终止,控制权返回给被中断的程序。此时,被中断的程序(程序A)被唤醒并被放置在就绪队列中。

    11. 调度器从就绪队列中选择一个程序来执行,通常会选择具有最高优先级的程序(如被中断的程序A)。

    12. 程序A从阻塞状态恢复执行,可以继续执行其后续的指令。

    注:这个流程是一个简化的描述,实际操作系统和驱动程序的实现可能会有细微的差异。具体的处理流程和代码实现会根据操作系统和驱动程序的不同而有所不同。

    希望这个回答能解决您的疑惑。如果您有任何其他问题,请随时提问。



    【相关推荐】


    • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/764851
    • 除此之外, 这篇博客: 如何学习单片机——单片机学习的感悟——以简单的外设蜂鸣器为例介绍单片机学习方法中的    压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。多谐振荡器由晶体管或集成电路构成,当接通电源后(1.5~15V直流工作电压),多谐振荡器起振,输出1.5~2.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。无源蜂鸣器利用电磁感应现象,为音圈接入交变电流后形成的电磁铁与永磁铁相吸或相斥而推动振膜发声,接入直流电只能持续推动振膜而无法产生声音,只能在接通或断开时产生声音。无源蜂鸣器的工作原理与扬声器相同。在使用方波信号源驱动的应反向并联一个二极管,防止突然断电时产生的高压反向电动势击穿其他元件以及使用寿命缩短。 部分也许能够解决你的问题。

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月14日
  • 已采纳回答 11月6日
  • 创建了问题 8月13日

悬赏问题

  • ¥15 三极管电路求解,已知电阻电压和三级关放大倍数
  • ¥15 ADS时域 连续相位观察方法
  • ¥15 Opencv配置出错
  • ¥15 模电中二极管,三极管和电容的应用
  • ¥15 关于模型导入UNITY的.FBX: Check external application preferences.警告。
  • ¥15 气象网格数据与卫星轨道数据如何匹配
  • ¥100 java ee ssm项目 悬赏,感兴趣直接联系我
  • ¥15 微软账户问题不小心注销了好像
  • ¥15 x264库中预测模式字IPM、运动向量差MVD、量化后的DCT系数的位置
  • ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused