椒江建设网站,大数据网站,广州市民政局网站建设,wordpress有点目录
进程的优先级
基本概念
如何查看优先级
PRI与NI
NI值的设置范围
NI值如何修改
修改方式一 #xff1a; 通过top指令修改优先级
修改方式二 #xff1a; 通过renice指令修改优先级
进程的四个重要概念
环境变量
基本概念
常见的环境变量
查看环境变量
三种…目录
进程的优先级
基本概念
如何查看优先级
PRI与NI
NI值的设置范围
NI值如何修改
修改方式一 通过top指令修改优先级
修改方式二 通过renice指令修改优先级
进程的四个重要概念
环境变量
基本概念
常见的环境变量
查看环境变量
三种环境变量的作用不建议修改
PATH
方式一 将我们的可执行文件放到PATH路径中
方式二 将我们当前的路径加入到PATH路径当中
HOME
SHELL
环境变量相关指令 环境变量的组织方式 main函数的参数
通过系统函数来获取环境变量 进程的优先级
基本概念 什么是进程优先级cpu资源分配的先后顺序 就是指进程的优先权priority 优先级存在的原因优先级存在的原因 本质上是因为资源的不足 在系统中表现为有多个进程却只有一个cpu
如何查看优先级
我们可以使用ps -l指令来查看进程
ps -l UID 执行者的身份IDPID 代表进程的代号PPID 代表父进程的代号PRI 代表进程的优先级NI 代表这个进程的nice值 用来修正进程的优先级
PRI与NI
PRI 是进程的优先级 就是(轻量级)进程被CPU执行的先后顺序 此值越小进程的优先级别越高NI 表示进程可被执行的优先级的修正数值PRI和NI值的关系符合下面的公式 PRInew PRI old NI当NI值为负值的时候 那么该程序将会优先级值将变小 优先级会变高调整进程优先级 就是调整进程的nice值nice的取值范围是 -20~19 一共四十个值
在Linux系统中 PRIold值默认为80 所以说Linux中 优先级为 PRInew 80 NI
NI值的设置范围
NI 的设置范围是固定的 必须是 -20~19 如果超出这个值 则设定的nice值会变为最接近这个区间的值
如果设定NI值为 -100 则它的值会被设置为 -20
如果设定NI值为100 则它的值会被设置为19 为什么NI值的范围被设置成这样子 因为操作系统要尽量保证每个进程的公平运行 如果我们可以随意将进程的优先级设置的很低那么操作系统就会倾向于执行这个进程 从而导致其他进程不能被很好的被cpu执行 所以说PRI值最好是在一个范围中
NI值如何修改
修改方式一 通过top指令修改优先级
top命令就相当于任务管理器
我们调用top命令之后会出来这样子的界面 按住 r 键 就可以输入需要调整NI值的进程PID 输入PID之后回车 再输入NI值 输入修改的NI值为15之后回车 按住q键 退出top 这是因为6646是5850的子进程 会继承父进程的代码和数据
修改方式二 通过renice指令修改优先级
指令为renice NI值 进程号 普通用户如果想要renice 需要使用sudo指令 临时提升权限
进程的四个重要概念
竞争性: 系统进程数目众多 而CPU资源只有少量 甚至1个 所以进程之间是具有竞争属性的 为了高效完成任务 更合理竞争相关资源 便具有了优先级独立性: 多进程运行 需要独享各种资源 多进程运行期间互不干扰并行: 多个进程在多个CPU下分别 同时运行 并发: 多个进程在一个CPU下采用进程切换的方式 在一段时间之内 让多个进程都得以推进 称之为并发
环境变量
基本概念 环境变量environment variables一般是指在操作系统中用来指定操作系统运行环境的一些参数 由于它是在操作系统中的 所以一般是全局变量
常见的环境变量
PATH 指定命令的搜索路径HOME 指定用户的主工作目录即用户登录到Linux系统中的默认所处目录SHELL 当前Shell它的值通常是/bin/bash
查看环境变量
echo $PATH 三种环境变量的作用不建议修改
PATH
为什么我们系统的可执行文件我们就可以直接执行 而我们自己编译的可执行文件却不可以
这个就是因为环境变量PATH的存在
自己的可执行文件之所以要指定位置的就是因为它们不在PATH路径中
方式一 将我们的可执行文件放到PATH路径中
方式二 将我们当前的路径加入到PATH路径当中
export PATH$PATH:路径
HOME SHELL
Linux操作系统当中所敲的各种命令 实际上需要由命令行解释器进行解释 而在Linux当中有许多种命令行解释器例如bash、sh 我们可以通过查看环境变量SHELL来知道自己当前所用的命令行解释器的种类
我们查看SHELL使用如下命令 环境变量相关指令 env 显示所有环境变量 set 显示本地定义的shell变量和环境变量 unset 清除环境变量 环境变量的组织方式
在linux中 环境变量是通过一张表组织起来的 如果我们使用c语言的知识去理解的话其实就是环境变量表就是一个二级指针
它指向一个一级指针数组 这里面放置着各种环境变量 最后的环境变量是NULL main函数的参数
main函数是有参数的
它一共有三个参数 分别是 argc argv envp
其中argv是一个指针 它指向一个数组 里面储存的是char*类型的数据 argc是一个整数 它标识着argv中有效元素的个数
下面的代码来验证 int main(int argc, char* argv[])
if(argc ! 2) { printf(Usage: %s -[a|h]\n, argv[0]); return 1; } if(strcmp(argv[1], -h) 0) { printf(hello world\n); } else if(strcmp(argv[1], -a) 0) { printf(hello all\n); } else { printf(hello\n); } return 0;可以通过边里获取环境变量
int main(int argc, char* argv[], char* env[])
{for(int i 0; env[i]; i) { printf(%d-%s\n, i, env[i]); } return 0;
} 还可以直接用二级指针 environ来获取环境变量
注意 libc 中定义的全局变量environ指向环境变量表 environ没有包含在任何头文件中 所以在使用时要用extern进行声明
extern char** environ;
for(int i 0; environ[i]; i)
{ printf(%d-%s\n, i, environ[i]);
}
通过系统函数来获取环境变量
可以使用getenv系统函数来查看环境变量
printf(PATH: %s\n, getenv(PATH));
printf(HOME: %s\n, getenv(HOME));
printf(SHELL: %s\n, getenv(SHELL));