标签:有关 查询 连接 信任 其他 原因 带来 支持 处理机
交互过程主要与操作系统的interface设计有关,面对外设,通过中断和IO进行处理;面对应用程序,通过系统调用,异常提供相应功能。
系统调用:应用程序主动向操作系统发出服务请求。需要操作系统提供服务支持;
异常:非法指令或者其他坏的处理状况;
中断:来自不同的硬件设备的计时器和网络的中断
注:中断源于外设(基于定义,本笔记中均指这种)。但实际使用上,除了CPU被动处理来源于外设的中断信号,CPU执行程序时,程序中包含专门的中断指令,即中断也可能是由程序产生的(基于使用)。
中断:当某个外设连接计算机或某个程序马上执行时,操作系统可能正在进行其他操作,没办法立刻进行响应。所以提供中断机制,当外设或程序与系统有交互的时候,处理机立即中止现行程序的运行,自动转入相应的处理程序(中断服务例程),待处理完后,再返回原来的程序运行。因此中断不是为了断开,而是为了连上处理;
异常:当程序(意外)出错时,将错误交给操作系统,操作系统执行异常处理例程;
系统调用:通过系统调用为用户提供相应接口,同时这些接口不会影响系统安全
中断:异步,即CPU不知道外设是什么时候发出的中断;
异常:同步,即产生异常,处理异常;
系统调用:异步或同步,应用程序发出系统调用请求,如果程序一直等待内核反馈处理结果,就是同步;如果程序不等待结果去接着执行其他事,等内核返回结果后再回来获取结果,就是异步
当某个外设事件产生一个中断或内部事件产生一个异常,这时要知道是由哪个服务例程去处理这个中断或异常。它是通过中断向量表查询的。
中断向量表:entry结构,一侧是中断号,异常号,不同事件编号不同,这些编号对应不同地址,这些地址就是处理中断或异常的服务例程的起始地址。
在CPU初始化时设置中断使能标志;(在CPU未准备好之前,无法处理硬件设备的交互信息,所以需要设置CPU使能标志,表示CPU是否准备好)
依据内部或外部事件设置中断标志;(外部设备或内部事件向CPU发出中断信号,CPU对事件标识,表示产生了异常或中断,由这个信号得到异常号或中断号)
依据中断向量调用相应中断服务例程 或异常处理例程;
保存当前处理状态;
执行中断服务例程处理;
清除中断标记;(服务例程)
恢复之前保存的处理状态;
(由于保护-恢复机制,因此用户感受不到中断的产生)
保存现场;
异常处理;
1、处理程序是杀死产生了异常的程序,退出执行
2、异常产生的原因操作系统可以弥补(如资源不够),处理程序是让操作系统进行弥补工作,然后恢复现场,这时就已经没有异常了
恢复现场;
应用程序需要操作系统提供服务,这些服务,不能由程序直接执行,必须要操作系统执行,这时就需要操作系统提供相应接口,这些接口就是系统调用接口。
用户态和内核态:
它表示程序执行过程中,CPU所处于的一种状态。用户态特权级低,CPU不能直接访问某些特殊的机器指令和IO;内核态表示操作系统运行过程中,CPU处于的状态,此时CPU能访问任何一条指令。一个应用程序执行,会经过从用户态到内核态的反复转换。
当应用程序发起函数调用的时候,其实是在一个栈空间完成了函数参数的传递和参数返回;但系统调用执行过程中,应用程序和操作系统内核实际拥有各自的堆栈。即当应用发出系统调用之后,切换到内核态执行,实际上是切换到操作系统的堆栈,同时也切换了特权级。这种切换需要一定开销,所以系统调用开销比函数调用大。
操作系统通过中断、异常和系统调用,和应用程序以及外设进行交互,这种交互过程实际跨越了操作系统和外设,操作系统和应用程序的边界。这种跨越是有代价的,但这些代价保证了设备信息安全。跨越操作系统边界的开销:
1、建立中断、异常、系统调用号与对应服务例程映射关系的初始化开销
2、建立内核堆栈
3、操作系统是不信任应用程序的,因此会对参数进行校验
4、内核态切换到用户态实际是内存的拷贝,会有开销。内核态映射到用户态的地址空间,更新页面映射权限
5、内核态独立地址空间
6、每次退出内核态,都会对当前状态进行保存,再次进入时又需要恢复
标签:有关 查询 连接 信任 其他 原因 带来 支持 处理机
原文地址:https://www.cnblogs.com/privateNotesOfAidanChen/p/12513293.html