首页 > 系统相关 >秒懂:进程优先级

秒懂:进程优先级

时间:2024-09-08 17:50:18浏览次数:13  
标签:插队 优先级 排队 进程 CPU 资源

1.概念

      简单来说,进程优先级是对于资源访问顺序来说的,谁先访问资源,谁的优先级就高。

      注意:这和权限概念不一样,权限是能不能访问。

2.情景引入

进程的运行,是在CPU上执行,每次执行只能执行CPU的一个时间片,会有多个进程在run_Queue运行队列上等待CPU。

 

不同的进程PCB在run_Queue中等待CPU资源,在CPU中执行,然后再回到run_Queue中继续等待CPU资源,这样进程循环不断的等待与执行,就是进程运行的基本逻辑。

022cbc155c8940c4a561ef9b68d53c50.png

进程在运行队列中等待的过程,本质其实是各个进程在排队的过程。

就像在食堂打饭,在单位领取福利,有半路插队的情况,有的人可以优先打到饭,可以优先领到福利,有的人却一直被插队,只能很后面打到饭或领到福利。插队的人通常可以走后门,权势高于其他队中的人,或者武力值很高,谁都惹不起,所以他们可以插队。相对的,相较队中,体更弱的人,更没有什么权势的人,就只能被插队,排到后面去,较晚才能领到资源。

进程在运行队列里排队领取CPU资源的过程也是这样的。

在进程排队的过程中,衡量谁先后领到资源的标准进程的优先级。优先级高的进程可以在运行队列排队过程中"优先"领到CPU资源;优先级低的进程,则是会被"插队",相对靠后享受到CPU资源。

3.为什么会有进程优先级

        因为计算机的资源是有限的,但是运行队列中的进程是多个的,而且它们之间竞争性很大的,操作系统必须保证良性竞争,所以要确立优先级。

3.1 情景解析:

再比如在食堂,我们作为学生需要在有限的窗口中,排队打饭。因为我们不可能给每一个学生都开一个窗口,不可能给每一个学生都开一个小灶,当然如果每个学生都开一个小灶的话,此时优先级就失去意义了,因为此时不需要排队了,人人平等,没有谁先谁后接受资源一说了。但是现实中,我们在一层食堂中,也就开20个窗口,为什么不给所有学生都开一个窗口呢?因为我们的资源太少了!我们没有足够的资源开几千个的打饭窗口。所以20个窗口需要好几千的学生进行排队打饭,而排队就存在优先级谁先谁后接收资源的问题,就存在插队被插队的问题。

所以优先级的本质其实是分配资源的一种方式!!!

其实不止CPU资源的分配,还有网卡资源,硬盘资源等待,都需要对多个进程进行分配。分配就需要有排队,排队过程就需要队列和谁先谁后的凭据。

所以我们有CPU资源的运行队列,有网卡,硬盘资源的等待队列,来供多个进程进行排队申领;所以我们的每个进程PCB中都有一个叫优先级的字段,来确认这个进程可以先/后申请到某种资源。

3.2 注意:

        如果进程长时间得不到cpu资源,该进程代码长时间得不到推进,就会产生进程饥饿问题。

 

 

标签:插队,优先级,排队,进程,CPU,资源
From: https://blog.csdn.net/weixin_73964834/article/details/141783533

相关文章

  • 网络属性及相关配置工具\shel脚本编程-进阶 \进程-系统性能和计划任务
    一、通过网络配置命令让主机上网1.查看网络接口信息:  -`ipa`或者`ifconfig`显示系统中所有网络接口的详细信息,包括IP地址、子网掩码、MAC地址等。2.配置IP地址、子网掩码、网关和DNS:  -IP地址:使用`ifconfig`或`ipaa`命令来设置IP地址。例如,`ifconfig......
  • ROS - 一个进程中创建多个ROS节点
    文章目录1、概述2、方法1:创建多个命名空间3、方法2:使用多线程4、方法3:节点间通信(分离进程)4、实际验证不可行方案1:两次调用ros::init1、概述在ROS(RobotOperatingSystem)中,每个进程通常只能通过ros::init初始化一个节点。ROS的设计是基于一个进程对应一......
  • Linux高效进程控制的实战技巧
    Linux高效进程控制的实战技巧Linux是一种开源的Unix-like操作系统内核,由林纳斯·托瓦兹(LinusTorvalds)于1991年首次发布。Linux以其稳定性、安全性和灵活性而著称,广泛应用于服务器、桌面、嵌入式系统等多个领域。在Linux系统编程中,进程管理是核心部分之一,它涉及到如何创建......
  • 进程间通信-进程池
    目录理解​完整代码 完善代码 回收子进程:​ 不回收子进程:子进程使用重定向优化理解#include<iostream>#include<unistd.h>#include<string>#include<vector>#include<sys/types.h>voidwork(intrfd){}//masterclassChannel{private:i......
  • shell脚本监控一个进程号,进程号没有就输出error
    你可以使用一个简单的Shell脚本来监控进程号(PID),如果进程不存在则输出error。以下是一个示例脚本:#!/bin/bash#输入要监控的进程号pid=$1#检查进程是否存在ifps-p$pid>/dev/nullthenecho"Process$pidisrunning."elseecho"error:Process$pid......
  • kswapd0进程占用cpu非常高
    早上,遇到一起故障,调查显示kswapd0进程的内存使用率很高,系统负载从平时的0.x升高到了260多。查到原因是,同事代码逻辑错误,不断的死循环向表里面添加数据,记录数达到了2.7千万。然后对该表altertableaddindexxxx,导致了mysqld内存不断的膨胀,导致需要使用到了swap分区的虚拟内存,然......
  • Java并发编程实战 06 | 为什么不建议使用线程优先级?
    什么是线程优先级?线程优先级是一个标识,用来提示操作系统或线程调度器哪个线程更重要、更需要优先执行。优先级通常是一个整数值。在Java中,线程优先级的设置范围从1到10,其中1是最低优先级,10是最高优先级。Java默认情况下,线程的优先级是5。优先级高的线程通常会......
  • Linux中的进程优先级与设置方法
    在Linux系统中,进程优先级是影响进程调度的重要因素。进程优先级决定了操作系统在多任务环境中分配CPU时间的方式。以下是关于Linux中进程优先级的详细介绍及其设置方法。1.进程优先级概述优先级范围:Linux中的优先级通常使用一个值来表示,范围从0到139:实时优先级:范......
  • 什么是进程中断
    进程中断是指在操作系统中,当前正在执行的进程被暂时挂起或中止,以便处理某种特定事件或条件。这种机制允许操作系统在多个进程之间进行切换,确保系统能够响应外部事件或高优先级的任务。以下是对进程中断的详细解释:1.中断的类型硬件中断:由外部设备(如键盘、鼠标、网络适配器等)发......
  • 什么是不可中断进程
    不可中断进程(UninterruptibleProcess)是指在某些情况下,进程无法被外部中断信号(如硬中断或软件中断)打断或终止。这种状态通常与特定的内核操作有关,比如等待I/O操作的完成。以下是对不可中断进程的详细解释:1.不可中断进程的特征状态:不可中断进程通常处于D状态(Uninterruptibl......