雷子聊并发编程(002):进程介绍

什么是进程

进程的定义是:指在系统中能独立运行并做为资源分配的基本单位,它是由一组机器指令、数据和堆栈等组成的,是一个能独立运行的活动实体。
通俗直白的讲:进程是系统中正在运行的一个程序,程序一旦运行就是进程。php

查看进程

在Windows系统中,打开QQ程序这个软件,系统就会建立一个进程,经过任务栏管理器能够方便直观的查看。以下图所示: java

ps -aux指令

在Linux操做系统中,执行ps -aux指令,下图所示。编程

ps -aux指令

进程特征

动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。在PHP的WEB程序中,用户每次请求都动态产生一个php-fpm的进程,结束后又动态消亡。进程的动态性能够经过top命令查看。segmentfault

并发性:任何进程均可以同其余进程一块儿并发执行。进程与线程样都具备并发性,单核CPU,进度在处理多任务时,与线程同样也是轮流使用资源。
独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位。在Windows系统中,同时开启多个应用程序,每一个应用程序占用的资源各有不一样。
异步性:因为进程间的相互制约,使进程具备执行的间断性,即进程按各自独立的、不可预知的速度向前推动。这比如咱们在Windows操做系统中既运行浏览器,又能同时运行QQ接收到消息,他们之间各自独立互不依赖且互不影响,各个程序又保持着运行状态。
结构特征:进程由程序、数据和进程控制块三部分组成。关于结构特征会比较复杂,放在进度的PCB章节中详细介绍。浏览器

ps -aux指令

进程的生命周期

(1) 就绪→执行
处于就绪状态的进程,当进程调度程序为之分配了处理机后,该进程便由就绪状态转变成执行状态。微信

(2) 执行→就绪
处于执行状态的进程在其执行过程当中,因分配给它的一个时间片已用完或更高优先级的进程抢占而不得不让出处理机,因而进程从执行状态转变成就绪状态。并发

(3) 执行→阻塞
正在执行的进程因为发生某事件而暂时没法继续执行时,便放弃处理机而处于暂停状态,亦即进程的执行受到阻塞,把这种暂停状态称为阻塞状态。
处于阻塞状态的进程排成一个队列,称为阻塞队列,有的系统则根据阻塞缘由的不一样而把处于阻塞状态的进程排成多个队列。异步

(4) 阻塞→就绪
处于阻塞状态的进程,若其等待的事件已经发生,因而进程由阻塞状态转变为就绪状态。php-fpm

(5) 运行→终止
程序执行完毕,撤销而终止。学习

举例说明:
经过java jar指令运行Java程序,即建立了一个进程,同时进入就绪状态。用户经过Http请求访问应用,CPU调度到这个进程。进程实时返回结果给用户,又进入就绪。若程序处理耗时较长,那进程处于堵塞状态(但CPU不堵塞,等时间片到又会调度到另外一个进程)。等程序处理完成,又进入就绪状态继续等待用户请求。假设程序在处理的过程当中致使程序崩溃,严重状况则有可能终止进程。

以上是最经典也是最基本的三种进程状态(就绪,执行,堵塞),但如今的操做系统都根据须要从新设计了一些新的状态。

ps -aux指令

运行状态:是运行态和就绪态的合并,表示进程正在运行或准备运行。
可中断睡眠状态(浅度睡眠):进程正在睡眠(被阻塞),等待资源到来是唤醒,也能够经过其余进程信号或时钟中断唤醒,进入运行队列。
不可中断睡眠状态(深度睡眠状态):其和浅度睡眠基本相似,但有一点就是不可被其余进程信号或时钟中断唤醒。
暂停状态:进程暂停执行接受某种处理。如正在接受调试的进程处于这种状态。
僵死状态:进程已经结束但未释放PCB。

top指令

在Linux系统中,得知进程的状态与其它信息可使用top指令查看输入信息:
PID:进程ID
USER:进程的全部者
PR:进程的优先级
NI:nice值,负值表示高优先级,正值表示低优先级
VIRT:进程占用虚拟内存的大小
RES:进程占用物理内存的大小
SHR:进程占用共享内存的大小
S:进程的状态,D=睡眠状态,R=运行状态,S=睡眠状态,T=中止状态,Z=僵尸进程
%CPU:进程占用CPU的百分比
%MEM:进程占用物理内存的百分比
TIME+:进程占用CPU的总时长
COMMAND:进程使用的命令行,使用 top -c 能够查看详细的命令行

最后

为何要学习进程,由于对处理机即CPU的管理可归结为对进程的管理。进一步而言,能控制好进程,那么就能最大化利用CPU资源,提升程序运行效率。

搜索并关注微信公众号:iamleiyongjun;每周都有【由浅入深的并发编程】教程分享,开发中间件再也不是梦想!
相关文章
相关标签/搜索