计算机原理简略总结(二)++中断
在说虚拟地址物理地址之前我们先说下中断
上一章我们说了硬件可以通过控制总线给cpu传送一个中断信号,这个有非凡的意义。我们知道cpu的读写速度与硬件的读写速度不是一个数量级别的,比如我们让硬盘去读个文件,cpu怎么知道硬盘读完了呢?一种方式是不断的去查询硬件的状态寄存器,看看是否读完了,这种方式就是轮询唠,cpu傻傻得不断做重复的事情,这样cpu被毫无意义的占用了,其实想想解决方法非常简单,就是cpu先去做别的事情,硬件读完了,自己主动通知cpu一下,告诉他自己处理完毕了,这时候cpu可能在做别的事情,一旦接收到了硬件类似的消息,cpu会停止手头的工作去为硬件的请求作出响应。
这里需要考虑一下问题,一个是手头的工作现在停止了,待会怎么再继续做啊?很简答,我们只需要保存当前cpu的执行环境,说得很装逼,直白的说,就是只要保存当前cpu各个寄存器的值,等下再重新赋值回来就行了,执行环境基本就是寄存器的值。
另一个是既然中断信息来了,我们要为中断作出响应了,怎么响应?去哪里找这个中断程序呢?很简单,我们只要为每一种中断标号,成为中断号,再把中断号和程序对应,但还是去哪里找这个程序?这里就要规定一个地方了,开始人们把00000H到003FFH作为中断矢量表,中断矢量可以理解为一个程序的入口地址,索引当然就是中断号唠,其实到了后来人们不再硬性规定中断矢量表的位置了,而是把他的起始位置放在了一个寄存器(IDTR)命名为中断描述符表。
其实中断处理程序就是驱动程序的一种,我们称为中断处理驱动程序,之后我们会说到驱动。
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】Flutter适配HarmonyOS 5知识地图,实战解析+高频避坑指南
【推荐】开源 Linux 服务器运维管理面板 1Panel V2 版本正式发布
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个字符串替换引发的性能血案:正则回溯与救赎之路
· 为什么说方法的参数最好不要超过4个?
· C#.Net 筑基-优雅 LINQ 的查询艺术
· 一个自认为理想主义者的程序员,写了5年公众号、博客的初衷
· 大数据高并发核心场景实战,数据持久化之冷热分离
· 博客园众包平台:诚征3D影像景深延拓实时处理方案(预算8-15万)
· 发布一个小功能,通过 markdown 图片语法嵌入B站视频
· 《HelloGitHub》第 111 期
· 谷歌新AI工具杀疯了?免费,但有点坑!Gemini CLI 抢先实测
· Spring AI Alibaba 1.0 正式发布!核心特性速览+老项目升级指南