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

进程状态的优先级

1.进程的状态(所有系统)

因为是对于所有系统的,所以描述会很抽象。

补充知识:

并行和并发
  1. 并行:多个进程再多个cpu下分别同时运行
  2. 并发:多个进程在一个cpu下采取进程切换的方式,在一段时间内,让多个进程都得以推进,称之为并发

并发详解:

  • cpu执行进程代码,不是把进程代码执行完毕再去执行下一个,而是给每个进程分配一个时间片,每个进程每次只被cpu运行一个时间片的时间,进行轮转
  • 所以即使是死循环程序,也不会导致所有进程卡掉
  • 轮转过程用户感觉不到:因为轮换速度太快, 人类时感受不到的

时间片
  1. 目的与应用

    • 分时操作系统:旨在提高多个用户的交互体验,通过时间片轮转的方式让多个任务共享CPU资源。适用于一般计算环境,如个人计算机和服务器。
    • 实时操作系统:强调在严格的时间限制内完成任务,确保系统能在特定的时间内响应外部事件。适用于嵌入式系统、工业控制、航空航天等领域。
  2. 任务调度

    • 分时操作系统:采用时间片轮转、优先级调度等方式,任务调度相对灵活,用户等待时间可能不固定。
    • 实时操作系统:使用硬实时或软实时调度策略,确保任务在预定的时间内完成,时间敏感性高

进程具有独立性

进程间互不干扰

等待

阻塞

当cpu遇到scanf但键盘还未输入数据时,系统会把runqueque中的对应struct_task剥离下来,链接到键盘对应的device中的task_struct* wait_queue中进行等待。这叫做阻塞,task_struct从等待cpu到等待硬件设备

从键盘得到数据后,从wait_queue剥离task_struct剥离,将其状态由阻塞改为运行。并入队cpu的runqueue

task_struck等呆cpu的叫做运行,等硬件设备的叫做阻塞

运行&阻塞状态本质是让不同进程处在不同队列中

运行

该进程在cpu运行队列中,就叫做运行状态

挂起

当内存不足时,系统会挂起

挂起是时间换空间的操作

换入换出本质是I/O,会导致很慢,所以一般企业服务器会禁掉swap分区

阻塞时挂起:

当阻塞状态时,系统会把其对应数据从内存换出到磁盘,当其又运行时,系统再将其从磁盘换入到内存

磁盘中有专门swap分区,存储换入数据

运行时挂起:

运行程序过多时,系统甚至可能把runqueue队尾数据换入到磁盘

如果内存占用过多,且挂起也无法缓解,系统会kill进程保护自己

tips

CPU切换和运行的速度非常快,用户感觉不到

runqueque同一管理运行中的进程,其中节点同task_struct。cpu会运行runqueque中task_struct

进程过多导致卡顿:每次调度时间变长到人能感觉到的程度

2.linux进程状态

以具体操作系统为例可以更通俗易懂理解进程状态

各种进程状态(R S D T t X Z)

R 正在运行

S即阻塞/休眠状态

可中断睡眠,浅睡眠

D 也是阻塞/休眠状态  disk sleep

不可中断睡眠,深度睡眠

防止与磁盘I/O时,I/O失败但进程被kill导致不能处理失败,最终数据缺失

所以D状态禁止系统kill与disk有关的sleep进程

T:stopped暂停

t:trace stopped暂停,比如调试遇到断点时,被调试进程所处状态即为t

X:dead死亡状态

Z:zombie僵尸状态

状态后的+

前台进程

后台进程

tips

进程结束时要先进入Z,后进入X状态。Z状态时确认退出原因,程序结束是否正常

程序退出状态

进程结束情况相当于main函数中的return 0,可以表明进程的执行结果是否正确。进程是否正常退出

$?

$? linux中的特殊符号,代表上一个结束进程结束情况,0为正常退出

阻碍状态

循环I/O时,大部分时间是S状态,因为I/O耗时太长,很少时间是R状态

后台&前台

运行时加上空格&可转后台运行, 对应STAT没有+号

比如下载时不想看下载动画,可以把它放在后台

后台进程不能ctrl c杀死,只能kill -9

kill命令

kill -l 列出各信号

kill -19

kill -18

kill -9

板书


http://www.kler.cn/news/312354.html

相关文章:

  • k8s-API 访问控制
  • rocky Linux 9.4系统配置zabbix监控MySQL主从复制状态与配置钉钉告警
  • 从0开始学ARM
  • 通过shell脚本一键修改Linux主机名和IP地址脚本
  • Linux:Bash中的文件描述符
  • vs code 搜索 jar 中的类
  • JAVA同城生活新引擎外卖跑腿团购到店服务多合一高效系统小程序源码
  • QT打开摄像头采集
  • Unity 高亮插件Highlight Plus快速入门
  • linux下的分布式Minio部署实践
  • redis集群模式连接
  • 探索AutoIt:自动化任务的Python魔法棒!
  • Spring Boot- 数据库相关问题
  • docker部署个人网页导航
  • 影视会员充值api?接口对接需要做哪些准备工作?
  • SAP B1 流程实操 - 营销单据销售部分(下)
  • 电脑视频编辑常用软件:12个在线视频剪辑方法,这份免费攻略真实在!
  • LabVIEW机械产品几何精度质检系统
  • 金属3D打印经济效益高吗?
  • 分布式事务一致性:本地消息表设计与实践
  • Jenkins自动化部署后端项目看这篇就够了
  • ubuntu安装emqx
  • Vue(13)——router-link
  • MATLAB基本语句
  • LLM(大语言模型)和AIGC入门学习路线图,零基础入门到精通,收藏这一篇就够了
  • JVM 调优篇5 jvm性能监控
  • DHCP服务(relay中继)实验简述
  • OpenCV绘制ROI区域(五)
  • constexpr与const的区别
  • 【正负交替的分数求和】