环境变量与进程优先级

目录

进程的优先级

什么是优先级

 为什么要有优先级

linux的优先级特点和查看方式

 其他概念

环境变量

命令行参数

 环境变量

查看环境变量方法

修改PATH 

其他环境变量 


进程的优先级

什么是优先级

优先级:指定进程获得某种资源的先后顺序。(优先级代表已经有相应的权限只不过获得资源的顺序不同)

linux中优先级数组越小,优先级越高

 为什么要有优先级

进程访问的资源(CPU)始终是有限的--(因为只有一个cpu,如果有多个cpu那么相应的进程也会多都是类似的)而系统中进程大部分情况都是有较多的

操作系统关于调度和优先级的原则:分时操作系统(基于时间片来进行调度的) ,多个进程在被调度的时候保证基本的公平,如果进程长时间得不到cpu的调度就造成了饥饿问题。

linux的优先级特点和查看方式

使用ps -al命令


UID : 代表执行者的身份
PID : 代表这个进程的代号
PPID :代表这个进程是由哪个进程发展衍生而来的,亦即父进程的代号
PRI :代表这个进程可被执行的优先级,其值越小越早被执行
NI :代表这个进程的nice值,进程优先级的修正数据,新的优先级=优先级+nice,达到对于进程优先级动态修改的过程。nice其取值范围是-20至19,一共40个级别
这样,当nice值为负值的时候,那么该程序将会优先级值将变小,即其优先级会变高,则其越快被执行,所以,调整进程优先级,在Linux下,就是调整进程nice值。

需要强调一点的是,进程的nice值不是进程的优先级,他们不是一个概念,但是进程nice值会影响到进 程的优先级变化

 用top命令更改已存在进程的nice:

 top:
进入top后按“r”–>输入进程PID–>输入nice值:

按r进入

我输入nice值100但是最后显示19说明nice有范围
需要注意的是每次调整优先级每次都是从80开始的(PRI)

 其他概念

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

环境变量

命令行参数

在我们的主函数main中可带参也可不带,例如:

int main(int a,char*s[]),s是字符串数组,a是长度,main函数最多三个参数

int main()

#include<stdio.h>
#include<unistd.h>
int main(int a,char*s[]){
    for(int i=0;i<a;i++){
        printf("a[%d]: %s\n",i,s[i]);
    }
return 0;
}

 ./mytest.exe -a -b -c叫做命令行字符串,第一个是程序的路径+可执行程序名后面叫做和该进程匹配的选项

为什么要有命令行参数?

本质:命令行参数本质是教给我们程序不同的选项,用来定制不同的程序功能。命令中带有很多的选项

就比如ls -l,ls-la等

命令行中启动的程序都会变成进程,其实都是bash进程的子进程,比如 ./mytest.exe是输入父进程bash的。因为bash进程就是命令行解释器

 环境变量

查看环境变量方法


echo $NAME //NAME:你的环境变量名称

 系统中有很多的配置,在我们登录Linux中时已经被加载到bash进程中(内存) 

为什么我们平常输入ls/pwd就行,而到我们得./xx.exe -x呢?
这是因为在Linux中存在一些全局变量,表明告诉命令行解释器应该去哪些途径下去寻找可执行程序。当然你也可以将自己的程序cp到指定的path下这样就不用./了但是不建议

添加方式

修改PATH 

对PATH修改:

1.直接覆盖修改,可能导致一些命令不能用,如果能跑说明不需要这个环境变量



这时候重新进入xshell进行,因为PATH是进入的时候加载到内存中的,自己有配置文件

2.追加,PTAH=$PATH:XXXX       XXX是追加的途径


这样就跟ls等命令一样不用加./了

再重新登录也会初始化说明最开始的环境变量不是在内存中,而是在系统的对应的配置文件中

 如果想一直保存则要修改配置文件

在bin后加:xxxxx即可

那么有一个问题?为什么我们安装java或者python都要我们安装环境变量,这是为什么呢?

主要原因是想通过环境变量直接找到我的可执行程序,不要让我带路径执行这样麻烦,并且可以让其他程序或脚本能够轻松地调用 Java 或 Python 程序。

其他环境变量 

env:显示所有环境变量

 export: 设置一个新的环境变量   export name=xxxx
 

 我导的环境变量在bash内的,没影响

unset: 清除环境变量    unset name

 理解environ:



可以看到环境变量可以被子进程拿到,说明环境变量不在子进程里,那么他在那里?默认在bash内部里。父进程的数据默认能被子进程看到并访问

 bash进程启动的时候,默认会给我子进程形成两张表:
argv[]命令行参数表(就是主函数main里的参数main(int a,char*argv[])),env[]环境变量表(从os的配置文件获得),bash通过各种方式交给子进程

env[]表

 比如export一个环境变量就是添加到env[]表里

理解:环境变量具有系统级的全局属性,因为环境变量本身会被子进程继承下去

 同样也可以这样获得环境变量:


getenv("xxx");----需要的环境变量name

需要stdlib.h头文件

 本地变量只在本bash内部有效,无法被子进程继承下去,导成环境变量,此时才能够被获取

echo export都是内建命令 不是子进程

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python数据分析案例40——电商直播间成交金额预测

承接上一篇案例电商直播间提取的特征&#xff0c;进而做一篇机器学习的案例&#xff0c;来预测直播间的成交金额。 Python数据分析案例39——电商直播间评论可视化分析&#xff08;LDA&#xff09; 1. 引言 1.1 直播电商与传统电商的比较 直播电商作为一种新兴的电子商务模式…

c语言中<string.h>的strstr与strtok函数

c语言中string.h的strstr与strtok函数 代码运行结果 代码 #include <stdio.h> #include <string.h>///1.在字符串str1里面,查找第一次出现str2的位置 //char * strstr(const char * str1,const char * str2)///2.sep为分割符,根据分割符来对str进行分割 //char * …

【WEEK7】 【DAY5】JDBC—PreparedStatement Object【English Version】

2024.4.12 Friday Following 【WEEK7】 【DAY4】JDBC—Statement Object【English Version】 Contents 10.3.PreparedStatement Object10.3.1.PreparedStatement can prevent SQL injection, more efficient than statement10.3.2. Insertion10.3.3. Deletion10.3.4. Update10.…

Windows版PHP7.4.9解压直用(免安装-绿色-项目打包直接使用)

安装版和解压版 区别 安装版: 安装方便&#xff0c;下一步------下一步就OK了&#xff0c;但重装系统更换环境又要重新来一遍&#xff0c;会特别麻烦解压版&#xff08;推荐&#xff09;&#xff1a; 这种方式&#xff08;项目打包特别方便&#xff09;能更深了解mysql的配置&…

C 408—《数据结构》易错考点200题(含解析)

目录 Δ前言 一、绪论 1.1 数据结构的基本概念 : 1.2 算法和算法评价 : 二、线性表 2.2 线性表的顺序表示 : 2.3 线性表的链式表示 : 三、栈、队列和数组 3.1 栈 3.2 队列 3.3 栈和队列的应用 3.4 数组和特殊矩阵 四、串 4.2 串的模式匹配 五、树与二叉树 5.1 树的基…

StarUML笔记之从UML图生成C++代码

StarUML笔记之从UML图生成C代码 —— 2024-04-14 文章目录 StarUML笔记之从UML图生成C代码1.Add Diagram2.在TOOLBOX中左键点击Class,松开,然后在中间画面再左键点击&#xff0c;即可出现UML3.修改类图&#xff0c;并添加接口&#xff0c;方法&#xff0c;属性&#xff0c;我…

超干!如何编写完美的Python命令行程序?

这篇文章将教你如何编写完美的 Python 命令行程序&#xff0c;提高团队的生产力&#xff0c;让大家的工作更舒适。 作为 Python 开发者&#xff0c;我们经常要编写命令行程序。比如在我的数据科学项目中&#xff0c;我要从命令行运行脚本来训练模型&#xff0c;以及计算算法的…

分享免费财务软件,比花钱买的还好用!

领取方式&#xff1a; 复制该链接在浏览器打开&#xff1a;网页链接扫码登陆。进入系统&#xff0c;创建账套即可直接使用&#xff0c;如图所示&#xff1a; 功能&#xff1a; 功能1、智能会计凭证&#xff1a;可以自动匹配科目、自动填充相应信息、检测到异常情况&#xff…

世界各国柴油价格22.7统计

数据详情介绍&#xff1a; 统计时间为2022年7月4日。在该月份&#xff0c;全球柴油的平均价格为每升1.43美元。然而&#xff0c;各国间存在明显的价格差异。一般而言&#xff0c;西欧等发达国家的价格基本在每升2美元以上&#xff1b;相反&#xff0c;像伊朗、委内瑞拉、利比亚…

设计模式代码实战-外观模式

1、问题描述 小明家的电源总开关控制了家里的三个设备&#xff1a;空调、台灯和电视机。每个设备都有独立的开关密码&#xff0c;分别用数字1、2和3表示。即输入1时&#xff0c;空调关闭&#xff0c;输入2时&#xff0c;台灯关闭&#xff0c;输入3时&#xff0c;电视机关闭&am…

聊聊jvm中内存模型的坑

jvm线程的内存模型 看图&#xff0c;简单来说线程中操作的变量是副本。在并发情况下&#xff0c;如果数据发生变更&#xff0c;副本的数据就变为脏数据。这个时候就会有并发问题。 参考&#xff1a;https://www.cnblogs.com/yeyang/p/12580682.html 怎么解决并发问题 解决的…

B端系统:控制台图表的十大常见类型,附精美案例

大家伙&#xff0c;我是大千UI工场&#xff0c;专注UI分享和项目接单&#xff0c;本期带来控制台图表的常见类型&#xff0c;欢迎大家关注、互动交流。 B端系统控制台的图表类型有很多种&#xff0c;常见的包括&#xff1a; 折线图&#xff1a;用于显示随时间变化的数据趋势&a…

CSS基础之伪类选择器(如果想知道CSS的伪类选择器知识点,那么只看这一篇就足够了!)

前言&#xff1a;学习CSS就必须要学习选择器&#xff0c;在之前我们已经学习了基本选择器和复合选择器&#xff0c;但是还有几个选择器没有学习&#xff0c;这篇文章主要讲解伪类选择器。 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-…

01 | 源码编译(Redis6.2.6源码CLion编译调试)

01 | 源码编译&#xff08;Redis6.2.6源码CLion编译调试&#xff09; C语言的运行和构建工具介绍Windows平台安装cygwin安装CLion并设置编译运行环境导入redis源码配置CMakeLists.txtredis根目录下配置CMakeLists.txt&#xff0c;文件内容如下&#xff1a; 构建redis源码报错问…

大数据信用报告中有高风险多久能清除?

很多人可能会听说过大数据信用&#xff0c;因为现在大数据信用已经是很多放贷机构进行风控审核的重要依据&#xff0c;那大数据信用报告中有高风险多久能清除呢?本文就详细为你介绍一下&#xff0c;希望对你了解大数据信用高风险有帮助。 大数据信用为什么会有高风险 大数据信…

面试官:实战中用过CountDownLatch吗?详细说一说,我:啊这...

写在开头 在很多的面经中都看到过提问 CountDownLatch 的问题&#xff0c;正好我们最近也在梳理学习AQS&#xff08;抽象队列同步器&#xff09;&#xff0c;而CountDownLatch又是其中典型的代表&#xff0c;我们今天就继续来学一下这个同步工具类&#xff01; CountDownLatc…

蓝桥杯基础18——第13届省赛真题与代码详解

目录 0.心得体会 1.题目如下 2.代码实现的思路 键值扫描 数码管窗口切换 数码管的动态扫描 继电器工作时L3闪烁&#xff0c;整点时刻L1灯光亮5秒 3.变量列表 定义的常量和数组 功能控制和状态变量 定时器和计数变量 4.代码参考 4.1 头文件 onewire.h ds1302.h 4…

funasr 麦克风实时流语音识别;模拟vad检测单独输出完整每句话

参考: https://github.com/alibaba-damo-academy/FunASR chunk_size 是用于流式传输延迟的配置。[0,10,5] 表示实时显示的粒度为 1060=600 毫秒,并且预测的向前信息为 560=300 毫秒。每个推理输入为 600 毫秒(采样点为 16000*0.6=960),输出为相应的文本。对于最后一个语音…

IntelliJ IDEA 2024 for Mac/Win:引领Java开发新纪元的高效集成环境

在日新月异的软件开发领域&#xff0c;一款高效、智能的集成开发环境&#xff08;IDE&#xff09;无疑是程序员们不可或缺的神兵利器。今天&#xff0c;我要为大家介绍的&#xff0c;正是这样一款集大成之作——IntelliJ IDEA 2024。无论是Mac用户还是Windows用户&#xff0c;只…

react query 学习笔记

文章目录 react query 学习笔记查询客户端 QueryClient获取查询客户端 useQueryClient异步重新请求数据 queryClient.fetchQuery /使查询失效 queryClient.invalidateQueries 与 重新请求数据queryClient.refetchQueries 查询 QueriesuseQuery查询配置对象查询的键值 Query Key…