ChinaUnix.net
相关文章推荐:

gdt

在内存分段系统中,一个程序的逻辑地址通过分段机制自动地映射(变换)到中间层的4GB(232B)线性地址空间中。程序每次对内存的引用都是对内存段中内存的引用。当程序引用一个内存地址时,通过把相应的段基址加到程序员看得见的逻辑地址上就形成了一个对应的线性地址。此时若没有启用分页机制,则该线性地址就被送到CPU的外部地址总线上,用于直接寻址对应的物理内存。如图5-6所示。 图5-6 虚拟地址(逻辑地址)到物理地址的变换...

by bingqi17 - Linux文档专区 - 2009-01-09 15:11:54 阅读(822) 回复(0)

相关讨论

在Protected Mode下,一个重要的必不可少的数据结构就是gdt(Global Descriptor Table)。 为什么要有gdt?我们首先考虑一下在Real Mode下的编程模型: 在Real Mode下,我们对一个内存地址的访问是通过Segment:Offset的方式来进行的,其中Segment是一个段的Base Address,一个Segment的最大长度是64 KB,这是16-bit系统所能表示的最大长度。而Offset则是相对于此Segment Base Address的偏移量。Base Address+Offset就是一个内存绝...

by xiaobao_linux - Linux文档专区 - 2009-12-02 22:49:12 阅读(959) 回复(0)

在Protected Mode下,一个重要的必不可少的数据结构就是gdt(Global Descriptor Table)。 为什么要有gdt?我们首先考虑一下在Real Mode下的编程模型: 在Real Mode下,我们对一个内存地址的访问是通过Segment:Offset的方式来进行的,其中Segment是一个段的Base Address,一个Segment的最大长度是64 KB,这是16-bit系统所能表示的最大长度。而Offset则是相对于此Segment Base Address的偏移量。Base Address+Offset就是一个内存绝...

by sobjustin - Linux文档专区 - 2009-06-13 16:05:39 阅读(495) 回复(0)

请问: [code]gdt_descr: .word (8+2*NR_TASKS)*8-1[/code] 这段是什么意思? 这个是不是可以随便自己指定的?

by inselberg - 内核源码 - 2009-05-30 10:36:00 阅读(1194) 回复(3)

gdt记录的是gdt表的界限和首地址。

gdt表中的表项包含了代码段的首地址。实模式时可以通过这个首地址找到代码段,保护模式下,给这个首地址加了个外衣,叫选择子,也就是说可以通过选择子找到。

选择子是一个相对于gdt表的首地址的偏移。

代码段就是这样通过gdt找到的。

by ehyyngp - 移动操作系统 - 2011-12-23 03:03:00 阅读(1133) 回复(0)

好久没有看kernel的启动部分代码了,今天在看tim robinson's gdt trick的时候有些吃力了,本来是想翻译来着,但是比较简单,就直接贴过来了,里面掺杂着一些我添加的注释。 //其实下面的关于地址的讨论,有些概念性的错误。 //这里应该注意几个概念:逻辑地址,线性地址,虚拟地址和物理地址。 //逻辑地址:也就是汇编代码中的段选择子+段内偏移形式的表示的地址,例如这里的0x08:highhalf //线性地址,或者是虚拟地址,是经过分...

by CUDev - Linux文档专区 - 2009-04-19 00:15:38 阅读(636) 回复(0)

在linux 2.6内核中,所有的用户代码段共用__usr_cs_,_usr_ds_描述符项,所有的内核区代码共用__kernel_cs_, __kernel_ds_描述符项,那么内核是如何区分各个进程的,gdt的索引又在什么时候用呢?刚看ulk,头疼

by xiaowhere - 内核源码 - 2009-01-20 09:36:09 阅读(2076) 回复(3)

大家好,我现在在看linux0.11进程调度的copy_process()函数,有个和gdt,LDT有关的问题想不明白: linux在启动时,在setup阶段会建立gdt并设置gdtR,其中gdt在内存中的布局如下: --------------------- . . . --------------------- 数据&堆栈段描述符 --------------------- 代码段描述符 --------------------- 描述符(NULL) --------------------- ———>局部描述符标LDT0 ----...

by NewCore - 内核源码 - 2014-05-16 17:17:28 阅读(2524) 回复(9)

请教一下在linux下如何获取gdt的利用率,还想看看源码怎么实现的,接口函数是什么?谢谢

by flyoneday - 内核/嵌入技术 - 2005-06-06 20:02:08 阅读(572) 回复(0)

请教一下在linux下如何获取gdt的利用率,还想看看源码怎么实现的,接口函数是什么?谢谢

by flyoneday - 内核源码 - 2005-06-06 20:02:08 阅读(1072) 回复(0)

在head.S 中加载 gdt 时:[code]cpu_gdt_descr: .word gdt_ENTRIES*8-1 .long cpu_gdt_table[/code][code]ENTRY(cpu_gdt_table) .quad 0x0000000000000000 /* NULL descriptor */ .quad 0x0000000000000000 /* 0x0b reserved */ ......[/code]lgdt cpu_gdt_descr 指令加载 gdtr 寄存器(48位),高32位为 cpu_gdt_table 地址,低16位为表大小! 但是在desc.h中:[code]extern struct desc_struct cpu_...

by zd零 - 内核源码 - 2010-08-05 16:19:14 阅读(3025) 回复(2)