用户态与内核态

一、什么是用户态与内核态:

为什么要有用户态和内核态?
由于需要限制不同的程序之间的访问能力, 防止他们获取别的程序的内存数据, 或者获取外围设备的数据, 并发送到网络, CPU划分出两个权限等级 – 用户态和内核态。

内核态:cpu可以访问内存的所有数据,包括外围设备,例如硬盘,网卡,cpu也可以将自己从一个程序切换到另一个程序。
用户态:只能受限的访问内存,且不允许访问外围设备,占用cpu的能力被剥夺,cpu资源可以被其他程序获取。

也即,用户态与内核态是对CPU使用的权限划分。目的是防止普通程序错误或者恶意的操作CPU与外设。 像我们写的代码,进行一般的运算就是运行在用户态,当需要进行磁盘读写、网络传输时,会调用内核提供的API,进而进入内核态。

二、什么时候会发生用户态与内核态的转换

  1. 用户程序主动请求调用系统函数时,即当我们代码要读一个文件时,会从当前的用户态转换到内核态;
  2. 用户程序发生系统异常时,比如用户程序申请内存,把内存占满了,此时会有用户态到内核态,去处理对应的异常程序;
  3. 外设中断,当外设处理完任务时,会发生中断,此时会从内核态转换到用户态。比如,文件读到内存完毕后,会返回用户程序,进行后面的处理。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值