80386   三种工作方式   实模式    保护模式和虚拟86模式

 
只有在保护方式下  全部32条地址线才有效   可以寻址高达4g字节的物理地址空间
超过1m的内存空间  被成为扩展的内存空间     保护模式下  才有存储器饭段管理和分页管理机制   实模式下是没有这些概念的。  不仅提供了存储器的共享和保护  而且实现了虚拟存储器的硬件支持 ,才有多任务的支持
一   存储管理机制
存储管理机制由80386存储管理不见mmu实现
1.目标
物理内存有限  为了运行大型的任务  和多任务   所以采用虚拟存储器   虚拟存储器是一种软硬件结合的技术,
任务a和任务b需要隔离   同时又要共享部分代码和数据   所以还要支持特权保护
2.地址空间和地址转换
保护方式下 的虚拟存储器由大小可变的存储块构成  这样的存储块称为段   
虚拟存储器的地址又叫逻辑地址由指示描述符的选择子和段内偏移两部分构成   这样的地址及和称为虚拟地址空间    80386支持的虚拟空间可达64t字节
cpu只能运行在内存中的程序   所以虚拟存储器中的数据需要映射到物理存储器中   才能使用  即二维的虚拟地址要映射到一维的线性地址

线性地址隔离了虚拟地址空间和物理地址     线性地址为一维地址空间与物理地址空间对等   同为32位长   空间容量为2的32次方   共4g字节

如图所示
  分段机制将虚拟地址转换为线性地址   此步骤总存在  如果没有分页机制  线性地址就是物理地址
分页机制把线性和物理空间划分为大小相同的块  这样的块叫做页   通过在线性的页和物理的页建立联系的映射表  实现线性到物理的转换
分段机制可以使用可变大小的块   ,分页机制的块大小相同适合与管理物理存储器  (包括内存和外存),分页管理机制能够有效地支持虚拟存储器
段及分页是不同的机制   是整个地址转换函数的不同的转换级,都利用主存储器中的转换表   这些表具有独立的结构  事实上,段表位于线性地址空间  而页表在物理地址空间爱你   
3.虚拟存储器的概念
需要存储管理机制和一个大容量的硬盘支持   程序运行的任何时刻 只要把虚拟空间的一部分映射到主存储器   其余部分在硬盘上   ,访问存储器的范围变化时,需要把虚拟存储器的某些部分从磁盘调入主存储器   虚拟存储器的另外部分  也能从主存储器传回到磁盘上
a 把实际在主存中的虚拟部分标记为无效   并建立虚拟驻留部分到物理映射的关系   把驻留部分的虚拟地址转换为物理地址  
b 如果程序访问的虚拟地址对应于虚拟空间的未驻留主存的部分  则由于无效的映射  发生异常   
c 操作系统把未驻留的部分从磁盘读入主存并更新地址转换表   这种异常处理完成之后    返回原来的程序恢复执行    并重新执行一次原来引起异常的指令  
e 地址转换机制统计驻留在主存中的虚拟存储器部分的使用信息,在主存空间紧缺时,帮助操作系统决定可以将哪些部分传送回磁盘
 
二 保护机制
分为不同任务间的保护   和同一个任务内的保护
1.任务间的保护
通过把每个任务放在不同的虚拟地址空间的方法来实现任务与任务的隔离保护
虚拟到物理的映射函数在每个任务中进行定义   随着任务切换  映射函数也切换
任务a的虚拟地址空间映射到物理地址空间的某个区域   而任务b的虚拟地址空间映射到物理地址空间的另外区域   彼此独立 互不相干。所以两个不同的任务即使有相同的虚拟地址   但是实际的物理地址存储但与并不同
所以可见  每个虚拟地址(逻辑地址 )空间都可以认为是从0开始的       即有相同的虚拟地址
每个任务各有一组独立的映射表  即具有不同的地址转换函数   即每个任务都有自己的段表和页表   当任务进行切换时,需要为新任务切换地址转换表    
注意:为了使操作系统与所有的其他应用程序隔离   要把操作系统存储在一个单一的任务中   同时要让操作系统由所有的任务共享    就需要把操作系统存储在虚拟地址空间的一个公共区域    然后 每个任务按照此区域分配一个同样的虚拟地址空间并且进行同样的虚拟到物理地址的映射    各个任务公用的这部分虚拟地址空间  被称为全局地址空间
局部地址空间       不被任何其他的任务共享的虚拟地址部分   仅由一个任务占有
2.同一任务内的保护
同一个任务具有四种执行特权级别,用于限制对任务中的段进行访问。
四种级别 0 1 2 3    最内层为0    最外层为3
 

每一特权级都有各自独立的堆栈   以避免与共享栈区的保护问题

每当程序的特权级变化时   需要切换到相应级别的堆栈  
对于ss来说  描述符的dpl必须等于当前代码段的cpl
任务在特定时刻的权级成为cpl  当前运行程序的特权级   
允许访问同一级别或外层级别的数据段    
 
特权级的典型用法:os内核在0级    os的其余部分在1级     应用程序在3级   2级保留给中间软件使用

x86 保护方式 简介 一的更多相关文章

  1. 3.3 x86指令简介

    计算机组成 3 指令系统体系结构 3.3 x86指令简介 x86指令种类繁多,数量庞大.在这一节我们将会学习x86指令的分类,并分析其中最为基础的一部分指令. 通常一个指令系统主要包括这几类指令.运算 ...

  2. 基于汇编的 C/C++ 协程 - 切换上下文

    在前一篇文章<基于汇编的 C/C++ 协程 - 背景知识>中提到一个用于 C/C++ 的协程所需要实现的两大功能: 协程调度 上下文切换 其中调度,其实在技术实现上与其他的线程.进程调度没 ...

  3. Detours简介 (拦截x86机器上的任意的win32 API函数)

    Detours 当然是用detours,微软明显高腾讯一筹,同上,至今没失败过.写这种HOOK一定要再写个测试程序,不要直接HOOK你的目的程序,例如QQ,因为这样不方面更灵活的测试.说明一下:Det ...

  4. Linux嵌入式 -- 内核简介(x86)

    0. 嵌入式系统 以应用为中心,软硬件可裁剪,对功耗.对体积.对成本等都有严格要求的专用计算机系统. 1.  linux体系结构 2. 为什么 划分为 用户空间 和 内核控件 ?  分两级,内核和应用 ...

  5. x86 保护模式 十 分页管理机制

    x86   保护模式  十  分页管理机制 8.386开始支持分页管理机制 段机制实现虚拟地址到线性地址的转换,分页机制实现线性地址到物理地址的转换.如果不启用分页,那么线性就是物理地址 一  分页管 ...

  6. ASP.NET Core 1.1 Preview 1 简介(包含.NETCore 1.1升级公告)

    ASP.NET Core 1.1 Preview 1于2016年10月25日发布.这个版本包括许多伟大的新功能以及许多错误修复和一般的增强. 要将现有项目更新到ASP.NET Core 1.1 Pre ...

  7. Linux-/proc目录简介

    Linux /proc目录简介 1.简单了解 以文件系统的方式为访问系统内核数据的操作提供接口 由linux内核提供:通过/proc文件系统,在运行时访问内核内部数据结构.改变内核设置的一种机制 pr ...

  8. coredump简介与coredump原因总结

    from:http://www.cnblogs.com/doctorqbw/archive/2011/12/21/2295962.html   千兵卫博士   coredump简介与coredump原 ...

  9. NDK开发-简介&环境搭建(Eclipse,Android Studio)

    NDK简介 NDK(Native Development Kit)是一套工具集,允许你在Android应用中嵌入c或c++. 使用NDK的好处主要有以下4点: 安全:由于apk的java层代码很容易被 ...

随机推荐

  1. IDEA JavaSE环境配置

    需指定JDK路径: File -> Project Structure -> Project -> Project SDK -> New -> 选择JDK所在的根目录

  2. Spring Boot: Spring Starter Project

    好久没有创建过新项目,楼主发现Spring Boot项目创建失败了!!! 其中有两处错误: [图一不知道是哪里错,果断删掉重输入一次.成功进入下一步  其余步骤也没有错误,然而  最后一步失败了,如图 ...

  3. ActiveAndroid问题no such table解决总结

     android.database.sqlite.SQLiteException: no such table  at android.database.sqlite.SQLiteConnection ...

  4. MINST手写数字识别(二)—— 卷积神经网络(CNN)

    今天我们的主角是keras,其简洁性和易用性简直出乎David 9我的预期.大家都知道keras是在TensorFlow上又包装了一层,向简洁易用的深度学习又迈出了坚实的一步. 所以,今天就来带大家写 ...

  5. faster rcnn需要理解的地方

    http://blog.csdn.net/terrenceyuu/article/details/76228317 https://www.cnblogs.com/houkai/p/6824455.h ...

  6. QR 分解

    将学习到什么 介绍了平面旋转矩阵,Householder 矩阵和 QR 分解以入相关性质.   预备知识 平面旋转与 Householder 矩阵是特殊的酉矩阵,它们在建立某些基本的矩阵分解过程中起着 ...

  7. Mac上安装Node和NPM【转】

    http://www.jianshu.com/p/20ea93641bda 作为前端开发者,node和npm安装必不可少.然而有时会因为安装新的app(如MacPorts,慎装,它会修改基本环境变量以 ...

  8. Qt+事件的接收和忽略

    事件的接收与忽略的示意图如下图: 依据前面的知识,事件是可以依据情况进行接收和忽略的,事件的传播是组件层次上面的,而不是依靠类继承机制.在一个特殊的情形下,我们必须使用accept()和ignore( ...

  9. python已安装好第三方库,pycharm import时仍标红的解决办法

    pip install pymysql之后导入import pymysql时候标红 发现 pymysql下方还是标红,不能正常导入 可以试用一下以下的办法 解决办法: 首先打开 Settings找到P ...

  10. AR报表控件的常见问题汇总

    1)字符串格式不正确 原因是建立报表时未使用分页报表 导致拖动数据为sum()表达式,sum运算字符串当然会出问题 2)超出索引 顾名思义 数据为空或不匹配 3)图片使用远程图片时记得把属性修改为远程 ...