《LINUX内核源代码情景分析》第1章笔记
本帖最后由 fireaway7 于 2014-05-05 13:00 编辑第1章需要理解的点:
1.2 80286
*分段方法的由来:cs*16+offset->20位地址
*实地址(相同地址在不同进程所指向的地方一样)、虚拟地址(不同进程里相同的进程,指向的地方并不一样)
*CS:代码段,DS:数据段,SS:堆栈段,ES:扩展数据段,FS:标志段,GS:全局段
*80386维持已有段寄存器、支持实地址、支持保护模式,保护模式没有完全另搞一套,而建立在段寄存器基础上,“|-描述项下标-|-GDTR/LDTR-|-权限-|”
*逻辑地址->物理地址过程(可以感受到保护)
*每个段寄存器对应一个“影子”描述项,避免每次都通过GDTR/LDTR+段寄存器值去找地址段描述结构
*访问GDTR/LDTR必须是特权指令,段寄存器要结合GDTR/LDTR值才能确定段描述表项在内存的什么地方
*段描述表项结构
*“影子”描述项始终装着段寄存器所指向的段描述表项
*平面地址概念
*p,使得80386可以实现段式虚存管理
*系统状态与用户状态分离+特权指令->保护
*通过rpl、dpl分离系统状态与用户状态,切换将在进程调度、系统调用、中断处理有关章节介绍
*IDTR、TR、TSS
1.3 i386
*段式管理不足、分页管理优点
*Intel之前的CPU,已经靠分段方式做了很多事情,所以为了不抛弃已有的资源,80386页式存管建立在段式存管的基础上,只是在段式存管在再加一层映射(逻辑地址->线性地址->物理地址)
*段式存管中,连续的逻辑地址经过映射后在线性地址空间还是连续的,而式存管中,连续的线性地址经过映射后在物理空间却不一定连续,更灵活,且每个页面大小固定,盘区交换更方便
*CR3,“|-页面目录dir-|-页面表page-|-页内偏移offset-|”,一张页面目录或一张页面又正好可以放在一个物理页面
*线性地址->物理地址过程
*pte指向一个物理页面地址,4K倍数,所以低12可作他用,表示页面的属性
*CR0,CR4
页:
[1]