jarvisxx 2017-09-03 10:38 采纳率: 0%
浏览 370

linux 系统init初始化进程

Linux中所有进程都是从init进程而来,子进程会复制父进程的“代码段”“数据段”“堆栈段”,那么,那么意味着所有的进程都是相同的,可实际情况是Linux中每个进程做着不一样的事, 那么这句话的真正含义事什么?谢谢!

  • 写回答

1条回答 默认 最新

  • 嵌入式逍遥 嵌入式领域优质创作者 2024-01-23 19:51
    关注

    在Linux系统中,确实所有进程都是从init进程(PID为1的进程)派生出来的,这是Linux进程树的根。当一个新进程被创建时,它通常会从父进程继承一些资源,包括代码段、数据段和堆栈段。这里的“代码段”指的是程序的可执行代码,而“数据段”和“堆栈段”则包含了程序运行时的数据。

    然而,这并不意味着所有进程都是相同的。这里的“复制”实际上是指新进程在创建时会继承父进程的这些段的副本,而不是直接共享。这意味着每个进程都有自己的内存空间,包括自己的代码段、数据段和堆栈段。这样,每个进程都可以独立地运行,而不会直接影响到其他进程。

    此外,进程在执行过程中还可以加载新的库(共享库),这使得进程可以执行不同的功能。进程还可以通过系统调用(如fork()、exec()系列)来改变其行为,例如,fork()用于创建一个新的进程(子进程),而exec()系列函数则用于在当前进程中执行新的程序。

    所以,尽管所有进程在创建时都继承了父进程的一些资源,但它们可以通过加载不同的库、执行不同的系统调用以及在运行时改变状态来执行不同的任务。这就是为什么在Linux中,尽管所有进程都源自init进程,但每个进程都可以执行不同的工作。

    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?