Linux-环境变量-进程虚拟地址空间-页表的分页式&分段式&段页式

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 段页式

虚拟地址:段号+页号+页内偏移
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43580319/article/details/115125732
今日推荐