进程主要是执行用户级别程序的环境,进程可以让内核多任务的处理,这样在一个操作系统上可以执行上千个进程。每个进程都有自己独立的进程PID,并且是唯一的。进程的创建是通过系统调用fork()来创建的,fork()用自己的进程号创建自身进程的一个复制,然后调用系统调用exec()才能开始执行不同的程序。如下显示了shell中执行命令的进程创建过程,如下图所示:

依据如上图,我们可以得到系统调用fork()可以达到Copy-On-Write,也就是COW的策略来提高性能,这样添加原有地址空间的引用而非所有内容复制,但是一旦任何的进程要被修改,那么此时就会针对修改建立一个独立的副本。如下显示了进程的完整生命周期,具体为:

on-proc指的是进程运行在CPU上,而ready-to-run指的是进程可以运行,但是还在CPU的运行队列里等待CPU分配资源。I/O阻塞,让进程进入sleep状态直到I/O完成进程被唤醒。zombie状态发生在进程终止,此时子进程状态等待自己的父进程读取,或者直到被内核清除。这样的一个调度过程可以简化为如下的一个过程,具体如下:

感谢您的阅读和关注,您也可关注如下的系列文章:
API测试指南
PostMan服务端测试实战
AIOHTTP的实战(一)
性能测试之常用术语
漫谈服务端测试
再谈API测试
业务监控与质量
Python接口测试之Requests
服务端测试之集群验证(一)
Pytest之命令行执行
Pytest之Allure测试报告(十五)
Pytest之并发执行(十四)
Pytest插件之selenium(十三)
Pytest常用插件之HTML报告(十二)
Pytest测试实战之token处理(十一)
Pytest测试实战(十)
Pytest测试实战(九)