猿问

系统调用的包装函数是否也称为系统调用?

该函数的文档中open()说明以下内容:

open()系统调用将打开由路径名指定的文件。

我认为这open()是系统调用的包装函数,而不是系统调用本身。

还是系统调用的包装函数也称为系统调用?


LEATH
浏览 419回答 2
2回答

哔哔one

简短答案-是的。长答案-这取决于。系统调用是一种编程方式,计算机程序从该程序中向其执行操作系统的内核请求服务。这可能包括与硬件相关的服务(例如,访问硬盘驱动器),创建和执行新进程以及与诸如进程调度之类的集成内核服务进行通信。系统调用提供了进程与操作系统之间的基本接口。系统调用未定义为特定功能。相反,它们是请求服务或换句话说就是OS API。语言标准提供的标准功能几乎总是对用户隐藏它们。并且该标准是在不同操作系统的编译器中实现的。

12345678_0001

另一个答案是正确的,但我也想补充一点,对我来说,解释为什么将open视为系统调用的最简单方法是,因为不能保证在所有OS上syscall都是相同的。例如,如果我们想象一个打开了syscall 1的操作系统,那么另一个操作系统可能会使用syscall 1进行写操作(就像linux x64一样),因此,为了兼容起见,open()添加了这样的功能,其中OS将open()作为调用提供到适当的syscall值,并且程序员不必担心在不同操作系统之间调用正确的syscall号码
随时随地看视频慕课网APP
我要回答