Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit d40e73e

Browse files
中断及中断向量
1 parent c918830 commit d40e73e

File tree

1 file changed

+30
-2
lines changed

1 file changed

+30
-2
lines changed

‎readme.txt

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,12 @@
8282
2、指令译码:指令寄存器中的指令经过译码,决定该指令应进行何种操作(就是指令里的操作码)、操作数在哪里(操作数的地址)。
8383
3、执行指令,分两个阶段"取操作数"和"进行运算"。
8484
4、修改指令计数器,决定下一条指令的地址。
85-
-- 5000 * 0.2的运算过程:寄存器1中的5000和寄存器2中的0.2导入ALU,计算结果1000返回到寄存器3中
86-
-- 时钟:《为什么CPU需要时钟才能工作》https://www.zhihu.com/question/21981280/answer/126921197
85+
-- 时钟:
86+
-- 时钟就是一个固定频率的方波发生器
87+
-- 工作原理:时钟产生一个方波,低电平代表逻辑0,高电平时代表逻辑1。逻辑电路中专门有电路能侦测到时钟的跳变,也就是从0 到1或者从1到0的过程。当检测到这个跳变后,CPU就开始执行下一个指令。因此时钟越快,CPU运转越快。超频就是把时钟都加快,让CPU工作在一个更快的频率下。
88+
-- Q&A:
89+
-- 5000 * 0.2的运算过程是怎样的?寄存器1中的5000和寄存器2中的0.2导入ALU,计算结果1000返回到寄存器3中
90+
-- 《为什么CPU需要时钟才能工作》https://www.zhihu.com/question/21981280/answer/126921197
8791
·cpu指令集:运算的抽象集合
8892
-- 指令:
8993
-- 计算机通过指令指挥计算机工作。
@@ -184,6 +188,30 @@
184188
-- 地址的两次转换,的确是非常麻烦而且没有必要的,因为直接可以把线性地址抽像给进程。之所以这样冗余,Intel完全是为了兼容而已(Intel为了兼容,将远古时代的段式内存管理方式保留了下来,x86体系的处理器刚开始时只有20根地址线,寻址寄存器是16位。我们知道16位的寄存器可以访问64K的地址空间,如果程序要想访问大于64K的内存,就需要把内存分段,每段64K,用段地址+偏移量的方式来访问,这样使20根地址线全用上,最大的寻址空间就可以到1M字节,这在当时已经是非常大的内存空间了。)。
185189
-- 文档:
186190
《CPU是如何访问到内存的?--MMU最基本原理》:https://blog.csdn.net/jasonchen_gbd/article/details/79461771
191+
·中断:
192+
-- 外界发生中断时,中断信号经过中断控制器,最终达到CPU的中断引脚上,当那个管脚电平变低(或者变高)的时候,cpu就会被打断,并从特定地址开始执行。
193+
-- 中断的意义:中断是处理器对外开放的实时受控接口。一个没有中断的计算机体系是决定论的:得知某个时刻CPU和内存的全部数据状态,就可以推衍出未来的全部过程。这样的计算机无法交互,只是个加速器。添加中断后,计算机指定了会兼容哪些外部命令,并设定服务程序,这种服务可能打断当前任务。这使得CPU"正在执行的程序"与"随时可能发生的服务",二者形成了异步关系,外界输入的引入使得计算机程序不再是决定论。由人实时控制的中断输入,是无法预测的。再将中断响应规则化,推广开,非计算机科学人群就能控制计算机,发挥创造力。电竞鼠标微操,数码板绘,音频输入合成,影像后期数值调整,键盘点评天下大势,这些都不是定势流程,是需要人实时创造参与其中的事件,就由中断作为载体,与计算机结合了起来。
194+
-- 提高工作效率
195+
例如如果没有中断,将产生如下代码,要监听打印机是否就绪就花费大量资源
196+
while(!printer.ready()){
197+
sleep(10ms)
198+
}
199+
doPrint()
200+
-- 故障恢复(异常处理,紧急事件等)
201+
-- 简化编程模型(try/catch,计时器等)
202+
-- 中断请求:
203+
-- 硬件设备发给主板(打印机、键盘、鼠标等)
204+
-- 硬件中断:CPU异常(除以0),时钟信号等
205+
-- 软件中断:发出(异常、切换到内核态等)
206+
-- 中断向量表:
207+
-- (一般在内存中)一块区域,存储了中断类型和中断响应程序的对应关系。每一行叫做一个中断向量
208+
-- 向量表实例:
209+
中断类型 ISR地址 描述
210+
00 0x0000 除以0
211+
01 0x0004 调试单步
212+
09 0x0024 键盘
213+
18 0x0048 打印机
214+
100 0x0190 自定义
187215

188216

189217
*汇编语言:

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /