首页 > 系统服务 > 详细

【学习笔记】深入理解Linux内核第三版 ——第二章 内存寻址

时间:2017-02-07 01:00:50      阅读:195      评论:0      收藏:0      [点我收藏+]

此章节内容主要与硬件层和操作系统层面相关,与高层编程隔离,了解之。

 

 技术分享

其中,

仲裁器

多处理器计算机,多个CPU共享同一主存

主存由RAM芯片构成

RAM芯片读写操作必须串行执行

所以,每个RAM芯片与总线之间存在仲裁器(硬件电路),当RAM空闲时,允许1CPU操作。

 段选择符

段选择符表明选择的段索引/指示/权限。对应的,段需要有段描述符,来标示不同内存地址段的特征,条目存放于GDT(global descriptor table,1个/CPU)或LDT(local descriptor table,进程单独设置);

上文提到的段特征,可以认为有几种常用类型:代码段、数据段、任务状态段、描述LDT的段,分别对应不同段描述符;

分段单元转换方法

硬件电路实现分段单元功能,转换方法如下:

技术分享

 Linux中分段

然而,Linux中未充分利用分段机制。使用4段(用户数据段/用户代码段/内核数据段/内核代码段),段起始地址均为0,从而0*index+offset= offset,线性地址即为逻辑地址。

 技术分享

缓存

技术分享

 除此之外,每个CPU内还存在TLB(translation lookaside buffer),记录线性地址对应转换后的物理地址,下次访问无需转换,无需保证多CPU内的TLB一致性。

参见http://www.wowotech.net/memory_management/tlb-flush.htm

 

【学习笔记】深入理解Linux内核第三版 ——第二章 内存寻址

原文:http://www.cnblogs.com/matric/p/6372173.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!