zoukankan      html  css  js  c++  java
  • 实模式/保护模式

    ## 实模式和保护模式

    ### 实模式
    时间短,一般无法感知

    CPU复位(reset)或加电(power on)的时候就是实模式启动,这个时候处理器是以实模式工作,不能实现权限分级,也不能访问20位以上的地址线,也就是只能访问1M内存(2^18bits, 18位地址线)

    之后一般就是加载OS模块,进入保护模式

    8086
    地址线是20位,寄存器是16位,采用:物理地址= 段地址<<4 + 偏移

    8086发展来的32位处理器地址线扩展到32位,有4GB寻址空间

    在保护模式下,系统计算地址的时候是按照对1MB求模进行——Wrap-Around技术

    ### 保护模式
    ####
    起源
    最开始的程序寻址是:段+偏移,这样的好处是程序员指定的地址就是物理地址,物理地址对程序员可见

    这样带来的问题是:

    1. 
    无法支持多任务
    2. 
    程序的安全性无法得到保证

    windows的旧版本中,电脑时不时死机/蓝屏,这其实就是因为内存被破坏导致的。

    因为在实模式中,将物理内存看成分段的区域,程序代码和数据位于不区域,系统程序和用户程序区别对待,而指针是任意的,如果用户程序指针指向了系统程序或其他用户程序区域,并改变了区域的数据,就会造成破坏,导致程序/系统崩溃


    在保护模式下,全部32条地址线有效,4G寻址空间,存储器分段管理机制和分页管理机制等,不仅为存储器共享和保护提供了硬件支持,而且为实现虚存提供硬件支持。支持多任务,能快速进行任务切换和保护任务环境。

    保护模式出现的原因是:**保护进程地址空间**,这样产生了一个结果——两种模式下的程序寻址方式发生了变化

    ####
    保护模式下的寻址方式和工作原理
    地址同样是+偏移,但是段的概念发生根本变化

     

    段变成了一个索引,指向一个数据结构——全局描述符GDT(或是LDT),定义了段的起始地址,界限、属性等

    GDT作用是提供段氏存储机制

    在实模式中:段地址并非真正的物理地址,<<4+offset

    在保护模式中,段地址是32位线性地址,如果未开启分页功能,该线性地址就是物理的地址

     

     

    From PPT

    l  实模式就是用基地址+偏移量就可以直接拿到物理地址的模式

    n  缺点:不安全

    l  保护模式:不能直接拿到物理地址的模式

    n  需要地址转换

    n  80386开始,是现代OS主要模式

  • 相关阅读:
    nfs-client-provisioner 利用NFS动态提供Kubernetes后端存储卷
    docker-compose简易编写和模板命令
    shell脚本自动过滤尝试多次连接ip并添加到系统黑名单
    Centos 升级glibc 亲测好用
    centos安装Jenkins报错
    centos8 安装docker启动失败
    cenots7 rpm 包升级ssh
    python备份文件(简易)
    Docker 容器基本操作(基础)
    Docker 环境下如何配置你的镜像(基础)
  • 原文地址:https://www.cnblogs.com/XT-xutao/p/11854453.html
Copyright © 2011-2022 走看看