首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是系统调用接口?

什么是系统调用接口?
EN

Stack Overflow用户
提问于 2020-02-09 21:00:37
回答 2查看 1.6K关注 0票数 0

我是操作系统的新手。我在理解系统调用接口时遇到了问题。如果你能帮忙,我将不胜感激。谢谢

EN

回答 2

Stack Overflow用户

发布于 2020-09-09 19:52:12

我已经尝试简单地解释了进行系统调用的整个过程。

内核为提供了一组接口,运行在用户空间的进程可以通过这些接口与系统交互。这些接口给应用程序提供了对硬件的受控访问,提供了一种创建新进程并与现有进程进行通信的机制,以及请求其他操作系统资源的能力。

这些API(应用程序编程接口)充当应用程序和内核之间的信使,应用程序发出各种请求,内核满足这些请求(或返回错误)。系统调用在硬件和用户空间进程之间提供了一个层。

但是系统调用和API不是一回事。API基本上是指定“如何获取特定服务”的函数定义。您通常不会直接进行系统调用,而是使用API。

每个系统调用都有一个对应的包装例程,它指定应用程序调用该系统调用时必须使用的。(包装器例程是函数定义,其唯一目的是发出系统调用)。然而,API不必对应于系统调用,API可以直接在用户模式中提供其服务,而无需进行任何系统调用,或者单个API函数可以进行几个不同的系统调用,因此不同的API函数可以调用相同的系统调用。

API定义了应用程序使用的一组编程接口。这些接口可以实现为系统调用,可以通过多个系统调用实现,也可以完全不使用系统调用来实现。相同的API可以存在于多个系统上,并为应用程序提供相同的接口,而API本身的实现在不同系统之间可以有很大差异。

从程序员的角度来看,b/w API和系统调用的区别是无关紧要的,对他们来说,它只是另一个函数调用,他/她所需要考虑的就是函数名、参数类型和返回值。从内核设计者的角度来看,这种区别显然是非常重要的。

此外,当用户模式进程调用系统调用时,CPU切换到内核模式,并开始执行称为系统调用处理程序的内核函数(恰好是汇编语言函数)。此系统调用处理程序具有与其他“异常处理程序”类似的结构。

此系统调用处理程序首先将寄存器的内容保存在内核模式堆栈中。然后,基于系统调用号(每个系统调用都有一个与之关联的号,用户模式进程必须将该号作为参数传递,以便可以识别所请求的调用),系统调用处理器调用相关的系统调用服务例程,它在Linux中恰好是一个C函数,它实际上继续实现用户进程所请求的功能。完成后,寄存器被加载回其先前的值,CPU切换回用户模式。

同样的流程也可以用不同的方式来表示。

票数 6
EN

Stack Overflow用户

发布于 2020-02-09 23:33:54

系统调用接口是一组用于从操作系统内核请求服务的函数,它们被执行时,on.It提供了进程和操作系统之间的基本接口。

例如:

代码语言:javascript
复制
open();

是一个系统调用,用于提供对文件系统中的文件等的访问。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60136893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档