进程状态(Linux)

发布于:2025-09-11 ⋅ 阅读:(24) ⋅ 点赞:(0)

进程状态

Linux进程状态

Linux进程状态 进程描述
R 运行状态
S 睡眠状态
D 磁盘休眠状态
T 停止状态
t 被追踪状态(调试状态)
X 死亡状态
Z 僵死状态

其实大致也就可以分为三种运行阻塞挂起

运行状态

每个cpu里都有一个运行队列,进程在运行队列里,不管他是否正在被运行。这种进程就属于运行状态,也就是运行态,在Linux系统中就是R状态。cpu里有一个函数叫调度器,当一个进程要运行的时候,有调度器上传,cpu既可以运行该进程了。一个进程不是在cpu里一直运行,直到该进程运行完毕。而是运行一段时间,无论你是否运行完毕,都要退出。这个时间叫时间片。假设时间片是10毫秒,每个进程都只能运行10毫秒,然后后下来排队,其他进程运行。所以,在一段时间内,每个进程都可以运行。这种情况叫并发执行,一个cpu,一段时间内,多个进程都运行了。大量把进程从cpu上拿下来,放上去,就叫进程切换

阻塞状态

当一个进程为了等待某种资源时,而处于等待状态的进程就属于阻塞状态,一般是放到等待队列里。比如一个进程需要等待键盘设备,操作系统考虑到既然该进程需要依靠其他进程或者数据等才能运行,就不会把它放到运行队列中。而是会把它放到等待队列中,直到他需要的进程或者数据等准备好了,才会把该进程放到运行队列。此时该进程的状态就是,阻塞状态。

挂起状态

还是刚刚,那个情景,该进程需要等待键盘外设,可是突然内存资源严重不足。操作系统就会把该进程的代码和数据放到磁盘上,减轻内存压力,只保留PCB。此时该进程的状态就是挂起状态,更准确说是阻塞挂起状态,因为PCB还是保留在等待队列中。有些地方会把挂起状态进行很多分类。其实,都是挂起状态,记一个就好。当一个进程的PCB保留在内存中,代码和数据却在磁盘上,此时该进程就是挂起状态

接下来我们看看Linux进程状态的分类

R,运行状态,一般情况是查不到这个状态的。因为CPU的运行特别块,你几乎察觉不到,是瞬时的。

S和D分别时浅度睡眠和深度睡眠两种状态,浅度睡眠可以被唤醒,深度睡眠除了断电没有办法阻止。咱们先不管他是什么深浅睡眠,既然是睡眠状态,那就表明该进程目前不运行,当这个进程是为了等待某种资源而进入睡眠,那他就是阻塞状态。但是,如果他就是单纯的进入睡眠状态,不是为了等待某种资源,那他就是普通睡眠状态。

sleep(1)

使用sleep函数可以使进程进入浅度睡眠

那什么是深度睡眠呢?深度睡眠是指当进程在执行某项重要任务时,不可以突然的终止执行,为了防止资源泄露等问题,给该进程了一种权限,谁也不可以终止该进程,直到该进程运行完毕,即使该进程为了等待硬件的资源,而处于等待队列里,也不可以终止该进程。比如,io流输出的时候,向磁盘写入的时候。注意,操作系统也不可以终止该进程。

T和t两种状态分别是停止状态和被追踪停止状态,T状态可以通过SIGSTOP信号停止进程,通过SIGCONT信号继续运行。t状态,一般就是gdb调式的时候,可以任意打断点,停止进程。

X是死亡状态,就是进程被杀死时状态,是瞬时的,一般查不到。Z是僵尸状态,当一个进程结束运行时,会短暂处于这个状态,等待父进程回收。如果,该父进程一直不回收,那子进程就一直处于Z状态,该进程也叫僵尸进程,操作系统会一直维护这个进程,如果僵尸进程过多,就会导致内存资源浪费,内存泄漏,等等

孤儿进程

当一个子进程的父进程提前退出,而子进程却在运行的时候,此时,该进程就是孤儿进程。因为他没有父进程回收,这会导致内存泄漏。操作系统为了处理这个麻烦,就会让1号进程回收该进程,比如bash命令行。

进程的其他概念

竞争性:系统进程数目众多,而CPU资源只有少量,甚至1个,所以进程之间是具有竞争属性的。为了高 效完成任务,更合理竞争相关资源,便具有了优先级

独立性:多进程运行,需要独享各种资源,多进程运行期间互不干扰

并发:多个进程在1个cpu采取进程切换,在一段时间内,让多个进程得以推进

进程切换,使用到两个队列,当时间片完,一个进程无论是否执行完,都要切换另一个队列。

并行:多个进程在多个cpu同时进行

cpu里的寄存器

两个问题:

函数返回值如何获取?通过寄存器存储,获取。

系统如何得知进程执行情况?程序计数器pc,eip记录进程执行指令的下一行指令地址。本质是寄存器

常见寄存器有:eax,ecx,ebx,edx

关于栈的寄存器有:ebp,esp

指令寄存器:eip

cpu里的寄存器,记录正在运行的进程数据。我们把这种数据叫做上下文。简单说就是,上下文就是寄存器记录的进程相关数据。

当进程退出的时候,需要把他的上下文数据保存并带走。保存的目的是为了恢复,因为进程再次运行的时候,需要从上次运行的地方继续运行。


网站公告

今日签到

点亮在社区的每一天
去签到