编辑添加您的实际答案:
保护模式软件架构
Tom Shanley
Addison-Wesley Professional(1996年3月16日)
ISBN-10:020155447X
ISBN-13:978-0201554472
googlebook,amazon
您是否看过"了解Linux内核"第3版?它可以通过Safari获得,它可能是开始操作系统方面的好地方 - 我认为它不会给你带来细节,但它是一个很好的指南,可能会把linux内核的源代码和架构 - 特定的东西进入上下文 以下章节为您提供了内核方面要求的叙述("发生中断或上下文切换时硬件与操作系统之间的关系"):
了解Linux内核,第3版.
Daniel P. Bovet; Marco Cesati
出版社:O'Reilly Media,
Inc.Pub.日期:2005年11月17日
打印ISBN-13:978-0-596-00565-8
打印ISBN-10:0-596-00565-2
Safari,亚马逊
我的推荐是这样一本书,有linux源代码和intel手册以及一个完整的啤酒冰箱,你就可以开始运行了.
来自第3章:流程的简短片段,以激发您的胃口:
3.3.2.任务状态段
80×86架构包括称为任务状态段(TSS)的特定段类型,用于存储硬件上下文.尽管Linux不使用硬件上下文切换,但它仍然被迫为系统中的每个不同CPU设置TSS.这样做有两个主要原因:更确切地说,当进程在用户模式下执行输入或输出I/O指令时,控制单元执行以下操作:
- 当80×86 CPU从用户模式切换到内核模式时,它从TSS获取内核模式堆栈的地址(请参阅第4章"通过sysenter发出系统调用"中的"中断和异常的硬件处理"部分)第10章中的说明.
- 当用户模式进程尝试通过输入或输出指令访问I/O端口时,CPU可能需要访问存储在TSS中的I/O权限位图以验证是否允许进程寻址端口.
tss_struct结构描述了TSS的格式.正如第2章中已经提到的,init_tss数组为系统上的每个CPU存储一个TSS.在每个进程切换时,内核更新TSS的某些字段,以便相应的CPU的控制单元可以安全地检索它所需的信息.因此,TSS反映了CPU上当前进程的特权,但是当它们不运行时,不需要为进程维护TSS.
- 它检查eflags寄存器中的2位IOPL字段.如果设置为3,则控制单元执行I/O指令.否则,它会执行下一次检查.
- 它访问tr寄存器以确定当前的TSS,从而确定正确的I/O权限位图.
- 它检查与I/O指令中指定的I/O端口对应的I/O权限位图的位.如果清除,则执行该指令; 否则,控制单元会引发"一般保护"例外.
另一个潜在的参考是这一个,它确实有更多的x86特定的东西,你可能会从与PowerPC的对比中获益一点.
Linux®内核入门,:x86和PowerPC架构的自上而下方法
Claudia Salzberg Rodriguez; 戈登菲舍尔; Steven Smolski
出版社:Prentice Hall
Pub.日期:2005年9月19日
打印ISBN-10:0-13-118163-7
打印ISBN-13:978-0-13-118163-2
Safari,亚马逊
最后,Robert Love的Linux内核开发第3版对上下文切换有一个非常详尽的描述,尽管它可能与上述内容有关.这是一个非常棒的资源.