ULK一周总结(2008-6-29)
上一篇 /
下一篇 2008-06-29 08:45:16
1.地址分类:
逻辑地址=段+偏移量
线性地址:从0到4G
物理地址:芯片单元
2.段相关
段选择符(16位):指向描述符表中的段描述符(64位)
为了加速,x86中提供用于缓存当前段描述符的寄存器,与段寄存器对应,也是6个
进程有多个段,可以放在GDT中,也可以放在LDT中(如果有的话)
每个CPU有一个GDT,内容基本一致,少数项可以调整
GDT的地址存在于gdtr寄存器中
激活的LDT地址存在于ldtr寄存器中
Linux使用相同的基地址(0),因此逻辑地址与线性地址是一致的
3.分页
由于可以动态分配页表,因此使用多级模式,减少进程中页表所占的空间。否则每个进程的4G物理空间/每页4K的长度=1MB页表项
4.PAE
当使用PAE时,用户态不能使用大于4G的物理空间,而内核可使用64G
5.高速缓存
三种映射方式:1.直接映射;2.充分关联;3.N路关联
写策略:1.通写;2.回写
多CPU时,某个CPU写高速缓存时,需要通知相关其他CPU,即高速缓存侦听,由硬件完成
Linux对所有页框启用高速缓存,使用回写策略
6.TLB
即快表,存放使用过的线性地址到物理地址的映射,每个CPU一个,不必互相同步,当cr3寄存器变化时,TLB被置为无效
7.其他
据说内核可以访问用户空间地址
硬件可以防止程序越界访问
内存仲裁器控制多CPU或DMA对内存的并发访问
段描述符中段首地址Base被分为3段,可能与硬件发展有关。
8.名词
CPL:当前特权级
MMU:内存控制单元
GDT:全局描述表
LDT:局部描述表
DMA:直接内存访问
导入论坛
收藏
分享给好友
管理
举报
TAG:
Linux
Kernel