CS,  Study,  Tech

对系统调用的理解

王道书上的描述大致是这样的:

操作系统提供的用户接口主要分为 命令接口程序接口 两大类。

而程序接口是由一系列的系统调用命令组成的,又称广义指令,简称系统调用。

用户通过在程序中使用这些系统调用命令请求OS为其提供服务,可以直接使用这组系统调用命令向系统提出各种服务要求。


曹先彬版《操作系统原理与设计》简要描述了操作系统提供三种主要的接口方式,其中系统命令方式和GUI属于作业级接口,而编程接口方式属于程序级接口。这里的编程接口指提供一系列的系统调用和高级语言库函数供用户程序和系统程序内部调用操作系统功能。


学堂在线清华向勇老师讲的操作系统,系统调用是跟中断,异常一起讲然后又相区别的。


威廉.斯托林斯所著《操作系统 精髓与设计原理(第8版)》中对OS接口描述如下:

  • 操作系统为程序员屏蔽了硬件细节,并为其提供了方便的编程接口以使用系统。作为中间载体,操作系统让程序员和应用程序能更方便地访问和使用系统提供的各种功能和服务。

  • 应用程序编程接口(API):API允许应用程序访问系统的硬件资源和服务,这些服务由用户级ISA和HLL库调用来提供。任何系统调用通常都是通过库的方式来执行的。

恍恍惚惚恍恍惚惚恍恍惚惚分割线


由上可知:

系统调用即程序接口的使用,因为OS不允许用户直接操作各种硬件资源,而这些操作都在OS内核中,因此用户程序和系统程序通过系统调用来请求内部OS功能(内核功能),间接使用各种资源。

OS通过系统调用向用户程序提供服务。库函数是高级语言中提供的与系统调用对应的函数(有些与系统调用无关),许多库函数使用系统调用实现其功能,但库函数运行在用户空间中,属于用户程序,是系统调用的上层。

系统调用是OS的一部分,是内核提供给用户的程序接口,运行于内核空间。一般来说,没有使用系统调用的库函数执行效率比系统调用高,因为减少了上下文的切换及用户态和核心态之间状态的转换。

发表评论

电子邮件地址不会被公开。 必填项已用*标注