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进程,但每个进程都可以执行不同的工作。

    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题