这里和操作系统一块讲了,提前预览第三季
闲聊
先画2个程序,每个程序里面有4条指令
然后p1执行一半被打断了,到了p2,p2执行完可能会到p1的第二条指令,也可能会到p1的第三条指令,这个等会会说
中断的分类
这些是啥意思呢
举个例子,在执行第二条指令的时候发现,无法执行下去,要用到的数据不在内存,要调到内存,这就是外部
还有例子就是,第二条指令除数位零,也就是说指令本身有问题就是内部中断
这种就是外中断
这种就是内中断
然后小知识点画一画
看看
异常的分类
故障
这就是我之前说的回到发生故障的指令继续执行或者除数为0这样的不能回到原断点执行的两种情况,注意是回到当前指令
断点就是PC的内容,比如之前要返回第二条指令还是第三条指令,都得通过断点完成
然后缺页就是内存里找不到东西,得到外存里调用,这就是缺页
自陷
注意返回到自陷指令的下一条
这里说一下系统调用指令
这里要调用操作系统,操作系统多牛逼啊,所以要使用到内核态
然后就是通过系统调用能解决很多内部细节问题,能让操作系统帮你干好
终止
终止和后面的外部中断是硬件中断
中断的分类
字面意思,不必深究
中断和异常的响应过程
先记一下,后面讲解
你去执行其他程序的时候,肯定要保存你之前执行的数据(程序状态)以及准备回来时要返回的地点(保存断点),不能再被别人打扰了,不然你保存的数据就没了,所以要(关中断)
然后是识别异常和中断并转到相应的处理程序,下面解释
这3个名词大家记一下
然后简单解释一下
先看程序P1,这里有个中断类型号2,它会指向中断向量表,中断向量表里面是中断向量,中断向量是内存的首地址然后会按着内存往下执行,然后回到P1原程序
题目
1
故障有可能就直接就停掉了,然后终止就是直接停,然后陷进是下一条指令,所以d选项不对,不一定是回到发生异常的指令继续执行
d
2
a是内中断
a
3
a之前说过了是系统调用是下一条指令,是自陷
b之前说过是当前指令
b
DMA后面提,他是外中断,返回下一条
打印机缺纸,也是外中断,返回下一条
4
缺页是内中断的一种
a
IO方式
先简单说一下他们的流程
程序查询:
CPU:好了没
程序:没有
CPU:好了没
程序:没有
CPU:好了没
程序:没有
CPU:好了没
程序:没有
CPU:好了没
程序:没有
程序中断:
程序:我好了,CPU,调用(过来)一下
CPU:可以
可以看见程序查询里CPU要花很多时间去查询,而中断可以让CPU干更多事情
程序查询
分为2个,第一个独占查询可谓是神人操作
程序中断
就是CPU一直在忙自己的,只有程序执行好了会被中断一下而已
简单看一下这个图
理解一下这个图,下面是之前讲的接口的小知识
下面是CPU在执行程序,上面是把数据放入端口
然后就是中断请求和响应,响应就是之前的三个步骤,就是之前讲的关中断等等等,然后就能找到中断服务程序的起始地址
然后下面一小段是CPU通过中断取走数据的时间,上面是数据被取走后外设继续往里面放数据的时间
然后中断返回就是CPU回到原来的程序
然后对照文字也是可以理解的
题目
第一问
byd这出题老头,答案里还有个开始位1位,这怎么知道,加上题目的9位
7+1+1+1 = 10位
一次传0.5ms,1s就是2000字符
第二问
CPU不就是中断响应+中断服务程序这一段嘛,所以
CPI是4,一条指令要4个时钟周期
中断服务程序是20个指令,加上前面的中断响应是10个时钟周期,读一个字符也就90个时钟周期
这里要读1000次,也就是9w个时钟周期
这里只要到启动那里,外设就开始准备第二个字符了,因为准备第二个字符和下面的中断返回是同时进行的
所以只有三部分要算,工作的时间(送入IO端口的时间),中断响应的时间,和到启动的时间
这里就是 0.5ms + 10个时钟周期 + 15个到启动的时间
然后这里0.5ms要换成时钟周期
CPU主频是50M,所以一个时钟周期是 1/50 * 10^6 每秒
然后换算成毫秒就是1个时钟周期是 1/50 * 10^3 个毫秒
然后对应的0.5ms就是 25000个时钟周期
加上后面的几个中断响应的时间,和到启动的时间 10+15 * 4
最终答案是25070
DMA下一章讲