操作系统 fork()和exec()的区别

操作系统 fork()和exec()的区别

计算机系统有两个模式:内核模式和用户模式。在内核模式下,程序可以直接访问内存和硬件资源。在用户模式下,程序不能直接访问硬件和内存资源。因此,内核模式比用户模式拥有更高的特权。UNIX系统使用各种系统调用,其中包括fork和exec。在本文中,你将了解到fork()和exec()之间的区别。但在讨论它们之前,你必须了解fork和exec是什么。

什么是fork()

fork()系统调用有助于创建进程。当一个进程使用fork()系统调用时,它创建了一个自身的副本。父进程是已经存在的进程,而子进程是新创建的进程。尽管子进程与父进程相同,但在创建子进程时,父进程的状态(如打开的文件、地址空间和变量)会被复制到子进程中。换句话说,子进程和父进程位于独立的物理地址空间中。因此,在父进程中所做的修改不会出现在子进程中。

什么是exec()

exec()系统调用用于创建进程。当使用exec()函数时,当前运行的进程将被终止并替换为新创建的进程。换句话说,在调用exec()之后,只有新的进程才会继续存在,父进程将被关闭。这个系统调用还将用子进程替换父进程的代码段、地址空间和数据段。

fork()和exec()的主要区别

操作系统 fork()和exec()的区别

在这里,您将学习fork()和exec()之间的主要区别。fork()和exec()之间的各种差异如下:

  1. 在UNIX操作系统中,fork是一个允许进程复制自身的命令。然而,在UNIX操作系统中,exec是通过替换现有进程来创建一个新进程的命令。
  2. fork() 使得子进程等于父进程。另一方面, exec() 创建一个子进程并替换成父进程。
  3. 在调用 fork() 之后,会有一个子进程和一个父进程。相反,在调用 exec() 之后,只有一个子进程。
  4. fork() 中,父进程和子进程在不同的地址空间中。另一方面,在 exec() 中,子进程替换了父进程的地址空间。

fork()和exec()之间的头对头比较

在这里,您将学习fork()和exec()之间的头对头比较。fork()和exec()之间的各种关键对比如下:

特性 Fork() Exec()
定义 它是一个允许进程复制自身的命令。 它是一个通过替换现有进程来创建新进程的命令。
地址空间 fork()中的父进程和子进程在不同的地址空间中。 exec()中,子进程的地址空间取代父进程的地址空间。
父进程 调用fork()函数后,会有一个子进程和一个父进程。 调用exec()后,只有一个子进程。
结果 fork()使子进程等于父进程。 exec()创建一个子进程并替换为父进程。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程