- 博客(3)
- 资源 (7)
- 收藏
- 关注
原创 关于cpu进行任务切换的一些理解
在80386保护模式中,cpu中有两张唯一的表,一张是gdt(全局段描述符表),一张是idt(中断描述符表)由于现在主要讲任务切换,所以先忽略idt,主要介绍gdtgdt中有三种段描述符,存储段描述符、系统段描述符和门描述符在最初的理解中,我认为tss(任务描述符)也是一张表(类似gdt和ldt),但是后来我发现错了任务描述符是一个段,属于系统段,记录了任务的具体信息,包括任务中寄存器的内容,代码的开始,还有就是被切换前到那句代码等。任务描述符的详细内容可以上网查查,一共104字节(cpu读的)。当操作系统
2010-09-08 11:27:00
432
原创 关于tss中的link
<br /> tss是cpu用来记录每一个任务信息的段,它的地址放在tr中,每个任务的tss按顺序排练在一起,想数组一样。例如,任务a的信息是tss[0],任务b的信息是tss[1]。<br /> tss的前32位有一个为link的区域,用来保存嵌套任务信息。例如任务a调用任务b,任务b再调用任务c,那么任务c的link存储的是任务b的tss的索引值,任务b的link存储的是任务a的tss索引值。任务a的link没有用。当nt=1的时候,link起作用,当nt=0的时候cpu不读link
2010-09-02 17:26:00
305
原创 关于分页机制的寻址问题
<br /> 对于分段机制,cpu有gdtr和ldtr两个寄存器用来存储全局段表和局部段表的地址,所以逻辑地址只需要通过高16索引就可以找到段的基地址,然后加上低32位偏移量即可得到物理地址。<br /> 但是对于分页地址,cpu并没有提供这样的寄存器,而且没有全局页表和局部页表之分(用一种方法是共享二级页表,以达到全局页表的功能)。<br /> 为了通过线性地址的高10位找到页目录表,cpu通过cr3提供一个值,这个值加上线性地址的高10位*4(这里因为每个表项为4bytes
2010-09-02 16:37:00
416
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人