欢迎来到天天文库
浏览记录
ID:46587240
大小:1.57 MB
页数:110页
时间:2019-11-25
《第13章 中断与系统调用 操作系统》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第13章章中断与系统调用中断与系统调用实验目的∑加深对中断机制和系统调用原理的理解∑深入深入了解系统调用的执行流程了解系统调用的执行流程∑学会增加系统调用及向内核添加内核函数2主要内容∑背景知识¾中断机制¾系统调用∑实验内容¾记录系统调用的使用次数3中断概念∑内核的一个主要功能就是处理硬件¾处理器速度一般比外设快很多¾内核必须处理其他任务,只有当外设真正完成了准备好了时CPU才转过来处理外设¾也可以用轮询的方式来处理,但显然效率不高¾中断机制就是满足上述条件的一种解决办法∑中断¾直接处理由硬件发过来的中断信号V
2、CPU停止正在执行的指令,转而执行中断服务例程V中断服务例程一般在CPU的中断方式下运行查看相应设备的状态寄存器变化,并做相应操作V当中断处理完毕以后,CPU将恢复到以前的状态,继续执行中断处理前正在执行的指令4中断与异常∑中断(外中断)¾异步的,来自处理器之外的中断信号,在程序执行的任何时候可能出现¾会改变处理器执行指令的顺序¾通常与CPU芯片内部/外部硬件电路产生的电信号相对应∑异常(内中断)¾同步的,在(特殊的或出错的)指令执行时由CPU控制单元产生¾内核为每个异常提供了一个专门的异常处理程序¾异常处理程
3、序的执行一般依赖于执行程序的当前现场,不能被屏蔽掉,一旦出现应立即响应并进行处理∑区别¾中断允许嵌套发生,但异常多数情况为一重¾异常处理过程中可能产生中断,但反之则不会发生∑“中断信号”通称这两种类型的中断5中断分类∑可屏蔽中断(Maskableinterrupt)¾I/O设备发出的所有中断请求(IRQ)都可以产生可屏蔽中断¾可屏蔽中断状态V屏蔽的(masked)V非屏蔽的(unmasked)∑非屏蔽中断(Nonmaskableinterrupt)¾只有几个特定的危急事件才引起非屏蔽中断,如硬件故障或是掉电6有
4、选择屏蔽与全局屏蔽∑有选择屏蔽/激活IRQ线≠全局屏蔽/激活∑有选择屏蔽¾前者通过对中断控制器编程实现¾有屏蔽的中断不会丢失,一旦被激活,中断控制器又会将它们发送到CPU∑全局屏蔽¾通过特定的指令操作CPU中的状态字,Eflags中的IF标志V0=关中断V1=开中断¾关中断时,CPU不响应中断控制器发布的任何中断请求¾内核中使用cli和sti指令分别清除和设置该标志7异常分类∑故障(fault)¾程序运行中系统捕获出现的潜在可恢复错误,处理后可返回到当前指令再次执行¾如页面故障∑陷阱(trap)¾执行特定调试指
5、令触发的,被调试的进程遇到所设置的断点,会暂停等待∑编程异常(programmedexcption)(programmedexcption)¾用来实现系统调用,进程自愿进入内核态以请求系统服务∑终止(abort)¾终止是发现致命的不可恢复错误,通常不会返回原程序而转向内核特殊函数处理8中断信号的作用∑中断信号提供了一种特殊的方式,使得CPU转去运行正常程序之外的代码¾比如一个外设采集到一些数据,发出一个中断信号,CPU必须立刻响应这个信号,否则数据可能丢失∑当一个中断信号到达时,CPU必须停止它当前正在做的事,
6、并且切换到一个新的活动∑为了做到这这一点,在进程的内核态堆栈保存程序计数器的当前值(即eip和cs寄存器),并把与中断信号相关的一个地址放入进程序计数器9中断信号的处理原则∑核心目标:快!¾当内核正在做一些别的事情的时候,中断会随时到来。无辜的正在运行的代码被打断¾中断处理程序在run的时候可能禁止了同级中断¾中断处理程序对硬件操作,一般硬件对时间也是非常敏感的¾上半部分(topbottom)和下半部分(halfbottom)∑允许不同类型中断的嵌套发生,这样能使更多的I/O设备处于忙状态∑尽管内核在处理一个中
7、断时可以接受一个新的中断,但在内核代码中还在存在一些临界区,在临界区中,中断必须被禁止10中断处理流程∑中断的获取∑中断向量的构造∑跳转表的映射∑中断描述符表的构造∑中断处理程序的实现11中断上下文∑中断上下文不同于进程上下文¾中断或异常处理程序执行的代码不是一个进程¾它是一个内核控制路径,代表中断发生时正在运行的进程执行¾作为一个进程的内核控制路径,中断处理程序比一个进程要“轻”(中断上下文只包含了很有限的几个寄存器,建立和终止这个上下文所需要的时间很少)12中断上下文举例∑分析A,B,C,D在互相抢占上的关
8、系,假设¾2个interruptinterruptcontextinterruptcontext,记为A和B,2个process,记为C和D¾某个时刻C占用CPU运行,此时A中断发生,C被A抢占,A得以在CPU上执行∑进程上下文与中断上下文的关系¾由于Linux不为中断处理程序设置processcontext,A只能使用C的kernelstack作为自己的运行栈¾无论如何,Linux的
此文档下载收益归作者所有