不同类型的系统调用


进程与操作系统之间的接口由系统调用提供。一般来说,系统调用以汇编语言指令的形式提供。它们也包含在汇编级程序员使用的手册中。

当用户模式下的进程需要访问资源时,通常会进行系统调用。然后它请求内核通过系统调用提供资源。

系统调用的类型

主要有五种类型的系统调用。这些将在下面详细解释:

System Calls

以下是系统调用的类型:

进程控制

这些系统调用处理进程,例如进程创建、进程终止等。

文件管理

这些系统调用负责文件操作,例如创建文件、读取文件、写入文件等。

设备管理

这些系统调用负责设备操作,例如从设备缓冲区读取、写入设备缓冲区等。

信息维护

这些系统调用处理信息及其在操作系统和用户程序之间的传输。

通信

这些系统调用对于进程间通信非常有用。它们还处理创建和删除通信连接。

以下是Windows和Unix中上述所有类型系统调用的示例:

系统调用的类型WindowsLinux
进程控制CreateProcess() ExitProcess() WaitForSingleObject()fork() exit() wait()
文件管理CreateFile() ReadFile() WriteFile() CloseHandle()open() read() write() close()
设备管理SetConsoleMode() ReadConsole() WriteConsole()ioctl() read() write()
信息维护GetCurrentProcessID() SetTimer() Sleep()getpid() alarm() sleep()
通信CreatePipe() CreateFileMapping() MapViewOfFile()pipe() shmget() mmap()

如上所示,存在许多不同的系统调用。其中一些系统调用的详细信息如下:

wait()

在某些系统中,进程可能需要等待另一个进程完成其执行。当父进程创建子进程并且父进程的执行挂起直到子进程执行时,就会发生这种情况。父进程的挂起发生在 wait() 系统调用中。当子进程完成执行时,控制权将返回给父进程。

exec()

此系统调用在正在运行的进程的上下文中运行可执行文件。它替换了之前的可执行文件。这被称为覆盖。原始进程标识符保持不变,因为没有创建新进程,但进程的数据、堆、堆栈等被新进程替换。

fork()

进程使用 fork() 系统调用来创建自身的副本进程。这是操作系统中进程创建的主要方法之一。当父进程创建子进程并且父进程的执行挂起直到子进程执行时。当子进程完成执行时,控制权将返回给父进程。

exit()

程序使用 exit() 系统调用来终止其执行。在多线程环境中,这意味着线程执行已完成。exit() 系统调用之后,操作系统会回收进程使用的资源。

kill()

操作系统使用 kill() 系统调用向进程发送终止信号,促使进程退出。但是,kill 系统调用并不一定意味着杀死进程,它可以具有多种含义。

更新于:2023年9月2日

72K+ 浏览量

启动你的职业生涯

通过完成课程获得认证

开始学习
广告