zoukankan      html  css  js  c++  java
  • 内核空间用户空间, 怎么搞的呢?

    32位的处理器因为寻址空间是 (2**32) 只有4G, 所以32位操作系统, 内存再高也么得啥用。

    再说内存空间, 内存空间是一个整体的  没有办法说, 这1G给你  这3G给他。那么是怎么做的呢?


    其实就是这么玩的:
    CPU有自己寄存器, 进程切换 线程切换有一个状态保持, 有一种寄存器就是专门用来保存这种状态信息的。(这也只是寄存器的一种)
    还有一种寄存器叫 PSW的, 有一个状态位 非0既1 两种状态。

    内存其实就是一个整体, 是没有办法分开的. 无法分开 怎么做到分给内核态1G 用户态3G的呢?
    就是靠这个状态位, 状态位是0的就是内核态, 状态位是1的就是用户态。


    (真正有限制能力的还是CPU的指令集,
    状态位是0的时候 CPU的指令集可以处理所有的硬件和软件, 4个G的内存空间你都能用。都是你的。

    如果是另外一个状态位,CPU的指令集会告诉你,我的这个权限直到 用户态,
    他没有控制硬件的指令, 没有指令就没有权限,没有权限就无法操作他们, 也就只能操控用户态的3个G)

    所以自己的程序扔到内存去跑的时候, 状态位就是1. 他没有指令可以去操控硬件一类的东西。 所以处于用户态。

  • 相关阅读:
    状态模式
    简单密码再次加密
    服务层定义自己的服务异常类
    必备网络基础知识(持续补充)
    MongoDB基础入门
    Git命令整理
    算法基础(四)
    RabbitMQ消息队列
    设计模式(23种)
    二叉树知识点
  • 原文地址:https://www.cnblogs.com/chengege/p/11510492.html
Copyright © 2011-2022 走看看