Linux系统编程 - 02. CPU/MMU

存储介质:越向上,存储容量越小。

ALU只会加法运算,与左移运算。

CPU内部运算,数据存储在寄存器内

x86: eax寄存器的值与ebx寄存器内的值相加,结果保存到eax寄存器中。

 

寄存器堆:CPU内部的一堆寄存器,eax,ebx等等

MMU,主要完成物理内存与虚拟内存的映射

MMU位于CPU内部,作为一个硬件存在

.text段存放代码

.data段存放数据

heap:堆区,从下到上是由低地址区到高地址区

靠近3G的部分,是栈区。

0~3G为用户空间

3G~4G为内核区,内核区里面有一个区域,叫进程控制块

程序运行的时候,就会产生虚拟内存区。

程序运行a.out时,就会产生进程,同时也产生了虚拟内存。

虚拟内存并不是真实存在的,真正的内存是物理内存。

即使物理内存大小为512MB的物理内存,也可以运行虚拟内存为4G的应用程序。

虚拟地址:可用的地址空间/范围。不代表占用物理内存的大小。

Linux下,用户空间ring3,内核空间ring0

上例,同一个a.out 运行,产生两个

物理内存空间:用多大,加载多大。

按照页面大小进行分配,一个页面最小4K。

用户空间(0G·3G部分) 数据区/代码区等都可能需要进行映射,每一块都以4K为单位进行映射。对于同一个程序映射出来的不同进程,有多少个进程,就需要单独映射多少个区域。因为进程彼此独立。

内核空间间(4G部分),尽管是不同的进程,但是由于位于同一个OS/同一个内核空间,因此,这两部分空间映射到内存的同一个为同一个物理空间。

总之:用户空间,有多少给进程,就分配多少份独立的存储空间。内核空间,同一个程序的不同进程共用物理内存。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值