设备管理

键盘敲入字母时,期间发生了什么?

前提:

  • 主要涉及到设备控制器(包含:数据寄存器、命令寄存器、状态寄存器)的概念;
  • CPU与设备并不是直接交互,而是通过设备控制器来实现的。

过程:

  • 用户从键盘敲入字母时,就会将数据缓存在键盘控制器的寄存器中,键盘控制器通过总线发送中断给CPU;
  • CPU收到中断请求,保存进程的上下文,调用键盘控制器的中断处理函数读取寄存器中的数据存放到【读缓存区队列】;
  • 显示器控制器会定时的从【读缓存区队列】放到【写缓存区队列】,最后将【写缓存区队列】的数据写入到显示器控制器的寄存器中;
  • 最后恢复中断的进程上下文。
大体过程键盘控制器寄存器--CPU中断--保存进程上下文--处理中断请求--恢复进程上下文


中断

  • 中断是一件异步的事件处理机制;
  • 中断处理程序,要尽可能快的执行完,这样可以减少对正常进程运行调度的影响;
临时关闭中断:由于中断处理程序执行时间过长,可能其他的设备控制器发送给CPU的中断请求未被处理进而丢失中断请求

解决:

引入软中断、将中断过程分为两个阶段:上半部+下半部
  • 上半部(硬中断):直接处理硬件请求,负责耗时短的操作,执行迅速;例如把网卡的数据读取到内存中,而不关心数据的处理;
  • 下半部(软中断):以内核线程的方式执行(每一个CPU对应一个软中断内核线程ksoftirpd),处理上半部未完成的工作,通常是比较耗时的工作,延迟执行。




hshuo的面试之路 文章被收录于专栏

作者目标是找到一份Java后端方向的工作 此专栏用来记录从Bilibili、书本、其他优质博客上面学习的内容 用于巩固、总结内容 主要包含Docker、Dubbo、Java基础、JUC、Maven、MySQL、Redis、SpringBoot、SpringCloud、数据结构、杂文、算法、计算机网络、操作系统、设计模式等相关内容

全部评论

相关推荐

嵌入式的小白:有道理哈,这种就看能不能捞
点赞 评论 收藏
分享
昨天 14:51
已编辑
井冈山大学 算法工程师
龙虾x:算法比你强的没有你美,比你美的…..算了已经没有比你美的了
工作两年想退休了
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务