摘要:
位操作 status |= flags /*设置标记*/ status &= ~flags /*清除标记*/ status & flags /*判断标记*/ 循环: do {} while(0) 方便从代码中退出( break; 不需要使用 goto) for(;;) 死循环; &... 阅读全文
摘要:
x86 有 tr 寄存器,用来索引tss结构,tr 索引的是 GDT中的表项,描述符的类型必须是TSS。 tr寄存器,发生陷入时CPU就是从通过这个指针指向的TSS中拿到SS和ESP的值。 在linux中,每一个CPU对应一个TSS(而不是每个进程对应一个TSS),在同一个CPU上运行的进程共用一个TSS,由于每个进程的内核栈都不同(SS相同,但是ESP 不同),在某个CPU上正在... 阅读全文
摘要:
x86 实模式下,使用中断向量表(地址为0-1k的部分,每个向量4个字节); x86 保护模式下,使用中断描述符表 IDT. CPU中有 idtr 寄存器,保存 idt 表的位置, lidt 指令用于加载 idt 表到 idtr中。 idt 表中的 表项 是 8个字节, 一部分用户是段选择符,一部分是段内偏移量,还有中断DPL, 以及门类型(中断,陷阱,系统调用). 在一个... 阅读全文