文章目录
1. 环境变量
1.1 概念
环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数
1.2 常见的环境变量
PATH:保存了可执行程序的搜索路径
SHELL:保存了命令行解释器的名称
HOME:保存了当前用户的家目录
1.3 查看环境变量
echo $[环境变量名称]
env
1.4 设置环境变量
固定范式:export[环境变量名称] = $[环境变量名]:[新增加的路径]
1.4.1 临时生效
执行在了命令行当中,只有在当前的终端当中生效
1.4.2 永久生效
~/.bashrc 或者 ~/.bash_profile: 环境变量文件
当新打开一个终端的时候,就会读取环境变量文件当中的内容,写到环境变量文件当中,每次启动终端时候,都会被加载。
source ~/.bashrc 或者 ~/.bash_profile
1.4.3 环境变量的代码验证
main函数的参数
命令行参数的个数也将可执行程序计算在内
char* env[]:组织格式
永远都在数组的最后一个元素存放一个NULL指针
1.4.4 通过getenv函数获取特定环境变量的值
char* getenv(const char* name)
参数:name:环境变量名称
返回值:环境变量的值
1.4.5 通过environ参数进行获取
environ:参数是c库当中定义的,程序员如果要使用,可以使用extern关键字进行使用,类型是:char**
2. 进程虚拟地址空间
进程虚拟地址空间,构成了进程的独立性,一个进程修改数据,不会影响另外一个进程。
同一个变量,地址相同,但其实是虚拟地址相同,内容不同,内容其实是被映射到不同的物理地址上了。
3. 分页式&分段式&段页式
程序员在代码当中看到地址并不是正常的物理内存地址,而是操作系统内核虚拟出来的地址,虚拟地址并不能够保存数据,保存数据是物理内存在保存的。那么,进程是如何通过虚拟地址找到物理内存的地址的?答案是页表。
3.1 分页式
将虚拟地址分成了一页一页的小块,将物理地址分成了一块块的小块,块的大小是4096字节。
虚拟地址:页号+页内偏移
0x12341234
页号:虚拟地址/块大小
页内偏移:虚拟地址%块大小
3.2 分段式
虚拟地址:段号+页内偏移
3.3 段页式
虚拟地址:段号+页号+页内偏移