操作系统笔记--系统调用、异常和中断的基本概念

1--系统调用、异常和中断的基本概念

1-1--相关定义

系统调用:应用程序主动向操作系统发出服务请求;

异常:非法指令或其他坏的处理状态(内存出错);

中断:来自不同硬件设备的计时器和网络的中断;

        实例解释:

        将硬件设备产生的中断信号称为中断,而数组溢出,缺页等错误称之为异常,对系统接口的调用称为系统调用;

        系统调用、异常和中断三种方式都会暂停当前用户的进程,转由内核运行;之后再从内核回到用户进程,从暂停的代码继续进行;

        对于系统调用、异常和中断三种情况,操作系统采取统一的处理方式:暂停用户进程、提升cpu的特权级(从用户态提升为内核态)、从寄存器取出处理函数的地址,将pc寄存器指向该地址执行;

        处理函数的作用是:保存用户上下文,将进程页表切换至内核页表,然后执行内核中断代码;

        用户态和内核态的本质:

        进程的地址空间被分为用户空间和内核空间,分别存放用户和内核的数据内容;CPU 有不同的特权级,处于用户态时无法访问内核态的数据内容,从而起到对内核态的保护作用;遇到特殊情况时(如中断、异常和系统调用),就会切换至内核态,从而能够访问内核态的数据内容;

        用户态和内核态的本质是:处于不同的状态下能够访问的数据内容不同;

        用户态的特权级别很低,一般可以访问一些特殊的机器指令和I/O;而内核态的特权级很高,可以访问一些特权指令等;

1-2--来源、处理时间和响应

① 来源:

        系统调用:来源于应用程序;

        异常:来源于应用程序意想不到的行为;

        中断:来源于外设;

② 处理时间:

        系统调用:异步或同步时间点处理;

        中断:异步时间点处理;

        异常:同步时间点处理;

③ 响应:

        系统调用:等待和持续响应;

        中断:持续响应,对用户应用程序是透明的;

        异常:杀死或重新执行意想不到的应用程序指令;

1-3--系统调用与函数调用的区别

函数调用在同一个栈空间完成参数的调用、传递、返回;

在系统调用的过程中,内核操作系统和应用程序拥有各自的堆栈;

发生系统调用时,需要切换至内核态同时切换堆栈,这个过程会造成额外的时间花销;

猜你喜欢

转载自blog.csdn.net/weixin_43863869/article/details/129888001