中断是指CPU接受到的来自硬件或软件的信号,提示CPU发生了某件事情并中止现行程序的执行。中断信号分为内中断信号和外中断信号两种。内中断信号又叫异常,与当前执行指令有关,来自CPU内部;外中断信号,与当前执行指令无关,来自CPU外部。
因为中断是一种由CPU接收的信号,那我们就不得不了解一下CPU。CPU有两种工作状态,一种是用户态(又叫目态),另一种是核心态(又叫管态)。单核CPU一次只能执行一个程序,运行在CPU核心态的程序我们把它成为内核程序,运行在CPU用户态的程序我们把它称为应用程序。
OK,了解完上述基础概念后,我们就能来认识一下系统调用了。维基百科上说,系统调用是指运行在用户态的程序向操作系统内核(操作系统的内核程序运行在核心态)请求需要更高权限运行的服务,也就是说系统调用是一种由用户态程序发出的请求。用户态的程序通过进程调用的方式,向操作系统提出服务请求,由操作系统代为完成。
这种请求是通过内中断信号告诉操作系统的,因此系统调用本质上就是一种内中断信号:用户程序传递系统调用参数,在用户态下执行访管指令(访管指令是唯一一个只能在用户态下进行,不能在核心态执行的指令),执行访管指令后,进程发出一个内中断信号。CPU收到内中断信号后,立刻从用户态切换为核心态(注意ÿ
中断、进程调度、进程切换、系统调用之间的关系
于 2023-04-01 18:24:03 首次发布