设备管理

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

前提:

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

过程:

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


中断

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

解决:

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




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

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

全部评论

相关推荐

一表renzha:你点进去没打招呼他也会有提示的,之前我点进美的,还没打招呼,他马上给我发了不太合适哦
点赞 评论 收藏
分享
lllllkin:感觉可以精简到一页简历,有些排版感觉不是必须的。 时间线越早的,你自己越熟悉的放前面。描述可以更精简些,一些问题解决感觉可以不用写具体技术栈,卖个关子,等面试官问。
点赞 评论 收藏
分享
04-29 22:35
门头沟学院 Java
牛友说改了名字能收到offer:旧图新发查看图片
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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