常见并发编程技术-进程并发

未匹配的标注

进程并发#

程序和进程#

程序,是指编译好的二进制文件,在磁盘上,不占用系统资源 (内存、打开的文件、设备、锁....)

进程,是一个抽象的概念,与操作系统原理联系紧密。进程是活跃的程序,占用系统资源。在内存中执行。(程序运行起来,产生一个进程)

程序 → 剧本 (纸) 进程 → 戏 (舞台、演员、灯光、道具...)

同一个剧本可以在多个舞台同时上演。同样,同一个程序也可以加载为不同的进程 (彼此之间互不影响)

如:同时开两个终端。各自都有一个 bash 但彼此 ID 不同。

在 windows 系统下,通过查看 “任务管理器”,可以查看相应的进程。包括我们写的程序,运行起来后也可以在 “任务管理器” 中查看到。运行起来的程序就是一个进程。如下图所示:

常见并发编程技术

进程状态#

进程基本的状态有 5 种。分别为初始态,就绪态,运行态,挂起态与终止态。其中初始态为进程准备阶段,常与就绪态结合来看。

常见并发编程技术

进程并发#

在使用进程 实现并发时会出现什么问题呢?

 1:系统开销比较大,占用资源比较多,开启进程数量比较少。

 2:在 unix/linux 系统下,还会产生 “孤儿进程” 和 “僵尸进程”。

在操作系统运行过程中,可以产生很多的进程。在 unix/linux 系统中,正常情况下,子进程是通过父进程 fork 创建的,子进程再创建新的进程。

并且父进程永远无法预测子进程到底什么时候结束。 当一个进程完成它的工作终止之后,它的父进程需要调用系统调用取得子进程的终止状态。

孤儿进程

孤儿进程:父进程先于子进程结束,则子进程成为孤儿进程,子进程的父进程成为 init 进程,称为 init 进程领养孤儿进程。

僵尸进程

僵尸进程:进程终止,父进程尚未回收,子进程残留资源(PCB)存放于内核中,变成僵尸(Zombie)进程。 

Windows 下的进程和 Linux 下的进程是不一样的,它比较懒惰,从来不执行任何东西,只是为线程提供执行环境。然后由线程负责执行包含在进程的地址空间中的代码。当创建一个进程的时候,操作系统会自动创建这个进程的第一个线程,成为主线程。

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
wangchunbo
讨论数量: 0
发起讨论 只看当前版本


暂无话题~