【发布时间】:2015-06-21 18:18:21
【问题描述】:
我对系统调用感到困惑。
问题是:是否有一个系统调用服务例程,它总是被调用,以便找到特定的系统调用,如写入、读取等?
系统调用是否也存储在函数指针向量中?像这张照片所示?
如果是这样,为什么有可能添加您自己的系统调用而没有可能添加您自己的中断处理程序?为什么中断向量是固定大小而系统调用向量不是?
引自 Silberschatz Operating Systems Concepts:
系统调用通常采用陷阱的形式到中断向量中的特定位置。尽管某些系统(例如 MIPS)具有特定的系统调用指令来调用系统调用,但此陷阱可以通过通用陷阱指令执行。
执行系统调用时,硬件通常将其视为软件中断。控制通过中断向量传递到操作系统中的服务例程,模式位设置为内核模式。 系统调用服务例程是操作系统的一部分。内核检查中断指令以确定发生了什么系统调用;参数指示用户程序请求的服务类型。请求所需的附加信息可以在寄存器、堆栈或内存中传递(使用指向寄存器中传递的内存位置的指针)。内核验证参数是否正确合法,执行请求,将控制权交还给系统调用之后的指令。
【问题讨论】:
标签: linux operating-system interrupt system-calls