当前位置: 首页 > news >正文

进程的状态 ─── linux第11课

目录

​编辑

补充知识:

1.并行和并发

分时操作系统(Time-Sharing Systems)

实时操作系统(Real-Time Systems)

进程的状态(操作系统层面)

​编辑

运行状态

阻塞状态

状态总结:

挂起状态

linux下的进程状态

补充知识:

前台进程: 

后台进程

$?

补充知识:

1.并行和并发

cpu执行进程代码,不是不是把进程代码进行完毕,才开始进行下一个,

        而是给每个进程分配一个时间片,基于时间片 ,进行调度轮转(单cpu下) 称为并发

  • 并发:多个进程在一个cpu下,采取进程切换模式,在一定时间内 ,让多个进程都得以推进
  • 并行: 多个进程在多个cpu分别,同时运行     

     时间片指的是操作系统分配给每个任务(或进程)的固定时间段,用于执行任务。当一个任务的时间片用完时,操作系统会暂停该任务,并将 CPU 资源分配给其他任务,从而实现多任务的并发执行。        

分时操作系统(Time-Sharing Systems)
  • 特点:允许多个用户或任务共享系统资源,通过时间片轮转调度算法实现任务的并发执行。

  • 优点:提高资源利用率,支持多用户交互操作。

  • 应用:常用于多用户环境,如 UNIX、Linux 和 Windows 的多用户版本。

实时操作系统(Real-Time Systems)
  • 特点:任务必须在严格的时间限制内完成,分为硬实时和软实时系统。

  • 优点:确保任务的及时响应,适用于对时间敏感的应用。

  • 应用:工业控制系统、航空航天系统、机器人控制,汽车控制等。

进程的状态(操作系统层面)

运行状态

        一个cpu内会有一个struct_runqueue(运行对列) ,只要进程的task_struct在运行队列里,进程就是运行状态,随时可以进入cpu

操作系统上层管理进程

               下层管理硬件       都是先描述(task_struct 和struct device),再组织(runqueue 和devices ).

在下图中,描绘了运行状态

阻塞状态

        有的程序需要用户输入才能继续运行,当用户没有输入时, os会将此进程的pcb(linux下是task_struct) 放进对应的硬件数据结构(struct device)中,在设备的等待队列(wait_queue)进行等待.

状态总结:

cpu有运行队列,等待队列 ,  进程等待cpu就是运行状态 ,进程等待设备,就是阻塞状态

运行状态和阻塞状态本质不同就是进程的pcb(task_struct)在不同的队列中.

挂起状态

        在内存严重不足时,进程的阻塞状态会占用部分内存(pcb 和 进城数据), os会将阻塞状态的进程的代码和数据换出到磁盘(swap分区) , 如果硬件有相应后,结束阻塞状态 ,开始运行时 ,会将代码和进程数据换入到内存.

        这是一种用时间换空间的方法,一般不会启用.

        代码和数据被换出的状态就是挂起状态.

上面我们从宏观层面讲解了进程的状态,但在不同os下还有具体不同,下面我们讲解linux下的进程状态

linux下的进程状态

        为了弄明白正在运行的进程是什么意思,我们需要知道进程的不同状态。

        一个进程可以有几个状态(在 Linux内核里,进程有时候也叫做任务)。 下面的状态在kernel源代码里定义:

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 */
};

R: 运行状态  

S: 休眠状态   可中断睡眠)---- 阻塞状态之一

D: 休眠状态   不可中断睡眠----阻塞状态之一   如向磁盘写入的时间中,禁止os杀掉此进程

                                                                         出现D状态,大概率磁盘有问题 ,系统快挂了

T: 停止状态   进程做了非法但不致命的操作,被OS暂停了

t: 停止状态    当进程被追踪(如gdb的断点), 遇到断点停下 

X: 死亡状态  

Z: 僵尸状态   期间维持退出信息 , 方便父进程和os查询退出信息

SD是阻塞状态等待设备  Tt是阻塞状态因操作需要,暂停进程 等待人

进程运行结束先进入Z再进入X状态

补充知识:

code代替程序名称

前台进程: 

运行方法

./code

运行后状态带有+号 , 可用 ctrl+c 杀掉此进程 

        特点: 会阻碍命令行的命令执行

后台进程

运行方法

./code &

运行后状态后没有+号 ,不可用ctrl+c 杀掉此进程 ,用 kill -9 pid来终止

        特点:不会阻碍命令行,可继续使用命令行 

        应用方面:下载

$?

        $? 记录最近程序的退出信息(0是成功 ,非零是失败) , 这就是main函数的返回值由来

打印最近程序的退出信息

echo $?
  • kill -19 pid  会暂停一个进程 ,将进程状态设置为T 
  • kill-18 pid  会默认在后台重新启动此进程

相关文章:

  • 【深度学习神经网络学习笔记(一)】深度学习介绍
  • 常用的设计模式
  • 神经网络之RNN和LSTM(基于pytorch-api)
  • 蓝桥杯(握手问题)
  • RabbitMQ——延迟消息的实现
  • M4 Mac mini运行DeepSeek-R1模型
  • Linux——计算机网络
  • SGLang部署大模型
  • 【系统稳定性】1.10 QNX Crash之Ramdump的分析(二)
  • 计算结构体的大小(结构体内存对齐)、结构体实现位段
  • 《MODEM HOST INTERFACE》,第二章:MHI接口架构
  • C++蓝桥杯基础篇(六)
  • 解锁 indexOf、substring 和 JSON.stringify:从小程序图片上传看字符串魔法 ✨
  • Flutter_学习记录_本地存储数据
  • 数据集笔记:新加坡traffic 照片
  • 虚拟化园区网络部署指南
  • 第十三届蓝桥杯大赛软件赛决赛C/C++ 大学 B 组
  • Linux下的网络通信编程
  • 2024年12月中国电子学会青少年软件编程(Python)等级考试试卷(四级)真题 + 答案
  • 手撸大模型-基础篇 简单线性回归模型预测房价
  • 襄阳做网站的公司有哪些/百度站长平台怎么用
  • 四川住房城乡建设部网站/百度联盟
  • 湖北武汉最新消息/厦门seo外包服务
  • 做pc端网站报价/郑州seo顾问热狗hotdoger
  • 公司网站制作深圳/个人网站
  • 万户网络做网站如何/付费推广