全局描述符表 GDT

全局描述符表GDT

全局描述符表主要是为了让计算机从实模式到保护模式.

在实模式下面访问的地址都是真实的物理地址, 这样的话每个程序都能直接的访问物理地址, 并修改物理地址会很容易的造成系统的崩溃, 死机. 所以为了让用户不能直接的访问物理地址创造了虚拟地址, 而让系统从物理地址映射到逻辑地址就是从实模式到保护模式的过程.(这里的物理地址就是线性地址, 主要因为只分段那么 物理地址=线性地址, 这里我就说是物理地址到逻辑地址之间的映射)

逻辑地址采用的分段的策略. 而让逻辑地址长度远多大于了物理地址的长度, 逻辑地址的由两段组成

[段选择(段选择子) : 段描述符]

[16位 : 32位]

每段选择是由16位组成, 段描述符是由32位组成, 由段选择子确定要访问哪个段描述符. 一个段描述符对应着一个进程, 也就是一个进程有一个唯一的段选择子对应. 段描述符有32位, 也就拥有2^32个地址, 也就是4G的地址范围啊, 正好是一个进程的运行内存的大小, 但是要注意不是进程一创建就会分配4G的内存, 不然我们电脑内存在大也运行不了几个进程, 进程的4G内存都是虚拟内存, 实际分配的大小是很小的, 直到进程认为自己的内存不足的时候才再申请更大的内存而已.

段选择和段描述符一共是48位的大小, 我们的寄存器根本没有这个位的, 怎么保存? 实际上GDT单独存放在GDTR特殊寄存器中, 低16位保存GDT大小, 高32位保存GDT在存储器中的位置. 它的结构体可设置为

typedef struct gdt_ptr_t
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值