操作系统之系统调用

135 阅读2分钟

定义:

系统调用是操作系统提供给应用程序(程序员/编程人员)使用的接口,可以理解为一种可供应用程序调用的特殊函数。应用程序可以通过系统调用来请求获得操作系统内核的服务。

作用:

系统调用为应用程序与操作系统之间的交互提供了标准化的途径,使得应用程序能够使用系统资源而无需直接操作硬件。

与库函数的区别:

库函数是编程语言的标准库中提供的函数,部分库函数是对系统调用的封装,即库函数内部可能会调用系统调用以完成特定的任务。 并不是所有库函数都依赖于系统调用,有些库函数可能完全在用户态执行,不涉及内核的直接操作。

必要性:

凡是与共享资源有关的操作、会直接影响到其他进程的操作,就一定需要操作系统介入,需要通过系统调用来实现。

过程:

应用程序需要将请求的信息和参数传递给操作系统,这些参数通常包括操作的具体细节,比如要读取的文件名或要写入的数据。

应用程序通过执行陷入指令(也称为trap指令或访管指令)将CPU从用户态切换到内核态,这一指令使得控制权转交给操作系统内核,以便处理系统调用请求。

内核处理完请求后,会将结果返回给应用程序,此时控制权从内核态切换回用户态,应用程序可以继续执行,获取操作系统提供的服务或结果。

分类:

文件操作:包括创建、删除、读取、写入文件等操作。

进程控制:包括进程的创建、终止、调度等。

设备管理:包括对输入输出设备的控制和管理。

进程通信:包括进程间通信和网络通信等。

内存管理:完成内存的分配/回收等功能。