分段 分页

插:
x86内存管理机制:  分为 分段机制和分页机制
分段机制是x86的特殊的段机制。也正是因为x86存在着段机制,故还有一种额外的地址---逻辑地址。(每个进程都有0--4GB的线性地址空间)
分段机制将内存划分成以起始地址和长度描述的块。
段可以和程序最基本的元素联系起来,因为程序在编译后就划分位了代码段,数据段和栈等,而段机制中刚刚好相应的代码段,数据段 栈段等等。

程序中使用逻辑地址,CPU使用的是线性地址, 故要从逻辑--线性转换 。(分段机制就是干这个的)

分段机制中有 逻辑地址,段选择子,段描述符 段描述附表 4个元素。
当程序使用逻辑地址访问内存时候,(比如,int *p=&a,这里p就是存储的a的逻辑地址,事实上存储的仅是逻辑地址的偏移,而相应的段选择符位于了段寄存器中。),cpu通过逻辑地址中的段选择子
来索引段描述附表,得到相应的段描述符,(描述符中有段的基址。)在加上偏移,就得到了相应的线性地址(虚拟地址)。(它存在于这个程序的0-4GB的线性地址空间中)。
因为逻辑地址覆盖了编译后的程序的各个段,如代码段,数据段,栈段等,故段选择子也相应有多个,如CS专门放入代码段的段选择子,DS放入数据段的段选择子,SS放入栈的段选择子,在上面的例子中,因为p引用的是数据a,
故可想见,这个逻辑偏移的段选择子应该是DS。  此外ES,FS,GS可以自由选用。

分页机制 (线性地址---物理地址)
分页机制的元素  页表 CR3寄存器 TLB 三个部件。

页表即线性页面到物理页面的映射

采用二级分页机制:其中页目录项和页表项都是4KB=32位,但从页目录项找页表位置和从页表找页都只用了高20位,在32位中的最低位位P位,表示物理页面是否在物理内存中,否则要发生缺页中断。。

页目录-》页目录项-》页表-》页表项-》页

故一个进程在运行时候,须将自己页目录的基址放入CR3寄存器中。(4GB的线性空间,每个进程都需要一个页目录:1K*1K*4K=4GB).

TLB中存管的是最近常用的从线性页面到物理页面的映射的表,可以加快转换速度。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值