CPU从用户模式切换到内核模式:它究竟做了什么?它是如何实现这种转变的?

cla*_*aws 25 assembly operating-system computer-architecture

CPU从用户模式切换到内核模式:它究竟做了什么?它是如何实现这种转变的?

编辑:

即使它依赖于架构,请给我一个答案.该架构取决于您.告诉我你所了解的架构.

我想知道所有事情将涉及到什么.

Oma*_*yan 30

注意:这主要与x86架构相关.这是一个有点简化的解释.

过渡通常是由以下原因之一引起的:

  • 故障(例如页面错误或执行指令导致的其他异常)
  • 中断(例如键盘中断或I/O整理)
  • 陷阱(例如系统调用)

通常发生的是系统检查中断描述符表(IDT).每个异常(中断,故障等)都有一个与之关联的数字,用于索引此表.

从该表中,CPU可以确定要运行的中断处理程序.

作为转换的一部分,以下更改(通常)生效:

  • 切换到内核堆栈
  • EFLAGS已保存
  • 保存代码段选择器和EIP.
  • 堆栈段选择器和堆栈指针已保存
  • 开始执行中断处理程序
  • 保存通用寄存器(处理程序的工作)
  • 段选择器更改为内核选择器(处理程序的工作)

你现在处于内核模式.

希望有帮助:)