1. 什么是优先级?
指定进程获取某种资源(CPU)的先后顺序;
Linux 中优先级数字越小,优先级越高;
1.1 优先级和权限的区别?
权限 : 能不能做
优先级: 已经能了,但是获取资源的顺序有差别
1.2 为什么要有优先级呢?
系统中访问的资源(CPU)有限,硬件资源有限(学校窗口打饭的例子);
肌饿问题的存在;
2. 优先级特点和查看方式
- 批量化修改指令
2.1 指令 : ps - l 和 ps - al
ps -l 显示当前终端下用户启动的进程
ps -al 查看全部的
2.2 进程 PRI 和 NI
因为当前的进程可能在被调度,被调度的时候优先级更改会影响当前的调度,所以时间片用完后,在下一轮的调度中再对优先级进行修改
2.3 优先级进行调整
用 top 命令 (还可以直接用 renice 指令)
进入top后按“r”–>输入进程PID–>输入nice值
- nice 的调整是有范围限制的 [-20,19] 40个数字进行调整,如果 nice 值为 -100 时,则会自动为 -20;
- 为什么要有范围呢? 因为如果 nice 值任意调整,如果调整到无穷大,则会影响CPU的调度;
-
注意: 每次进程调整的优先级都是从 80 开始调整的;
-
注意:❗ 优先级不要轻易调整
2.4 并发,竞争
竞争性: 系统进程数目众多,而CPU资源只有少量,甚至1个,所以进程之间是具有竞争属性的。为了高
效完成任务,更合理竞争相关资源,便具有了优先级 ( 键盘 鼠标 只有一个,竞争这些资源);
独立性: 多进程运行,需要独享各种资源,多进程运行期间互不干扰;
并行: 多个进程在多个CPU下分别,同时进行运行,这称之为并行;
并发: 多个进程在一个CPU下采用进程切换的方式,在一段时间之内,让多个进程都得以推进,称之为
并发
3. 命令行参数
argc : 数组中元素的个数
char* argv [ ] : 字符指针数组(指向字符串的首地址)
这个 char * argv [ ] 是以 NULL 结尾;
for ( int i = 0; argv [ i ]; i ++ ) 来证明以 NULL 结尾;
3.1 为什么有 这个 main() 函数的命令行参数 ? 有什么作用呢 ?
同一个程序,可以通过带不同的选项,执行不同的程序功能函数;
例如: ls -a , ls -l 执行不同的功能
3.2 argv 这个是谁来生成的呢?
-
由父进程 bash 来做的; 父进程 命令行解释器;
-
父进程会生成一个表,然后子进程可以看到父进程的数据,所以子进程通过查表,就可以转换为 -a, -b,-c 等不同选项了;