【Linux】进程周边003之进程优先级

2023-12-16

???? 樊梓慕: 个人主页

???? 个人专栏: 《C语言》 《数据结构》 《蓝桥杯试题》 《LeetCode刷题笔记》 《实训项目》 《C++》 《Linux》

???? 每一个不曾起舞的日子,都是对生命的辜负


目录

前言

1.基本概念

2.PRI与NI

3.利用top命令更改已存在进程的nice值

4.通过renice命令更改进程的nice值

5.四个重要概念


前言

本篇文章博主将会讲解进程优先级的概念,我们知道一个CPU只能同时运行一个进程,而进程是由很多个的,所以需要存在进程优先级来确定进程获取CPU资源的顺序。

欢迎大家???? 收藏 ????以便未来做题时可以快速找到思路,巧妙的方法可以事半功倍。

=========================================================================

GITEE相关代码: ???? fanfei_c的仓库 ????

=========================================================================


1.基本概念

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

在Linux系统中,利用ps -l命令来查看系统进程:

  • UID : 代表执行者的身份
  • PRI :代表这个进程可被执行的优先级,其值越小越早被执行
  • NI :代表这个进程的nice值

2.PRI与NI

  • PRI的值所代表的就是进程的优先级,PRI值越小,优先级越高。
  • NI即为nice值,表示进程优先级的修正数值。

即PRI(new)=PRI(old)+nice

注意:PRI(old)都是80

在Linux中,初始进程优先级默认为80,NI默认为0.

注意nice可为负,所以我们可以通过调整nice值得方式来调整进程优先级。

  • PRI取值范围[60,99]
  • nice值取值范围[-20,19]

???? 思考:Linux调整优先级为什么是要受限制的? ????

如果不限制,谁都想要让自己进程的优先级高,别人的优先级低。

那就会导致有的人会将进程优先级设置的非常高。

优先级较高的进程优先得到资源,那后续产生的常规进程就很难享受到CPU资源。

这个问题被称为:进程饥饿。

请注意:任何 分时操作系统 ,都要保证进程调度上较为公平的进行。

但还有另外一种 实时操作系统 ,就不能是这种基于时间片轮转的方式进行了,具体的内容大家可以看博主进程周边系列的下一篇文章:进程的调度与切换。


3.利用top命令更改已存在进程的nice值

top命令可以理解为Windows系统中的任务管理器,它能够动态实时的显示系统当中进程的资源占用情况。

那如何利用top命令更改进程nice值呢?

进入top后按"r"->输入进程PID->输入nice值

  1. top
  2. "r"
  3. 输入进程PID
  4. 输入nice值
  5. 按q退出,ps -al查看下优先级是否更改

注意:若是想将NI值调为负值,也就是调高进程的优先级,需要使用sudo命令提升权限。


4.通过renice命令更改进程的nice值

实例:renice nice pid

同样的:如果要调高优先级,即nice值为负需要sudo。

如:


5.四个重要概念

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

=========================================================================

如果你对该系列文章有兴趣的话,欢迎持续关注博主动态,博主会持续输出优质内容

????博主很需要大家的支持,你的支持是我创作的不竭动力????

???? ~ 点赞收藏+关注 ~ ????

=========================================================================

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Linux】进程周边003之进程优先级 的相关文章

  • 如何回忆上一个 bash 命令的参数?

    Bash 有没有办法回忆上一个命令的参数 我通常这样做vi file c其次是gcc file c Bash 有没有办法回忆上一个命令的参数 您可以使用 or 调用上一个命令的最后一个参数 Also Alt can be used to r
  • 使用 --prof 选项创建多个日志文件而不是一个 v8.log 的节点

    我正在尝试使用 prof 选项来分析我的 Node 应用程序 但我发现不是一个单一的 v8 log 文件 而是使用诸如isolate 0x9582b40 v8 log isolate 0xa1cab78 v8 6049 等前缀创建的多个文件
  • 如何使用 VSCode 调试 Linux 核心转储?

    我故意从我使用 VSCode 编写的 C 应用程序生成核心转储 我不知道如何调试核心转储 有没有人愿意分享这方面的经验 更新 我相信我现在已经可以使用了 我为核心文件创建了第二个调试配置 我需要添加指向生成的转储文件的 coreDumpPa
  • 如果输入被重定向则执行操作

    我想知道如果我的输入被重定向 我应该如何在 C 程序中执行操作 例如 假设我有已编译的程序 prog 并且我将输入 input txt 重定向到它 我这样做 prog lt input txt 我如何在代码中检测到这一点 一般来说 您无法判
  • 如何在 bash_profile 文件中添加导出语句?

    我正在尝试了解是否必须添加导出语句来在 bash profile 文件中设置变量 我该怎么做呢 例如 如果我必须添加 export AX name 那么我应该将其简单地写在文件末尾还是我还需要编写其他内容 简单写一下export AS na
  • C++ Linux GCC 应用程序中的 GUID

    我有很多服务器运行这个 Linux 应用程序 我希望他们能够生成一个碰撞概率较低的 GUID 我确信我可以从 dev urandom 中提取 128 个字节 这可能没问题 但是有没有一种简单易用的方法来生成与 Win32 更等效的 GUID
  • 在 MacOS 上构建需要 net461 的 dotnet SDK 项目的最简单方法

    我有一个 dotnet SDK sln and a build proj with
  • 点击界面没有出现

    我决定添加一个点击界面并在我的代码中使用它 但我能够得到它的状态 sudo ip f link tuntap add tap10 mode tap sudo ip link set tap10 up 之后当我执行 ip link 时 tap
  • 如何使用 PyAudio 选择特定的输入设备

    通过 PyAudio 录制音频时 如何指定要使用的确切输入设备 我的电脑有两个麦克风 一个内置 一个通过 USB 我想使用 USB 麦克风进行录音 这流类 https people csail mit edu hubert pyaudio
  • 在 Windows / Linux 中创建 Mac 包

    我自己努力制作一个 r 包 我按照 stackoverflow 中上一个问题的说明进行操作如何为外行开发软件包 http cran r project org bin windows Rtools 以下是我根据上一个问题采取的步骤 在新的
  • 进程如何知道它已收到信号

    如果我错了 请纠正我 以下是我对信号的理解 据我所知 信号生成 和信号传递有2个不同 事物 为了产生信号 操作系统只是在位数组中设置一个位 在过程控制中维护 工艺块 PCB 每一位 对应于特定信号 当设置一个位时 这意味着 该位对应的信号为
  • 为什么我的代码在编译用于分析 (-pg) 时在多线程下运行比在单线程下运行慢?

    我正在写一个光线追踪器 最近 我在程序中添加了线程 以利用 i5 四核上的附加内核 奇怪的是 应用程序的调试版本现在运行速度变慢 但优化后的构建运行速度比添加线程之前更快 我将 g pg 标志传递给 gcc 以进行调试构建 并将 O3 标志
  • X 按键/释放事件捕获,与焦点窗口无关

    我想记录所有传入的按键事件 无论哪个窗口处于焦点状态或指针位于何处 我编写了一个示例代码 它应该捕获当前焦点窗口的按键事件 include
  • tar.gz 和 tgz 是同一个东西吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我创建了 tgz 文件tar czvf filecommand then 我最终得到了一个 tgz 文件 我想知道它和tar gz 之间的
  • 使用 hcitool 扫描低功耗蓝牙?

    当我运行此命令时 BLE 设备扫描仅持续 5 秒 sudo timeout 5s hcitool i hci0 lescan 输出显示在终端屏幕中 但是 当我将输出重定向到文件以保存广告设备的地址时 每次运行该命令时 我都会发现该文件是空的
  • ARM 的内核 Oops 页面错误错误代码

    Oops 之后的错误代码给出了有关 ARM EX 中的恐慌的信息 Oops 17 1 PREEMPT SMP在这种情况下 17 给出了信息 在 x86 中它代表 bit 0 0 no page found 1 protection faul
  • Linux 阻塞与非阻塞串行读取

    I have 这段代码 https stackoverflow com questions 6947413 how to open read and write from serial port in c用于在Linux中从串行读取 但我不
  • 为什么“script”命令会生成 ^[ 和 ^M 字符以及如何使用 vim 搜索和替换删除它们?

    在linux上 使用bash shell 当我使用script命令时 生成的文件称为typescript 当我用 vim 打开该文件时 每一行都包含 M字符 并且有几行 由于我的彩色命令提示符 包含一个字符 我想用任何东西替换这些字符 从而
  • 如何获取 bash 中从 Ping 接收到的数据包的百分比?

    当 ping 主机时 我希望输出仅显示收到的数据包 已发送 5 个 的百分比 我想我需要使用grep不知怎的 但我不知道如何 我是 bash 编程的新手 这是我所在的地方 ping c 5 q host grep grep 中应该包含什么
  • 如何清理 Runtime.exec() 中使用的用户输入?

    我需要通过命令行调用自定义脚本 这些脚本需要很少的参数并在 Linux 机器上调用 当前版本容易出现各种shell注入 如何清理用户给出的参数 参数包括登录名和路径 Unix 或 Windows 路径 用户应该能够输入任何可能的路径 该路径

随机推荐

  • 如何进行代码混淆?方法与常见工具介绍

    如何进行代码混淆 方法与常见工具介绍 目录 什么是代码混淆 代码混淆的方法 常见代码混淆工具 什么是代码混淆 代码混淆是指将计算机程序的代码转换成一种功能上等价 但难于阅读和理解的形式的行为 混淆后的代码很难被反编译 即使反编译成功也很难得
  • 华为OD机试真题-快递员的烦恼-2023年OD统一考试(C卷)

    题目描述 快递公司每日早晨 给每位快递员推送需要送到客户手中的快递以及路线信息 快递员自己又查找了一些客户与客户之间的路线距离信息 请你依据这些信息 给快递员设计一条最短路径 告诉他最短路径的距离 注意 1 不限制快递包裹送到客户手中的顺序
  • 产品经理必掌握自定义元件&流程图&泳道图

    艳艳耶 个人主页 个人专栏 越努力 越幸运 目录 一 什么是自定义元件 1 1如何自定义元件 二 什么是流程图 泳道图 2 1什么是流程图 2 2如何画流程图 2 3什么是泳道图 2 4如何画泳道图 三 流程图和泳道图的区别 四 流程图案列
  • 评论送书:一本书讲透Java线程:原理与实践

    摘要 互联网的每一个角落 无论是大型电商平台的秒杀活动 社交平台的实时消息推送 还是在线视频平台的流量洪峰 背后都离不开多线程技术的支持 在数字化转型的过程中 高并发 高性能是衡量系统性能的核心指标 越来越多的公司对从业人员的多线程编程能力
  • 解决ps找不到MSVCP140.dll的5种方法,完美解决

    在计算机使用过程中 我们经常会遇到一些错误提示 其中之一就是 找不到MSVCP140 dll 这个问题通常出现在安装Adobe Photoshop 简称PS 时 MSVCP140 dll是Microsoft Visual C 2015 Re
  • 【Linux】公网远程访问AMH服务器管理面板

    目录 1 Linux 安装AMH 面板 2 本地访问AMH 面板 3 Linux安装Cpolar 4 配置AMH面板公网地址 5 远程访问AMH面板 6 固定AMH面板公网地址 AMH 是一款基于 Linux 系统的
  • 2023年度盘点:AIGC、AGI、GhatGPT、人工智能大模型必读书单

    文末送书 今天推荐几本AIGC AGI GhatGPT 人工智能大模型领域优质书籍 前言 2023年是人工智能大语言模型大爆发的一年 一些概念和英文缩写也在这一年里集中出现 很容易混淆 甚至把人搞懵 LLM Large Language M
  • ADS Via Designer 快速建模举例

    如何快速地对设计中的差分过孔进行建模 是layout前仿真中经常遇到的问题 好在目前主流的仿真软件都提供了独立的过孔建模向导 可以很方便地进行操作 本文以ADS提供的Via Designer向导为例 展示如何快速完成过孔的建模操作 以下图所
  • 代码混淆技术探究与工具选择

    代码混淆技术探究与工具选择 引言 在软件开发中 保护程序代码的安全性是至关重要的一环 代码混淆 Obfuscated code 作为一种常见的保护手段 通过将代码转换成难以理解的形式来提升应用被逆向破解的难度 本文将介绍代码混淆的概念 方法
  • 2023自动化测试框架的设计原则你都知道吗?快来看!

    1 代码规范 测试框架随着业务推进 必然会涉及代码的二次开发 所以代码编写应符合通用规范 代码命名符合业界标准 并且代码层次清晰 特别在大型项目 多人协作型项目中 如果代码没有良好的规范 那么整个框架的代码会风格混杂 晦涩难懂 后续维护会很
  • 【Linux】系统初识之冯诺依曼体系结构与操作系统

    樊梓慕 个人主页 个人专栏 C语言 数据结构 蓝桥杯试题 LeetCode刷题笔记 实训项目 C Linux 每一个不曾起舞的日子 都是对生命的辜负 目录 前言 1 冯诺依曼体系结构 2 操作系统 OS 1 用户到操作系统再到底层是如何组织
  • 【教程】app备案流程简单三部曲即可完成

    APP备案流程包括以下步骤 1 开发者实名认证 在提交备案申请之前 开发者需要通过移动应用开发平台进行实名认证 这个步骤需要提供身份证号码 姓名 联系方式等信息 并上传相关证件照片或扫描件 2 应用信息登记 开发者需要在应用商店或应用发布平
  • 【Linux】进程周边002之进程状态

    樊梓慕 个人主页 个人专栏 C语言 数据结构 蓝桥杯试题 LeetCode刷题笔记 实训项目 C Linux 每一个不曾起舞的日子 都是对生命的辜负 目录 前言 1 什么是状态 1 1运行 1 2阻塞
  • C/C++查找算法-----------------------二分查找详解

    二分查找 定义 实例 定义 二分查找也称折半查找 搜索过程从数组的中间元素开始 如果中间元素正好是要查找的元素 则搜索过程结束 如果某一特定元素大于或者小于中间元素 则在数组大于或小于中间元素的那一半中查找 而且跟开始一样从中间元素开始比较
  • 华为OD机试真题-文本统计分析-2023年OD统一考试(C卷)

    题目描述 有一个文件 包含以一定规则写作的文本 请统计文件中包含的文本数量 规则如下 1 文本以 分隔 最后一条可以没有 但空文本不能算语句 比如 COMMAND A 只能算一条语句 注意 无字符 空白字符 制表符都算作 空 文本 2 文本
  • 华为OD机试真题-求幸存数之和-2023年OD统一考试(C卷)

    题目描述 给一个正整数列 nums 一个跳数 jump 及幸存数量 left 运算过程为 从索引为0的位置开始向后跳 中间跳过 J 个数字 命中索引为J 1的数字 该数被敲出 并从该点起跳 以此类推 直到幸存left个数为止 然后返回幸存数
  • 【教程】源代码加密、防泄密软件

    什么是代码混淆 代码混淆 是一种将应用程序二进制文件转换为功能上等价 但人类难于阅读和理解的行为 在编译 Dart 代码时 混淆会隐藏函数和类的名称 并用其他符号替代每个符号 从而使攻击者难以进行逆向工程 Flutter 的代码混淆功能仅在
  • Axure中动态面板使用及轮播图&多种登录方式&左侧导航栏之案列

    艳艳耶 个人主页 个人专栏 越努力 越幸运 目录 一 轮播图简介 1 什么是轮播图 2 轮播图有什么作用 3 轮播图有什么特点 4 轮播图适应范围 5 动态面板的入门教程 6 轮播图案列 二 多种方式登录 1 什么是多种方式 2 常见的多种
  • 2023年度盘点:智能汽车、自动驾驶、车联网必读书单

    文末送书 今天推荐几本自动驾驶领域优质书籍 前言 2023年 智能驾驶和新能源汽车行业仍然有着肉眼可见的新进展 自动驾驶技术继续尝试从辅助驾驶向自动驾驶的过渡 更重要的是相关技术成本的下降 根据 全球电动汽车展望2023 等行业报告 预计2
  • 【Linux】进程周边003之进程优先级

    樊梓慕 个人主页 个人专栏 C语言 数据结构 蓝桥杯试题 LeetCode刷题笔记 实训项目 C Linux 每一个不曾起舞的日子 都是对生命的辜负 目录 前言 1 基本概念 2 PRI与NI