进程状态的优先级

news2024/12/29 10:31:21

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.coloradmin.cn/o/2151302.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

fiddler抓包06_抓取https请求(chrome)

课程大纲 首次安装Fiddler,抓https请求,除打开抓包功能(F12)还需要: ① Fiddler开启https抓包 ② Fiddler导出证书; ③ 浏览器导入证书。 否则,无法访问https网站(如下图&#xff0…

prometheus通过nginx-vts-exporter监控nginx

Prometheus监控nginx有两种方式。 一种是通过nginx-exporter监控,需要开启nginx_stub_status,主要是nginx自身的status信息,metrics数据相对较少; 另一种是使用nginx-vts-exporter监控,但是需要在编译nginx的时候添加nginx-module…

MyBatis 分批次执行(新增,修改,删除)

import com.google.common.collect.Lists;import java.util.Iterator; import java.util.List; import java.util.function.Consumer;/*** Description mybatis分批插入数据使用* Author WangKun* Date 2024/9/19 11:20* Version*/ public class MyBatisSqlUtils {/*** param d…

用户态缓存:高效数据交互与性能优化

目录 1. 用户态缓存区工作背景 1.1 为什么每条连接都需要读写缓存区 1.1.1 读缓存区(Read Buffer) 1.1.2 写缓存区(Write Buffer) 1.2 用户态缓存区的工作流程 1.3 用户态缓存区的重要性 2. UDP 和 TCP 的设计差异 2.1 UD…

神经网络 卷积层 参数共享

参数共享常用于神经网络卷积层中,共享的实际上就是说卷积核中的参数一直保持不变,如下所示就可以称为共享参数啦!!

C# 实时流转换为m3u8

主要通过FFmpeg 执行命令进行转换 FFmpeg 下载地址 命令行 ffmpeg -i "rtsp://your_rtsp_stream_address" -codec: copy -start_number 0 -hls_time 10 -hls_list_size 12 -f hls "output.m3u8"start_number 设置播放列表中最先播放的索引号,…

JVM基础篇学习笔记

【注:本文章为自学笔记,仅供学习使用。】 一、JVM简介 JVM是Java虚拟机的缩写,本质上是运行在计算机上面的程序,作用是运行Java字节码文件。 1.1 JVM的功能 Java如果不做优化,则性能不如C/C,因为后者会…

uv-ui组件的使用——自定义输入框的样式

一、官网的使用 二、自定义修改样式 我是在小程序中使用此组件 想要自定义修改样式的话,需要placeholderClass加上 placeholderStyle配合使用 tip1:单独使用placeholderClass,他只会第一次渲染时生效,输入文字再清除后就不生效…

Spring面试题合集

Spring 1.谈谈你对Spring的理解 首先Spring是一个轻量级的开源框架,为Java程序的开发提供了基础架构支持,简化了应用开发,让开发者专注于开发逻辑; 同时Spring是一个容器,它通过管理Bean的生命周期和依赖注入&#…

flask项目初始化

1、初始环境 python3.8 2、flask文档地址:https://flask.palletsprojects.com/en/latest/installation/#install-flask 3、初始化项目 $ mkdir myproject $ cd myproject $ python3 -m venv .venv $ . .venv/bin/activate $ pip install Flask4、打开项目mypr…

机器翻译之多头注意力(MultiAttentionn)在Seq2Seq的应用

目录 1.多头注意力(MultiAttentionn)的理念图 2.代码实现 2.1创建多头注意力函数 2.2验证上述封装的代码 2.3 创建 添加了Bahdanau的decoder 2.4训练 2.5预测 3.知识点个人理解 1.多头注意力(MultiAttentionn)的理念图…

云服务器使用

最近搭建一个内网穿透工具,推荐一个云服务器: 三丰台:https://www.sanfengyun.com/ 作为学生党这个服务器是免费的可以体验使用!可以使用免费虚拟主机和云服务器,写一个申请的基本步骤方便大家构建 申请步骤&#x…

11.1图像的腐蚀和膨胀

基本概念-图像腐蚀 图像腐蚀是一种用于去除图像中小的对象或者突出物体边缘的形态学操作。 图像腐蚀(erosion)的基本概念 图像腐蚀通常用于二值图像,其基本原理是从图像中“侵蚀”掉一些像素点,这些像素点通常是边界上的或者是孤…

Word中引用参考文献和公式编号的方法

文章目录 应用参考文献对于单个文献引用多于多个文献同时引用 公式编号手动编号自动编号 参考: 应用参考文献 对于单个文献引用 word中的参考文献用交叉应用实现。 首先,将参考文献编号: 然后,在需要引用的地方用交叉引用插入…

VM虚拟机使用的镜像文件下载

文章目录 Windows系统进入微软官网下载工具以Windows10为例下载镜像文件 Windows系统 进入微软官网下载工具 微软中国官网:https://www.microsoft.com/zh-cn/ 以Windows10为例下载镜像文件 选择下载的路径 开始下载 安装windows10操作系统出现Time out问题及解决办…

【AI视频】Runway:Gen-2 运镜详解

博客主页: [小ᶻZ࿆] 本文专栏: AI视频 | Runway 文章目录 💯前言💯Camera Control(运镜)💯Camera Control功能测试Horizonta(左右平移)Vertical(上下平移&#xff0…

Python 中的 Kombu 类库

Kombu 是一个用于 Python 的消息队列库,提供了高效、灵活的消息传递机制。它是 Celery 的核心组件之一,但也可以单独使用。Kombu 支持多种消息代理(如 RabbitMQ、Redis、Amazon SQS 等),并提供了消息生产者和消费者的功…

ByteTrack多目标跟踪流程图

ByteTrack多目标跟踪流程图 点个赞吧,谢谢。

用 Pygame 实现一个乒乓球游戏

用 Pygame 实现一个乒乓球游戏 伸手需要一瞬间,牵手却要很多年,无论你遇见谁,他都是你生命该出现的人,绝非偶然。若无相欠,怎会相见。 引言 在这篇文章中,我将带领大家使用 Pygame 库开发一个简单的乒乓球…

python文字转wav音频

借鉴博客 一.前期准备 1. pip install baidu-aip 2. pip install pydub 3. sudo apt-get install ffmpeg 二.代码 from aip import AipSpeech from pydub import AudioSegment import time#input your own APP_ID/API_KEY/SECRET_KEY APP_ID 14891501 API_KEY EIm2iXtvD…