【Linux初阶】进程状态 | Linux下常见进程状态讲解 & 进程循环打印方法 & ls>makefile指令 & makefile$@^特殊符号的应用

 🌟hello,各位读者大大们你们好呀🌟

🍭🍭系列专栏:【Linux初阶】

✒️✒️本篇内容:进程状态的概念,进程状态在普遍操作系统层面和Linux层面的理解,Linux常见进程状态,进程状态的两种查看方法,ls>makefile指令,makefile$@^特殊符号的应用方法展示,僵尸进程和孤儿进程的讲解

🚢🚢作者简介:计算机海洋的新进船长一枚,请多多指教( •̀֊•́ ) ̖́-

目录

一、进程状态 

1.普遍操作系统层面理解

(1)运行状态

(2)阻塞状态 

(3)挂起状态

(4)状态合作

2.Linux层面理解

(1)R运行状态(running)

(2)S睡眠状态(sleeping)

(3)D磁盘休眠状态(Disk sleep)

(4)T停止状态(stopped)

(5)t - 被追踪状态 (tracing stop)

(6)X死亡状态(dead)

(7)Z(zombie) - 僵死状态

二、进程状态查看 & makefile特殊符号$@^应用

1.基础进程查看方法 

2.进程循环打印查看方法

3.ls > makefile(重定向)

4.makefile特殊符号$@^应用

三、特殊状态下的进程 - 僵尸进程&孤儿进程

1.僵尸进程

(1)僵尸进程的概念

(2)僵尸进程的危害

2.孤儿进程


一、进程状态 

进程状态有很多,运行、挂起、阻塞、死亡等都属于进程状态。进程那么多状态,实际上都是为了满足不同的运行场景。我们可以从普遍的操作系统层面Linux层面两个层面去理解。在深入学习进程状态的知识前,我们先要了解几个重要的概念。

  1. 一个CPU有一个运行队列
  2. 让进程进入队列,本质:将该进程的task_struct结构体对象(PCB)放到运行队列中,而不是将进程对应的代码放到运行队列中
  3. 进程在runqueue(运行队列)中,就是R,而不是说这个程序在运行,才是运行状态;进程状态是对PCB属性的描述,因此状态的数据也储存在内存中
  4. 不要以为你的进程只占用CPU资源,也有可能它需要占用外设资源,更进一步可能造成资源浪费(当大量进程需要和外设交互,而外设只能执行一个进程的时候)
  5. 所谓进程的不同状态,本质是进程在不同队列中等待某种资源!

1.普遍操作系统层面理解

(1)运行状态

一个CPU有一个运行队列,让进程进入队列,进程在runqueue(运行队列)中,就是R(运行状态),而不是说这个程序在运行,才是运行状态。

注意:进程在运行队列中,本质上是PCB在运行队列中,CPU可以根据PCB找到对应的进程。

 

(2)阻塞状态 

将某个进程从运行队列中剥离下来,放到硬件的等待队列中,进程的状态就变为阻塞状态了。待进程完成与硬件的交互任务或者有需要时,先将进程状态重新变为运行状态,再将进程控制块(PCB)返回运行队列。

 

 

(3)挂起状态

为了更好的利用计算机资源,当内存中存在大量进程的时候,操作系统会将部分不需要立即调度的代码和数据暂时保存在磁盘上。这样,就可以实现内存空间资源的充分利用。

将进程的相关数据,加载或保存到磁盘,此时的进程状态被称为挂起状态待有需要时,会先将进程状态重新改为运行状态,再将进程控制块(PCB)返回运行队列

阻塞 vs 挂起 :阻塞不一定挂起,挂起一定阻塞!因为阻塞不一定会将PCB加载到磁盘,它也可以放到其它硬件的等待队列中,但是加载到磁盘后PCB一定在磁盘的等待队列中。

(4)状态合作

操作系统通过调整进程状态,充分调度计算机软硬件资源,实现计算机的高效运转。例如,当下我们的计算机可以同时运行多个程序,就是CPU配合操作系统在1s内将多个进程运行多次(CPU计算速度非常快),随时间对不同进程进行重复运行,才得以实现的。


2.Linux层面理解

下面的状态在kernel源代码里定义:

/*
* The task state array is a strange "bitmap" of
* reasons to sleep. Thus "running" is zero, and
* you can test for combinations of others with
* simple bit tests.
*/
static const char * const task_state_array[] = {
"R (running)", /* 0 */
"S (sleeping)", /* 1 */
"D (disk sleep)", /* 2 */
"T (stopped)", /* 4 */
"t (tracing stop)", /* 8 */
"X (dead)", /* 16 */
"Z (zombie)", /* 32 */
};

(1)R运行状态(running)

  • 并不意味着进程一定在运行中,它表明进程要
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值