《深入理解java虚拟机》笔记——5.用户态与内核态

用户态与内核态?

  1. 用户态与内核态是CPU的2种运行级别;CPU运行级别分为0~3,0级权限最高,为“内核态”,3级权限最低,为“用户态”

  2. 为什么分级?
    不同级别对应不同的“权限”,当用户执行自己定义的函数时,级别为0,处于用户态;当操作系统执行自身的代码,如对系统硬件接口的操作,如write() / open() 函数,则会进入内核态;低级别的程序无法将自己的级别升到高级别,除非调用系统函数;这样对级别的控制,保证了用户程序无法直接的做一些破坏操作系统的行为(没有权限),而内核态下的操作系统本身可以控制用户应用程序的执行,包括杀死用户应用进程;

  3. 当用户代码调用系统函数,如通过JNI调用本地方法(如操作内存或向端口输出指令),则会产生中断,进入内核态当操作完成后,退出中断,返回用户态

何时进入“内核态”?

  1. 系统调用,当用户代码执行时,例如需要进行文件读写,则此时用户态权限不够,通过“系统调用”申请操作系统提供“本地方法”,进入内核态调用本地方法,完成功能的实现;

  2. 在用户态下执行的程序发生某些异常,如“缺页异常”(即物理地址与虚拟地址所映射的“物理页”不可写),则会进入内核态;

  3. 外围设备的中断;若当前执行的是用户态下的程序,系统则会切换到“中断处理程序”(内核态)去执行后续操作;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值