🧸🧸🧸各位大佬大家好,我是猪皮兄弟🧸🧸🧸
优先级就是用来确认谁先莫得某种资源,谁后获得(由调度器通过调度算法调度)
因为CPU是有限的,进程太多,需要通过某种方式竞争资源,所以有优先级
优先级 = 老的优先级 + nice值
ps -al //查看登录的这个会话当中相关的进程
ps -al 才看得到优先级和nice值
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