柳州做网站价格,莱芜住房和城乡建设厅网站,网站建设需求报告,wordpress链接图像地址目录
一、寄存器
二、Linux2.6内核进程调度队列
#xff08;一#xff09;优先级
#xff08;二#xff09;活动队列
#xff08;三#xff09;过期队列
#xff08;四#xff09;active指针和expired指针
三、命令行参数
#xff08;一#xff09;举例一
一优先级
二活动队列
三过期队列
四active指针和expired指针
三、命令行参数
一举例一
二举例二
四、环境变量
一基本概念
二常见环境变量
三查看环境变量方法
四测试PATH
五和环境变量相关的命令
六通过系统调用获取或设置环境变量 一、寄存器
eax寄存器主要作用是用于存放函数的返回值同时也用于存放一些临时数据和进行算术运算
int Function() {int result 42;return result;
}eax 寄存器将会存放返回值 42
eip 寄存器它存储了当前正在执行的指令的内存地址也就是程序计数器。各个进程在CPU寄存器中形成的临时数据称为进程的上下文
二、Linux2.6内核进程调度队列
如果有多个CPU就要考虑进程个数的负载均衡问题
一优先级
普通优先级100139我们都是普通的优先级想想nice值的取值范围可与之对应实时优先级099不关心
二活动队列
时间片还没有结束的所有进程都按照优先级放在该队列nr_active: 总共有多少个运行状态的进程queue[140]: 一个元素就是一个进程队列相同优先级的进程按照FIFO规则进行排队调度,所以数组下标就是优先级从该结构中选择一个最合适的进程过程是怎么的呢
从0下表开始遍历queue[140]找到第一个非空队列该队列必定为优先级最高的队列拿到选中队列的第一个进程开始运行调度完成 遍历queue[140]时间复杂度是常数但还是太低效了
bitmap[5]:一共140个优先级一共140个进程队列为了提高查找非空队列的效率就可以用5*32个比特位表示队列是否为空这样便可以大大提高查找效率
三过期队列
过期队列和活动队列结构一模一样过期队列上放置的进程都是时间片耗尽的进程当活动队列上的进程都被处理完毕之后对过期队列的进程进行时间片重新计算
四active指针和expired指针
active指针永远指向活动队列expired指针永远指向过期队列可是活动队列上的进程会越来越少过期队列上的进程会越来越多因为进程时间片到期时一直都存在的。没关系在合适的时候只要能够交换active指针和expired指针的内容就相当于有具有了一批新的活动进程 三、命令行参数
一举例一
#includestdio.h
int main(int argc, char *argv[])
{ int i 0; for(;iargc;i) { printf(%d: %s\n,i,argv[i]); } return 0;
}
argcargument count表示传递给程序的命令行参数的数量包括程序名称本身argvargument vector是一个指向指针数组的指针其中每个指针指向一个包含命令行参数的字符串 二举例二
#includestdio.h
#includestdlib.h
int main(int argc, char* argv[])
{if (argc ! 4){printf(Use error\nUsage: %s op[-add|sub|mul|div] d1 d2\n, argv[0]); //argv[0], 会不会不存在呢return 1;}int x atoi(argv[2]);int y atoi(argv[3]);int result 0;// 你的程序一定有4个命令行参数第一个是程序名if (strcmp(argv[1], -add) 0){result x y;printf(%d%d%d\n, x, y, result);}else if (strcmp(argv[1], -sub) 0){result x - y;printf(%d-%d%d\n, x, y, result);}else if (strcmp(argv[1], -mul) 0){result x * y;printf(%d*%d%d\n, x, y, result);}else if (strcmp(argv[1], -div) 0){if (0 y) printf(%d/%derror! div zero\n, x, y);else printf(%d/%d%d\n, x, y, x / y);}else{printf(Use error, you should use right command line\nUsage: %s op[-add|sub|mul|div] d1 d2\n, argv[0]); //argv[0], 会不会不存在呢}return 0;}四、环境变量
一基本概念
环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数如我们在编写C/C代码的时候在链接的时候从来不知道我们的所链接的动态静态库在哪里但是照样可以链接成功生成可执行程序原因就是有相关环境变量帮助编译器进行查找。环境变量通常具有某些特殊用途还有在系统当中通常具有全局特性
二常见环境变量
PATH : 指定命令的搜索路径HOME : 指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目录)SHELL : 当前Shell,它的值通常是/bin/bash
三查看环境变量方法
echo $NAME //NAME:你的环境变量名称
四测试PATH
echo $PATH 五和环境变量相关的命令
echo: 显示某个环境变量值export: 设置一个新的环境变量env: 显示所有环境变量unset: 清除环境变量set: 显示本地定义的shell变量和环境变量 六通过系统调用获取或设置环境变量
#includestdio.h
#includestdlib.h
int main()
{ printf(%s\n,getenv(PATH)); return 0;
}