• Linux进程优先级与环境变量初识


    🧸🧸🧸各位大佬大家好,我是猪皮兄弟🧸🧸🧸
    在这里插入图片描述

    一、进程优先级

    优先级就是用来确认谁先莫得某种资源,谁后获得(由调度器通过调度算法调度)
    因为CPU是有限的,进程太多,需要通过某种方式竞争资源,所以有优先级

    二、Linux具体的优先级做法

    优先级 = 老的优先级 + nice值

    ps -al   //查看登录的这个会话当中相关的进程
    

    ps -al 才看得到优先级和nice值
    在这里插入图片描述

    PRI 和 NI

    PRI 就是priority 优先级
    就是被CPU执行的先后顺序,值越小,优先级越高,越先被执行
    NI 就是 nice值
    NI表示进程可被执行的优先级的修正数值
    PRI(new)=PRI(old)+nice
    当nice的值为负值的时候,程序的优先级值将会变小,优先级变高

    调整进程优先级,在Linux下,就是调整进程的NI(nice值)
    nice的取值范围是-20~19,一共40个级别
    进程的NI不是进程的优先级,他们并不是一个概念,但是进程nice值会影响到进程的优先级变化,也就是说NI是进程优先级的修正数据

    优先级的调整操作

    打开Linux任务管理器top
    输入r就可以重新修改NI值来对优先级进行修改
    在这里插入图片描述
    首先输入PID,然后回车后会提示对某进程重新赋值
    在这里插入图片描述
    如果系统不让把优先级调高(PRI变低)
    sudo top以管理员的身份打开
    一个进程的老的PRI是不会被改变的,都只是用NI去修正新来获得新的PRI,因为要调度平衡,不能一直先调用某一进程的不公平问题,所以优秀的OS,NI的改变都不会很大

    三、其他概念

    1.竞争性:系统进程数目中哪个多,而CPU资源只有少量,甚至一个,所以进程之间是具有竞争性的,为了高效完成任务,更合理竞争相关资源,便有了优先级

    2.独立性:进程具有独立性,多进程开发,需要独享各种资源,多进程运行期间互不干扰,就算一个进程崩掉了,而且需要和其他进程共享资源,也几乎不会影响,包括父子进程,就是因为互不影响,才回去创建子进程

    3.并行:多个进程在多个CPU下分别,同时进行,这就叫做并行(普通的电脑上只有一个CPU,像服务器那些就有多个CPU)

    4.并发:多个进程在一个CPU下采用进程切换的方式(特别快),在一段时间内,让多个进程都得以推进,称之为并发

    CPU去调度进程并不是说一个进程执行完之后才去执行下一个进程,不然的话写一个死循环就可以黑掉这台计算机,所以有进程切换,而这个过程特别快,比如开了 多个软件,并不是说他在同时运行,而是在 一个时间段内都在向前推进,这就可以看出CPU的进程切换是很快很快的

    1.时间片:给一个进程固定执行的时间,执行得了多少是随机的,执行不完先去排队,等会儿再来,先让其他进程执行。
    2.抢占与退让:有可能这个时间片没到我就执行完了,所以出让,优先级更高的进程进行抢占,所以可以在一个时间段内较为均衡的占用CPU的资源

    切换:CPU内有非常多的寄存器
    如进程A、B
    如果进程A正在被运行,CPU内的寄存器里面,一定保存的时进程A的临时数据,临时数据存在的时候,这个数据就叫做进程A的上下文数据,上下文数据是绝对不可以丢弃的。如果上下文数据丢弃,进程也就无法运行了(因为CPU内的寄存器只有一份(多个),当时间片到了,或者被抢占(暂时切换下来),进程A就要带着自己的上下文数据走,带走暂时保存的目的就是为了下次回来的时候能恢复上去,就能按照之前的逻辑继续向后推进,就如同没有中断过一样)

    四、环境变量

    环境变量(environment variables)
    一般是指在操作系统中用来指定操作系统运行环境的一些参数

    比如:在编写C/C++代码,链接的时候,从来不知道我们所链接的静态库在哪里,但是还是照样链接成功,生成可执行程序,原因就是有相关环境变量帮助编译器进行查找。
    环境变量通常具有某些特殊用途,还有在系统当中通常具有的全局属性

    配置临时环境变量

    运行系统命令时就可以不带路径,而执行我自己写的程序时就必须带路径,如果不想带,那么我们就可以给他配置环境变量

    PATH就是一个环境变量名,环境变量不止PATH
    取变量名需要带上$ 比如 echo $PATH
    在这里插入图片描述
    可以看出,配置的PATH环境变量是以 : 冒号分割的

    pwd   //获得路径
    export PATH=$PATH:路径   //就配置好了临时的环境变量
    

    这样就可以修改PATH并且重新赋值给PATH,这样配置下一次登录就失效了
    Linux的export用于设置环境变量

    如果想永久的配置,那么只能改系统当中的配置文件

    查看环境变量

    env(environment)查看环境变量
    在这里插入图片描述

    查看家目录的环境变量echo $HOME
    查看SHELL外壳程序的环境变量echo $SHELL

    在这里插入图片描述

  • 相关阅读:
    Vue计算属性 computed
    mybatis-plus使用sql的date_format()函数来查询数据
    京东数据平台:2023年服饰行业销售数据分析
    操作系统面试题汇总(不定期更新)
    数据结构--宽度优先搜索
    leetcode刷题笔记/代码随想录笔记——移除字符串中多余空格
    LeetCode 513找树左下角的值 112路径总和113路径总和ii 106从中序与后序遍历序列构造二叉树
    Kubernetes学习笔记-kubernetes API服务器的安全防护(1)了解认证机制20220813
    缓存中间件-Redis(二)
    APM电机输出逻辑之二
  • 原文地址:https://blog.csdn.net/zhu_pi_xx/article/details/127079981