Open
Description
目录
process
模块- 进程 &
child_process
模块 cluster
模块
二、扫盲:进程和线程
- 进程和线程都是操作系统的概念;
-
进程和线程都是一个时间段的描述,是CPU工作时间段的描述;
两个层次的时间段。
- 理解进程和线程的引入背景很重要,看参考知乎:线程和进程的区别是什么?:
- CPU执行任务只能串行
但这不是问题,因为CPU非常快,也存在多核 - 程序的执行上下文
除了CPU外,其他依赖的资源(比如显卡,GPS等)
2.1 进程
- 进程是资源(程序执行上下文)分配的最小单位;
- 每个进程都拥有自己的独立空间地址、数据栈,一个进程无法访问另外一个进程里定义的变量、数据结构;
- 线程创建、线程之间上下文切换会产生资源开销;
2.1.1 fork
子进程
1. 通过fork方式创建的新进程被称为子进程。
fork之后,操作系统会复制一个与父进程完全相同的子进程,虽说是父子关系,但是在操作系统看来,他们更像兄弟关系,这2个进程共享代码空间,但是数据空间是互相独立的,子进程数据空间中的内容是父进程的完整拷贝,指令指针也完全相同,子进程拥有父进程当前运行到的位置(两进程的程序计数器pc值相同,也就是说,子进程是从fork返回处开始执行的)
- 子进程是从fork返回处开始执行的
但后续的执行进度就不同步了。
2. fork
的含义
可以这样想象,2个进程一直同时运行,而且步调一致,在fork之后,他们分别作不同的工作,也就是分岔了。这也是fork为什么叫fork的原因。
其实前半句是“想象的”,fork
之前是一个进程在运行(被想象成两个同步的进程)。本质是一个进程在fork
处复制自己创建一个新进程执行其他任务。
2.1.2 多进程通讯
IPC ?
2.3 线程
- 线程是操作系统能够进行运算调度的最小单位;
- 只涉及CPU运算了,其他资源共享进程的。
- 看上面的论述吧:
进程和线程都是一个时间段的描述,是CPU工作时间段的描述