我与Linux的爱恋:进程优先级|进程切换


外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

🔥个人主页guoguoqiang. 🔥专栏Linux的学习

Alt

文章目录

  • 1.进程优先级
    • 1.什么是进程优先级?
    • 2.进程优先级的类型
    • 3.进程优先级的作用
    • 4.进程优先级的实现
    • 5.进程优先级的重要性
    • 6.查看系统进程
    • 7.修改进程优先级
    • 8.优先级调度原理
  • 进程切换

在这里插入图片描述

1.进程优先级

1.什么是进程优先级?

cpu资源分配的先后顺序,就是指进程的优先权(priority)。
优先权高的进程有优先执行权利。配置进程优先权对多任务环境的linux很有用,可以改善系统性能。
还可以把进程运行到指定的CPU上,这样一来,把不重要的进程安排到某个CPU,可以大大改善系统整
体性能。

2.进程优先级的类型

进程优先级可以是静态的,也可以是动态的。静态优先级通常在进程创建时由用户或操作系统管理员设定,并且不会改变。动态优先级则可以根据进程的行为或系统状态自动调整。

静态优先级:在进程创建时由用户或操作系统管理员设置,通常使用整数值表示,数值越低表示优先级越高。

动态优先级:根据进程的运行情况自动调整,例如,一个进程如果长时间等待I/O操作,它的优先级可能会降低

3.进程优先级的作用

1.资源分配:操作系统通过进程优先级来决定哪些进程可以获得更多的CPU时间和其他资源。高优先级进程会优先执行,以确保系统的响应性和效率。

2.响应时间:在实时系统或对用户响应时间要求高的场景中,优先级管理能够确保关键任务得到及时处理。例如,交互式应用程序的优先级通常较高,以减少用户等待时间。

3.避免饥饿:适当的优先级调度可以防止低优先级进程长时间得不到执行,从而避免系统资源的饥饿状态。

4.系统性能:通过合理设置进程的优先级,操作系统可以优化整体性能,提高吞吐量,减少延迟,从而提升用户体验。

5.调度策略:不同的调度算法(如优先级调度、轮询调度等)依赖于进程优先级来决定执行顺序,影响系统的整体调度效率。

4.进程优先级的实现

进程优先级通常通过操作系统的调度器来实现,调度器会根据进程的优先级和其他因素(如进程状态、时间片等)来决定进程的执行顺序。

5.进程优先级的重要性

进程优先级在确保系统高效、稳定运行中起着关键作用。合理的优先级管理能够帮助操作系统在多任务环境中有效地分配资源,提升用户体验。

6.查看系统进程

在Linux或Unix系统中,可以使用ps -l命令查看系统进程的相关信息,包括UID、PID、PPID、PRI和NI等。
UID : 代表执行者的身份
PID : 代表这个进程的代号
PPID :代表这个进程是由哪个进程发展衍生而来的,亦即父进程的代号
PRI :代表这个进程可被执行的优先级,其值越小越早被执行
NI :代表这个进程的nice值
在这里插入图片描述

7.修改进程优先级

修改进程优先级主要是通过修改nice值实现的,nice值范围为-20至19,**数值越小,优先级越高。**可以使用nice和renice命令或通过top命令进行修改。
top命令进行修改
在这里插入图片描述
先按top 然后按r 输入进程pid 回车 然后再输入nice值
然后发现pid为19979的pri从80变成了90
renice命令
renice命令使用格式为:renice [nice值] -p [进程pid]
在这里插入图片描述

8.优先级调度原理

在这里插入图片描述
双140轮转队列
在这里插入图片描述

进程切换

进程切换(Process Switching),也称为上下文切换(Context Switching),是操作系统中的一个基本机制,它允许在单个处理器上快速高效地运行多个进程。进程切换是指操作系统保存当前运行进程的状态(上下文),并恢复另一个进程的状态以使其能够继续执行的过程。
进程切换的过程

保存当前进程的上下文:这包括将当前进程的寄存器值(如程序计数器、栈指针、通用寄存器等)保存到它的进程控制块(PCB)中。

选择另一个进程:操作系统调度器根据某种策略(如轮转调度、优先级调度等)选择下一个要执行的进程。

恢复新进程的上下文:将所选进程的寄存器值从其PCB中恢复到处理器中,以便该进程可以从中断点继续执行。

进程切换的原因
1.多任务处理:

操作系统需要在多个进程之间共享CPU资源,以实现并发执行。
2.I/O操作:

当一个进程执行I/O操作时(如读写文件、网络通信),它会被阻塞,操作系统会切换到其他进程以利用CPU资源。
3.时间片耗尽:

在时间共享系统中,进程被分配固定的CPU时间片,当时间片耗尽时,操作系统会切换到其他就绪进程。
4.优先级变化:

高优先级进程可能需要抢占低优先级进程的CPU,导致切换。
5.进程状态变化:

进程可能因为各种原因(如资源可用、事件发生)从阻塞状态变为就绪状态,这也会导致切换。
6.系统调用:

当进程发出系统调用请求时,操作系统需要切换上下文以处理中断或服务请求。

进程切换的代价
1.时间开销:

切换过程涉及保存和恢复进程状态,时间开销包括寄存器保存、程序计数器更新等,通常为微秒级。
上下文切换的复杂性:

操作系统需要管理多个进程的状态信息,这增加了系统的复杂性和管理开销。
2.CPU缓存失效:

切换进程时,新的进程可能需要访问不同的内存地址,导致CPU缓存失效,增加内存访问时间。
3.资源竞争:

切换过程可能会导致对共享资源的竞争,影响系统的整体性能。
4.调度算法的影响:

不同的调度算法对切换频率和时间的影响不同,某些算法可能导致频繁切换,从而增加系统开销。

优化进程切换

快速上下文切换:通过硬件支持来加速上下文切换的过程。

减少切换次数:通过改进调度算法,减少不必要的进程切换。

优先级继承:在某些情况下,为了避免频繁的上下文切换,可以采用优先级继承机制。

进程的切换,最重要的一件事情是:上下文数据的保护和恢复。
竞争与独立
竞争性: 系统进程数目众多,而CPU资源只有少量,甚至1个,所以进程之间是具有竞争属性的。为了高
效完成任务,更合理竞争相关资源,便具有了优先级
独立性: 多进程运行,需要独享各种资源,多进程运行期间互不干扰
并行与并发
并行: 多个进程在多个CPU下分别,同时进行运行,这称之为并行
并发: 多个进程在一个CPU下采用进程切换的方式,在一段时间之内,让多个进程都得以推进,称之为并发
进程抢占:

◉ 抢占式内核是一种操作系统调度策略,它允许操作系统强制将处理器从一个进程切换到另一个进程。当一个低优先级进程正在运行时,如果有一个高优先级进程准备好运行,操作系统会抢占低优先级进程的CPU时间,切换到高优先级进程。

关于进程的切换问题

计算机中的CPU内有大量的寄存器,它保存着正在执行的进程的临时数据。如果进程A正在被执行,CPU内的寄存器里面一定保存的是进程A的临时数据。寄存器中的临时数据,就叫做A的上下文

上下文数据不可以丢弃,由于计算机CPU数量小于进程数量,则当进程A暂时被切换下来的时候,进程A需要顺便带走自己的上下文数据。带走暂时保存的目的就是为了下次回来的时候,能恢复上去,就能继续按照之前的逻辑继续向后运行,就如同没有中断过一样。但如果没有保存上下文数据,进程A回来再执行时,就无法判断进程A原先执行到哪里了

注意:CPU内的寄存器只有一份,但是上下文可以有多份,分别对应不同的进程!!
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1540821.html

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

相关文章

mysql笔记—sql性能分析

1.查看数据库各个语句的执行频次 show global/session status like ‘com__’ 2.慢查询 默认没有开启,需要手动开启(在/etc/my.cnf中开启) 开启后在localhost-slow.log中可以查询到慢查询的语句的相关信息: 3.explain 用法&…

Java 在 GIS 领域的学习路线?

Java是一门广泛应用于企业级开发的编程语言,而GIS则是一种常用于地理信息处理和分析的技术。将Java与GIS结合起来,可以在企业级应用中实现更多的功能和业务需求,且在实际领域越来越广泛。 Java在GIS中重要的作用 1、跨平台性 Java具有跨平台…

康佳集团的多元化战略:创新还是负担?

2023年,康佳集团豪赌“一轴两轮三驱动”战略,企图以消费电子和半导体为马,来驱动业绩的快车,但2024年的半年报如同一盆冷水,让所有期望化为泡影。 财报显示,康佳上半年营业总收入只有54.13亿元&#xff0c…

ActivityManagerService Activity的启动流程(2)

ActivityManagerService Activity的启动流程 简述 提到ActivityManagerService,最重要的流程之一就是启动Activity了。 这个流程比较复杂: 启动activity的调用链很长。业务逻辑很多,activity启动有很多flag,例如FLAG_ACTIVITY_…

激活Clion2024.2报错We could not validate your license解决

网上激活方法后报错We could not validate your license HLLIQN9GJ8. 只需要设置代理: 主机名:localhost 端口号:80 不为以下设置代理:*.github.com,plugins.jetbrains.com 然后重新激活就不会提示了。

mac安装JetBtains全家桶新版本时报错:Cannot start the IDE

mac安装JetBtains全家桶新版本时报错:Cannot start the IDE 前言报错信息解决方法 前言 作者使用的是Mac电脑,最近想要更新JetBrains相关工具的软件版本,但是在安装时突然报错,导致安装失败,现在将报错信息以及解决方…

FB FC里调用全局变量注意事项

PLC编程基础之数据类型、变量声明、全局变量和I/O映射 PLC编程基础之数据类型、变量声明、全局变量和I/O映射(CODESYS篇 )_codesys全局变量如何映射写入-CSDN博客文章浏览阅读6.3k次,点赞2次,收藏4次。本文介绍了CODESYS编程的基础知识,包括数据类型、变量声明、全局变量、…

口罩检测、未戴口罩识别、未戴口罩检测算法

不戴口罩检测算法主要用于疫情防控、公共安全和企业管理等领域,通过图像识别技术来检测人群中的个体是否佩戴了口罩。这种技术可以帮助管理者实时监控人群的口罩佩戴情况,确保公共卫生安全和防疫措施的落实。以下是关于不戴口罩检测算法的应用场景等详细…

JVM 调优篇8 调优案例5- 逃逸分析

一 逃逸分析 1.1 概念 逃逸分析的基本行为就是分析对象动态作用域:当一个对象在方法中被定义后,对象只在方法内部使用,则认为没有发生逃逸。当一个对象在方法中被定义后,它被外部方法所引用,则认为发生逃逸。例如作为…

聊聊Thread Local Storage

聊聊ThreadLocal 为什么需要Thread Local StorageThread Local Storage的实现PThread库实现操作系统实现GCC __thread关键字实现C11 thread_local实现JAVA ThreadLocal实现 Thread Local Storage 线程局部存储,简称TLS。 为什么需要Thread Local Storage 变量分为全…

ubuntu中Python解释器位置

在Ubuntu系统中,Python解释器通常位于/usr/bin/python或者/usr/bin/python3。 ls /usr/bin/python* 你查python版本可能不是3.10 但是你程序使用如下解释器配置即可运行访问 #!/usr/bin/python3.10 #-*- coding:UTF-8 -*-

前端vue-ref与document.querySelector的对比

ref只在本组件中查找,而document.querySelector是在整个页面查找

一文说清楚ETL与Kafka如何实现集成

ETL与Kafka为何需要集成? 随着企业对实时流数据的处理要求越来越高,很多企业都把实时流数(日志、实时CDC采集数据、设备数据…)先推入到kafka中,再通过ETL对kafka中的数据进行消费通过ETL强大的数据的转换、清洗功能来进行数据的集成与分发。 实时数据…

Qt日志输出及QsLog日志库

目录 Qt日志输出及QsLog日志库日志输出格式化日志普通格式化条件格式化环境变量设置格式化日志输出位置日志输出对象信息禁用输出 QsLog日志库使用方法1. 将QsLog目录添加到项目中2. 配置CMakeLists.txt文件3. 配置.pro文件4. 日志记录器的配置5. 运行程序6. 启用行号和文件名C…

新通话,新突破!菊风荣获第七届“绽放杯”5G消息与新通话专题赛二等奖!

2024年9月9日,由中国信息通信研究院、中国通信企业协会主办的第七届“绽放杯”5G应用征集大赛5G消息及新通话专题赛决赛及颁奖仪式在西安富力希尔顿酒店成功举办。 PART 1 菊风荣获「绽放杯」二等奖 实力见证 荣耀加冕 经过初赛、复赛、决赛的层层选拔&#xff0c…

Prometheus - nVisual插件让运维更轻松

Prometheus 是一个开源的服务监控系统和时间序列数据库,常用于对基础设施的监控,监控范围涵盖了硬件层、操作系统层、中间件层、应用层等运维所需的所有监控指标类型,同时可利用第三方可视化工具Grafana实现时序数据的展示。然而,…

深度学习笔记17_TensorFlow实现咖啡豆识别

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制 一、我的环境 1.语言环境:Python 3.9 2.编译器:Pycharm 3.深度学习环境:TensorFlow 2.10.0 二、GPU设置…

96 kHz、24bit 立体声音频ADC芯片GC5358描述

概述: GC5358 是一款高性能、宽采样率、立体声音频模数转换器。其采样率范围是8KHz~96KHz,非常适合从消费级到专业级的音频应用系统。单端模拟输入不需要外围器件。GC5358 音频有两种数据格式:MSB对齐和 I2S 格式,和各种如 DTV、D…

移动技术开发:简单文本编辑器

1 实验名称 简单文本编辑器 2 实验目的 掌握基本布局管理器的使用方法和基本控件的使用方法&#xff0c;以及事件监听处理的使用方法 3 实验源代码 布局文件代码&#xff1a; <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:an…

Elasticsearch:检索增强生成背后的重要思想

作者&#xff1a;来自 Elastic Jessica L. Moszkowicz 星期天晚上 10 点&#xff0c;我九年级的女儿哭着冲进我的房间。她说她对代数一无所知&#xff0c;注定要失败。我进入超级妈妈模式&#xff0c;却发现我一点高中数学知识都不记得了。于是&#xff0c;我做了任何一位超级妈…