欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

软中断和系统调用

最编程 2024-01-11 18:25:29
...

系统调用(Syscall) 是一种软中断处理程序,用于让程序从用户态陷入内核态,以执行相应的操作。系统调用通过中断机制向内核提交请求,它的功能由内核函数实现,进入内核后不同系统调用找到各自对应的内核函数,这些内核函数就是系统调用的“服务例程”。当进程发出系统调用申请的时候,会产生一个软件中断。

实模式下的中断向量表对应保护模式下的IDT(中断描述符表),中断向量对应保护模式的指针。

syscall指令的官方解释:
(x64) SYSCALL Fast call to privilege level 0 system procedures.
(x32) SYSENTER Fast call to privilege level 0 system procedures.

SYSCALL is intended for use by user code running at privilege level 3 to access operating system or executiveprocedures running at privilege level 0.
简单来说,就是实现程序流从3层(用户层)到0层(内核层)的快速切换。
The SYSCALL and SYSRET instructions are designed for operating systems that use a flat memory model (segmen-tation is not used).
用在平坦内存模式下的。

这么看来,系统调用是软中断从保护模式的用户层来理解而产生的词语,而软中断更多是从cpu硬件操作系统内核(内核才是真正的操作系统)层面起的名字。对中断服务程序的调用指令:INT >> SYSENTER >> SYSCALL。

推荐阅读