zoukankan      html  css  js  c++  java
  • x862保护模式(protect mode)

    x86-2-保护模式(protect mode)

    引入保护模式的原因:

    操作系统负责计算机上的所有软件和硬件的管理,它可以百分百操作计算机的所有内容。但是,操作系统上编写的用户程序却应当有所限制,比如只允许用户程序访问属于自己程序的内容,不然整个生态就很恶劣了,想象下你手机上的的微信被恶意软件给修改了,给你的所有好友群发黄色广告,你难受吗。

    但是在之前8086CPU的工作模式也就是实模式的工作模式下,程序对软硬件的访问非常自由,没有任何限制,我们随随便便就可以修改内存上的数据,即使这个内存的范围不在我们程序的数据段里。这就和我们前面所想违背了。

    因为在多用户、多任务时代,内存会有多个用户(应用)程序在同时使用,为了使它们彼此隔离,防止因某个程序的编写错误或者崩溃而影响到操作系统和其他用户程序,所以就有了保护模式。

    也就是说保护模式就是为了防止某个程序影响操作系统和其它用户程序,每一个都相对独立。(操作系统也可以当作一个大型的程序)。

    保护模式要保护什么内容:

    实质上就是保护CPU中的某些资源不能被随意访问,包括硬件资源和操作系统的软件资源,比如说:内存、GDT、IDT等类型的系统级数据结构图以及OS 内核代码和数据等等。

    保护模式根据什么来进行保护:

    保护模式根据特权级来进行保护。

    特权级:

    在保护模式下,每个段都有一个特权级。intel的CPU特权级采用了0,1,2,3四种特权级,权限从高到低,也就是0级权限最高,3级最低。一般来说操作系统的特权级为0,用户程序的特权级最低为3。其中Windows只采用了0和3,也就是经常俗称的0环和3环。

    特权级为0的程序拥有最高的权限,可以和实模式一样全方位操作计算机。其它特权级就权限依次往下。

    拥有高特权级的代码可以对低特权级的数据进行访问,反之不行。

    保护模式如何进行隔离和保护:

    保护模式实施了种种访问限制,x86的段式管理(segmentation)和页式管理(paging)是实施保护措施的手段和途径。

    segmentation机制和paging机制实行不同的内存管理模式和访问控制,对资源的访问先经过segementation阶段,然后如果还开启了paging就再经过paging机制。也就是说paging机制是一个可选项。

     

    小结

    因为实模式太不安全,所以引入了保护模式,保护模式通过段式管理和页式管理根据段的特权级来进行保护和隔离。

  • 相关阅读:
    XStream和Dom4j的区别
    tomcat 性能优化(内存优化 线程优化)
    安装tomcat
    python 全栈开发,Day10(动态参数,命名空间,作用域,函数嵌套)
    python 全栈开发,Day9(函数的初始,返回值,传参,三元运算)
    python 全栈开发,Day8(文件操作)
    python 全栈开发,Day7(元组转换,列表以及字典的坑,集合,关系测试,深浅copy,编码补充)
    python 全栈开发,Day6(is,小数据池,编码转换)
    python 全栈开发,Day5(字典,增删改查,其他操作方法)
    python 全栈开发,Day4(列表切片,增删改查,常用操作方法,元组,range,join)
  • 原文地址:https://www.cnblogs.com/Sna1lGo/p/15769365.html
Copyright © 2011-2022 走看看