Operating system 什么是系统调用接口?

Operating system 什么是系统调用接口?,operating-system,system-calls,Operating System,System Calls,我不熟悉操作系统这门学科。我在理解系统调用接口时遇到困难。如果你能帮忙,我将非常感激。 感谢系统调用接口是一组函数,用于从执行它们的操作系统上的内核请求服务。它在进程和操作系统之间提供了一个基本接口 例如: open(); 是一个系统调用,用于提供对文件系统中文件的访问等。我试图简单地解释进行系统调用的整个过程 内核提供了一组接口,用户空间中运行的进程可以通过这些接口与系统交互。这些接口允许应用程序控制对硬件的访问,这是一种创建新进程并与现有进程通信的机制,以及请求其他操作系统资源的能力 这些

我不熟悉操作系统这门学科。我在理解系统调用接口时遇到困难。如果你能帮忙,我将非常感激。
感谢

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

例如:

open();

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

我试图简单地解释进行系统调用的整个过程

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

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

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

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

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

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

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

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

同样的过程也可以用不同的方式表示