【Linux】虚拟地址空间,页表,物理内存

目录

进程地址空间,页表,物理内存

什么叫作地址空间?

如何理解地址空间的区域划分?

地址空间结构体

为什么要有地址空间?

页表

cr3寄存器

权限标记位

位置标记位

其他


每个存储单元是一个字节,一共有2^32个字节,大概有4G。
栈往下走,堆往上走。
static修饰的局部变量编译的时候会被编译到全局数据区。

如下图,父子进程访问同一个变量,子进程修改了一下变量,如何做到同一个地址,却读到了不同的内容?

答:因为这个地址不是物理地址,这个地址是虚拟地址或线性地址,平时语言用的地址都是虚拟地址。

进程地址空间,页表,物理内存

创建父进程时,系统会创建对应的PCB,进程对应的代码和数据会加载到内存,同时PCB还能找到代码和数据。

创建父进程

实际上并没有这么简单,创建父进程后,有了PCB后,系统还要为该进程创建进程地址空间,页表。

进程用的地址是进程地址空间里面的虚拟地址。

页表存放的是虚拟地址和物理地址的映射。

假设定义一个变量,那么系统要在物理内存中为这个变量开辟一个空间,这个变量有一个物理地址和一个虚拟地址,进程通过页表将虚拟地址转成物理地址实现访问。

创建子进程

如果这个父进程创建了一个子进程,为了体现进程独立性,子进程会拷贝父进程的PCB,进程地址空间&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值