Skip to content

Latest commit

 

History

History
4 lines (4 loc) · 1.08 KB

为什么用户态和内核态的相互切换过程开销比较大.md

File metadata and controls

4 lines (4 loc) · 1.08 KB
  1. 上下文切换:在用户态和内核态之间切换时,需要保存当前进程或线程的上下文信息,包括程序计数器、寄存器状态、栈指针等。这些上下文信息保存在内存中或者内核数据结构中,在切换完成后需要再次加载回来。这个过程会消耗一定的时间和资源。
  2. 权限切换:用户态和内核态具有不同的权限级别,内核态拥有更高的特权级别,可以执行一些用户态不可访问的指令和操作。因此,从用户态切换到内核态需要进行特权级别的变更,这个过程也会增加开销。
  3. 地址空间切换:用户态和内核态通常有不同的地址空间,为了保护操作系统内核不受用户程序的直接影响,当切换到内核态时需要进行地址空间的切换和映射,这也会增加开销。
  4. TLB刷新:TLB是CPU中的一种缓存,用于存储虚拟地址到物理地址的映射关系。当发生用户态和内核态的切换时,可能导致TLB中的缓存无效,需要进行TLB刷新,这会引起一定的性能损失。