文章目录
一. 内容总览
二. 中断和异常
1. 中断机制的诞生
2. 中断的概念和作用
3. 中断的分类
(1). 分类方式一:
1. 内中断(也叫异常、陷入)
2. 外中断(中断)
(2). 分类方式二:
4. 外中断的处理过程
5. 中断机制的基本原理
三. 系统调用
1. 什么是系统调用,有何作用
2. 系统调用和库函数的区别
3. 为什么系统调用是必须的?
4. 系统调用背后的过程
四. 中断、异常和系统调用比较
一. 内容总览
二. 中断和异常
1. 中断机制的诞生
2. 中断的概念和作用
用户态、核心态之间的切换是怎么实现的?
用户态→核心态是通过中断实现的。并且中断是唯一途径
核心态→用户态的切换是通过执行一个特权指令,将程序状态字(PSW)的标志位设置为用户态
3. 中断的分类
(1). 分类方式一:
1. 内中断(也叫异常、陷入)
信号的来源:CPU内部 与当前执行的指令有关
分为:
自愿中断——指令中断
1. 如系统调用时使用的访管指令(又叫陷入指令、trap指令)该指令不是特权指令
2. 执行陷入指令,意味着应用程序主动的将CPU控制权还给操作系统内核。
3. 系统调用就是通过陷入指令完成的
1.
2.
3.
强迫中断
原因:
硬件故障
如:缺页
1.
软件中断
如:整数除0
1.
2. 外中断(中断)
信号的来源:CPU外部,与当前执行的指令无关
分为:
外设请求
如:I/O操作完成发出的中断信号
1.
时钟中断
人工干预
如:用户强行终止一个进程
1.
(2). 分类方式二:
4. 外中断的处理过程
5. 中断机制的基本原理
三. 系统调用
Linux系统调用?
1. 什么是系统调用,有何作用
系统调用是操作系统提供给应用程序(程序员/编程人员)使用的接口,可以理解为一种可供应用程序调用的特殊函数,应用程序可以通过系统调用来请求获得操作系统内核的服务
凡是与资源有关的操作,会直接影响到其他进程的操作,一定需要操作系统的介入,即需要通过系统调用来实现
2. 系统调用和库函数的区别
3. 为什么系统调用是必须的?
4. 系统调用背后的过程
以read 调用为例
四. 中断、异常和系统调用比较
系统调用(system call)
应用程序主动向操作系统发出的服务请求
1.
异常(exception)
非法指令或者其他原因导致当前指令执行失败 (如:内存出错)后的处理请求
1.
中断(hardware interrupt)
登录后复制
来自硬件设备的处理请求
比较:
源头
中断:外设引起
异常:应用程序意想不到的行为
系统调用:应用程序请求操作系统提供服务
响应方式
中断:异步
异常:同步
系统调用:异步或同步
处理机制
中断:持续,对用户应用程序是透明的
异常:杀死或者重新执行意想不到的应用程序指令
系统调用:等待和持续