环境变量和程序地址空间

一.环境变量

1.概念:系统用于定义环境运行的变量

2.查看环境变量

. env:查看全部环境变量

. echo $xxx:查看一个指定环境变量的内容

3.PATH是系统搜索指令的默认搜索路径

PAT=$PATH:路径 :可将指定路径添加到默认路径下

4.环境变量的名称=内容

5.理解环境变量:bash在系统中查看环境变量,bash进程启动后会形成一张环境变量表

6.环境变量最初从配置文件中获取

7.多种环境变量

. ehco $HOME:当前登录用户的主目录路径

. echo $SHELL:当前用户登录的shell解释器的路径

注:当注销并重新登陆后,SHELL会反映新的默认shell

. echo $USER:当前用户的路径

. echo $HISTSIZE:展示历史命令行数(至多1000行)

. echo $HOSTNAME:当前登录的主机名

. echo $PWD:当前工作路径

8.获取环境变量的方法

操作:

. export xxx=yyy:导入xxx环境变量

注:export命令叫做内建命令,他在执行的时候不会创建子进程,而是由bash亲自执行

. unset xxx:取消xxx环境变量

注:环境变量可以被子进程继承,环境变量在系统中通常具有全局性

<1>bash获取

<2>getenv("xxx"):函数获取指定环境变量的内容

<3>extern char** environ:使用声明,其中environ 是一个指向字符指针数组的指针,这个数组包含了当前进程的环境变量。

二.程序地址空间

1.程序的地址空间是虚拟地址

2.一个进程就有一个虚拟地址空间,一套页表(虚拟地址,物理地址,权限)

注:页表的作用是建立虚拟地址和物理地址映射关系,保证可通过进程的虚拟地址找到它应该在内存上的物理地址

3.虚拟地址本质上就是一个数据结构,在OS里就是mm_struct结构体,里面存储各个区域的起始和结束地址

4.为什么要有虚拟地址空间和页表?

<1>将地址从无序变得有序(通过页表的映射关系)

<2>转化地址的过程中,对地址和操作的合法性进行判断,从而保护物理内存(通过页表的权限栏查询,是否由进行某种操作的权限)

<3>让进程管理和内存管理进行一定程度的解耦合

5.如何理解进程具有独立性?

<1>内核结构具有独立性

<2>加载进入内存的代码和数据具有独立性

补:创建进程时先有task_struct,mm_struct等内核数据结构,对于进程可以不加载代码和数据,只有task_struct,mm_struct,页表等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值