神秘的环境变量和进程地址空间

简答了解环境变量是什么

1概念

  • 一般是操作系统中用来指定操作系统的一些参数
  • 我们在编写C/C++代码时,链接时,在环境变量的帮助下链接动静态库。
  • 环境变量通常具有某种特殊用途,还在系统中具有全局特性。

1.1命令行参数

在bash的划分下,进程的内部拥有一张argv表,用来实现选项功能

main的命令行参数,是实现程序不同子功能的方法!!指令选项的实现原理。

2一个例子,一个环境变量

2.1要执行一个程序,必须先找到它。

bash通过PATH(环境变量)来找

2.2系统中存在环境变量,来帮助系统找到目标的二进制文件。

环境变量:PATH->系统中搜索指令的默认路径!!!

env查看环境变量(名称=内容)

1如何理解环境变量??存储的角度

执行指令的过程

执行一个指令"ls -a -b",bash先拿到,划分出命令行参数表

环境变量表,bash用它去找ls是否存在,存在,就创建子进程,并执行它。

2环境变量最开始从哪里来??

系统的相关配置文件来的!!!!

3认识更多的环境变量

4.获取环境变量的方法操作

4.1操作

export

4.2代码

方法一

方法二

方法三

5理解环境变量的特性

5.1环境变量具有全局性(可以被继承)

5.2两个理解

a本地变量不会被子进程继承,只能在bash内部使用!!(bash内部会记录两套变量 环境和本地)

b我们的环境变量是在谁里面???

bash里面

内建命令,bulit-in-command,不需要创建子进程,而是让bash亲自执行,自己调用函数或者系统调用。

程序地址空间

各个区域的对应情况

在栈和堆空间的中间有一段镂空的空间程序地址空间,不是内存

进程地址空间(虚拟地址空间)这是一个系统的概念,不是语言层的概念。

这里的地址是虚拟地址,(C/C++语言用到的所有地址都是虚拟地址)

1怎么解释上述问题呢

  • 1-1一个进程,一个虚拟地址空间。
  • 1-2一个进程,一套页表。
  • 1-3页表是用来做虚拟地址和物理地址的映射的

2虚拟地址和进程地址空间(3是什么?)

4怎么办

linux源码是怎么搞的呢?????

地址转换

  • 1无序变有序->因为页表映射的存在,程序在物理内存中理论上是可以在任意位置加载的。它可以将虚拟地址和物理地址进行映射,在进程视角所有内存分布都是有序的。
  • 2在地址转换过程中,对你的地址和操作进行合法性判定,进而保护了物理内存
  • a.什么是野指针
  • b.char*str="helloworld";*str="H";在字符常量区写入的时候就会奔溃??查找页表的时候权限拦截了。
  • 3让进程管理与内存管理,进行一定程序的解耦和

对于堆(这样零散分区的)我们是如何进行管理的

相关推荐
小新讲网安1 小时前
HTTP请求走私攻击实战:CL.TE与TE.CL绕过前端服务器全解析
服务器·前端·网络·web安全·http·架构·漏洞
桑榆4166 小时前
双系统(Windows + Ubuntu)安装流程
linux·windows·ubuntu
jerryinwuhan10 小时前
《系统部署与运维》开篇 课程介绍
运维
ltl12 小时前
实时 OS 巡礼:VxWorks、QNX、Zephyr 与 PREEMPT_RT
linux
我是谁??13 小时前
Ubuntu22.04更换清华源
linux·运维·服务器
圣殿骑士-Khtangc13 小时前
Go字符串高效拼接性能对比与底层原理分析
服务器·前端·golang
Shell运维手记13 小时前
Linux 常用基础命令学习笔记
linux·运维·笔记·学习·算法·github
朴马丁13 小时前
国际与国产PLM在精细化工赛道的布局:2026年主要厂商技术特色
大数据·运维·人工智能·流程行业plm·化工新材料
这个DBA有点耶14 小时前
数据库一体机架构演进:从硬件堆叠到软硬深度耦合
服务器·网络·数据库·硬件架构·运维开发·database·数据库架构
Elastic 中国社区官方博客15 小时前
Elasticsearch:使用 AI Agent 来创建 workflow
大数据·运维·人工智能·elasticsearch·搜索引擎·自动化·全文检索