Skip to content

Latest commit

 

History

History
123 lines (54 loc) · 3.44 KB

16.彻底明白内核态、用户态、内核空间和用户空间.md

File metadata and controls

123 lines (54 loc) · 3.44 KB

16 内核态、内核空间、用户态和用户空间

CPU平台指令特权等级

为什么需要特权等级

什么是用户态和内核态

用户态什么时候会切换到内核态

什么是用户空间和内核空间

内核空间和用户空间的逻辑分层

用户空间和内核空间是如何进行划分的?

详细布局如下

内核空间的分类

  • 进程私有的内核空间

每个进程都有单独的内核栈,页表,task结构以及mem_map结构等

  • 进程共享的内核空间

属于所有进程共享的内存区域,包括物理存储器,内核数据和内核代码区域

用户空间的构成

为什么要区分用户空间和内核空间呢

谁来划分内存空间呢?

用户态和内核态的切换涉及的CPU上下文的切换

涉及2次上下文的切换

用户态和内核态的切换耗费时间的原因

性能相差26倍

getuid() 的耗时 每一次循环中getuid() 的都涉及一次用户态-》内核态-》用户态的两次切换,所有比较耗时

Java进程中设计用户态和内核态的切换的操作

  • 线程切换
  • java程序的加锁和解锁 (注意锁优化)
  • 内存分配malloc() java中的对外内存的使用等

Java中操作对外内存的使用场景