进程控制[一]

fork创建子进程,操作系统做了什么?

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

  • 分配新的内存块和内核数据结构给子进程
  • 将父进程部分数据结构内容拷贝至子进程(类似于赋值或者初始化)
  • 添加子进程到系统进程列表当中
  • fork返回,开始调度器调度

一般而言我们没有加载的过程。也就是说子进程要用父进程的代码和数据!!所以子进程只能“使用”父进程的代码和数据。

代码:都是不可写的,只能读取,可以保证数据的独立性。

数据:可能被修改,必须分开,在创建子进程的时候就直接拷贝。 但是全部拷贝,可能会拷贝大量用不到的数据,所以在创建的时候读取的数据拷贝不需要读取的数据不拷贝,只有一份。因为不知道那些数据会被拷贝所以选择了写时拷贝将父子进程分离,需要的时候再拷贝。fork之后代码是父子之间全部代码共享。但是因为只有再fork的时候在会有不用的分支所以显得前面的没有变化。

进程控制[一]_第1张图片

你可能感兴趣的:(linux,服务器,运维)