![]() |
1
1
注意:这都是“80x86特有的”(不同的CPU,如ARM,是不同的),对于80x86,保护模式(用于32位内核)和长模式(用于64位内核)之间存在(实践中较小的)差异。 CPU有一个任务寄存器,用来跟踪称为任务状态段的结构的(虚拟)地址。对于长模式,此结构包含在更改为更高的特权级别和使用CPU的中断堆栈表功能时加载到RSP中的值。
当发生任何中断时,CPU从中断描述符表中的相应条目获取信息(包括确定切换到哪个特权级别以及中断是否使用中断堆栈表功能);然后(如果堆栈正在更改)使用任务状态段中的相应字段(通过找到)。任务寄存器)。
在引导期间,内核为CPU(IDT、TSS)创建这些数组和结构,并设置任务寄存器;在任务切换期间,内核修改
|
![]() |
user107586 · 如何处理等待句柄不会导致无限循环? 5 月前 |
![]() |
ron burgundy · 获取-释放语义是否跨线程传递?[副本] 5 月前 |
![]() |
BenjiFB · C#内存缓存:在一次操作中追加到列表? 5 月前 |
![]() |
András Takács · Python多线程问题 9 月前 |
|
András Takács · Python多线程错误 9 月前 |