zoukankan      html  css  js  c++  java
  • x86体系结构gdt的设定

    x86构架有两种内存保护和提供虚拟内存的方法——分段和分页。


    通过分段,每一次访问一个内存地址,都会将地址值加上段的基地址,并检查段的长度。
    通过分页,地址空间被分成4KB的块,称为页。每个页面都可以映射到称之为页帧的物理内存,这样就可以建立虚拟内存空间。
    事实上,分段这种方式将逐渐退出历史舞台。然而,分段概念完全内置于x86构架之中,是无法绕过他构建系统的。

    GDT,Global Descriptor Table:

    一个段具备以下要素:base address和limit,对一个内存地址的访问,需要指出其使用哪个段,以及相对于这个段base address的offset,此offset应该小于此段的limit;此外在保护模式下,还需要规定段本身的访问权限access。
    因此在保护模式下,对一个段的描述包含三方面因素:base address, limit,access,他们加起来被放在一个64bit的数据结构中,被称为段描述符。通常情况下,所有的段描述符被组织放入一个数组之中,这个全局的数组就是GDT。

    GDT可以放置在内存的任何位置,当程序通过段寄存器来引用一个段描述符时,CPU必须知道GDT的入口,故GDT设置完成之后需要通过LDGT指定将GDT入口地址装入全局描述符表寄存器(GDTR)。

    要引用GDT表中的某个段描述符,可以通过一个16bit的selector,段选择子中的索引号即作为GDT数组的下标,有13位,所以,GDT数组最多有8192个元素。

     现代操作系统中,给代码段和数据段分配不同的段描述符

  • 相关阅读:
    10丨应该如何理解请求方法?
    采用镜像的方法安装python第三方库
    09丨HTTP报文是什么样子的?
    Fiddler——Https抓包(十二)
    三基础篇(7讲)08丨键入网址再按下回车,后面究竟发生了什么?
    fiddler-弱网测试(十一)
    python中a+=a与a=a+a的区别
    07 | 自己动手,搭建HTTP实验环境
    Fiddler——断点应用(十)
    【HGOI】物品选取
  • 原文地址:https://www.cnblogs.com/caidi/p/15146645.html
Copyright © 2011-2022 走看看