_featherbrain 2023-07-12 12:14 采纳率: 0%
浏览 11

fork创建子进程,OS做了什么

fork 创建子进程,OS做了什么

fork之后多了一个子进程,但是是怎么做到的呢?

进程 = 内核数据结构 + 进程的代码和数据

  • 写回答

3条回答 默认 最新

  • 大师兄6668 新星创作者: python技术领域 2023-07-12 14:09
    关注

    以下回答部分来自GPT,可以看一下是否解决了你的困惑:
    在操作系统中,fork 是一个创建子进程的系统调用。当执行 fork 时,操作系统会做以下几个步骤:

    1. 复制父进程:操作系统会复制父进程的内存空间、代码和数据。这包括进程的代码段、数据段、堆和栈等。

    2. 设置进程标识符:操作系统为子进程分配一个唯一的进程标识符(PID),用于在操作系统中标识和管理该进程。

    3. 设置父子关系:子进程的父进程会被设置为调用 fork 的进程(即父进程)。这样可以建立起父子进程之间的关系。

    4. 返回值:对于父进程,fork 调用返回子进程的 PID;对于子进程,fork 调用返回 0。这样可以让父子进程在执行后续操作时有不同的逻辑分支。

    通过上述步骤,操作系统成功地创建了一个完全独立的子进程。子进程与父进程共享相同的代码和数据,但是它们有各自独立的内存空间和资源。

    接下来,父子进程可以并行地执行各自的代码。它们通过操作系统提供的进程调度机制在操作系统内核中进行切换,以便让每个进程都获得适量的执行时间。

    需要注意的是,fork 仅创建了一个子进程的初始副本。子进程之后可以通过调用 exec 系统调用来加载新的程序代码和数据,从而替换它自己的内存空间。这样,子进程就可以执行其他的程序了。

    评论

报告相同问题?

问题事件

  • 创建了问题 7月12日