zoukankan      html  css  js  c++  java
  • 内核态和用户态,内核空间和用户空间

    内核态与用户态是操作系统的两种运行级别,intel cpu提供Ring0-Ring3三种级别的运行模式。Ring0级别最高,Ring3最低

    内核态可以拥有比用户态更大的权限

    处于内核态的进程,可以访问用户进程空间(是虚拟地址空间),就是通过进程的页表(进程本身就是一个4G虚拟地址空间。其中用户空间的3G是独立的,内核空间是共享的)来访问用户地址空间对应的物理地址,从而访问用户空间

    相反用户态的进程,只能访问用户地址空间(虚拟地址空间)

    在内核态下,利用内核地址空间中的高端内存地址空间,来映射高端内存。获得的内存不能被用户态访问

    内核态直接访问用户空间地址

    就是直接读取地址的,通过系统调用进入内核的,仍然是和app属于同一个执行流,即是同一个进程,也即页表没有变化,所以完全可以直接读取
    所谓缺页异常都是因为访问了页表没有映射的那些虚拟地址,但是在这个进程页表中,3G以下的区域是映射了的,所以完全可以直接读写

    缺页异常需要在开启MMU的情况下才会有,假如你在uboot里面,你去直接读写那种根本不存在任何东西的地址,也是不会发生任何错误的。

     

  • 相关阅读:
    2. C++ continue
    1. Vector
    1007. 行相等的最少多米诺旋转
    4. 寻找两个正序数组的中位数
    3.无重复字符的最长子串
    1. 两数之和
    509. 斐波那契数
    Linux内核源码分析之setup_arch (三)
    1018-可被5整除的二进制前缀
    605-种花问题
  • 原文地址:https://www.cnblogs.com/kkshaq/p/4526635.html
Copyright © 2011-2022 走看看