3.4.2.进程环境
3.4.2.1、环境变量: 操作系统里面的全局变量
(1)export命令查看环境变量
(2)进程环境表介绍.每一个进程中都有一份所有环境变量构成的一个表格,也就是说我们当前进程中可以直接使用这些环境变量。进程环境表其实是一个字符串数组,用environ 变量指向它。
(3)程序中通过 environ 全局变量使用环境变量
#include <stdio.h>
int main(void)
{
int i = 0;
//声明 就能用
extern char **environ;//环境变量是一个字符串 数组
while(NULL != environ[i])
{
printf("%s \n",environ[i]); // 二重指针,可以指向指针数组, 把envrion 所指向的所有环境变量字符串打印一遍
i++;
}
return 0;
}
运行结果:
XDG_VTNR 环境变量的名字
=7 就是环境变量的值
(4)我们写的程序中可以无条件直接使用系统中的环境变量,所以一旦程序中用到了环境变量那么程序就和操作系统环境有关了。
安装交叉环境编译链GCC, 需要导出环境变量。有些程序是和环境变量有关的
(5)获取指定环境变量函数getenv
setenv : 设置环境变量, 当前进程的环境变量,你只能删除你当前进程的环境变量
3.4.2.2、进程运行的虚拟地址空间
(1)操作系统中每个进程在独立地址空间中运行
每个进程都以为自己是唯一,分时复用,
(2)每个进程的逻辑地址空间均为4GB(32位系统)
(3)0-1G为OS, 1-4G为应用
(4)虚拟地址到物理地址空间的映射
(5)意义。进程隔离,提供多进程同时运行
运行地址 和 链接地址 相等
所有的应用程序都是从 0 地址(虚拟地址)开始的,
操作系统很重要的就是 虚拟地址 ,虚拟地址到物理地址的映射(linux 、windows)
RTOS 单片机的 每个task 都对应的一个物理地址