用户空间和内核空间

用户空间和内核空间
都是虚拟内存,但是从逻辑上由操作系统进行了划分,比如Linux 32位系统有4G虚拟内存,用户空间代表0-3G的内存地址,内核空间代表3-4G的内存地址。
这样能够做到数据隔离,互不干扰,同时对访问进行控制,防止系统内核的数据被用户影响。

用户态和内核态

CPU将指令分为特权指令和非特权指令,按照特权等级,指令分为4级:Ring0-Ring3,由高到低。Linux系统只运用了Ring0和Ring3两个等级。

每个进程在用户空间和内核空间各有一个栈,用来执行用户代码/内核代码。在内核空间有内核栈,在用户空间除了用户栈,还有堆。不同进程的用户空间,是分开的,不可共享,但是所有进程共用一个内核空间


一个进程在执行用户代码(应用程序的代码)时,为用户态。此时进程运行在用户空间,指令等级为Ring3。
一个进程在执行内核代码时,为内核态。此时进程运行在内核空间,指令等级为Ring0。


用户态如何切换到内核态(其实就是切换进程的上下文)
1、系统调用(主动)。调用系统服务对外提供的接口
2、异常(软中断)(被动)。用户态发生异常时,需要系统内核相关进程来处理此异常
3、硬件中断(被动)。硬件设备完成操作后,会向CPU发送中断信号,如果此时CPU在用户态,则会切换到内核态去执行中断处理程序

上下文
简单说就是环境。进程的上下文,表示进程执行时的环境。说白了就是能表示进程当前状态的所有参数,包括CPU的所有寄存器中的值、进程的状态以及堆栈中的内容等。进程的上下文保存在进程的任务数据结构中。

内核态运行于两种环境,进程上下文和中断上下文。

进程上下文
=用户态通过系统调用传递给内核的参数+进程的上下文。

中断上下文
=硬件中断/软中断传递给内核的参数+进程的上下文。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值