社区
汇编语言
帖子详情
关于ldt的一个疑问
Anod221
2007-11-04 05:05:57
一般来说每个程序编译完成得到了可执行的文件,里面是否会带有此程序专门的ldt呢?如果有的话,那这样的程序在多任务系统下面同时运行两个,操作系统应当怎么为它们分配内存空间啊?
...全文
92
5
打赏
收藏
关于ldt的一个疑问
一般来说每个程序编译完成得到了可执行的文件,里面是否会带有此程序专门的ldt呢?如果有的话,那这样的程序在多任务系统下面同时运行两个,操作系统应当怎么为它们分配内存空间啊?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Anod221
2007-11-05
打赏
举报
回复
那我想知道,我在同一时刻运行同样的一个可执行文件,里面有一个全局变量t,那这样的全局变量在可执行文件中应当有一个特定的地址(逻辑地址)吧,那我在一个进程下面改动这个t,另外的进程中的t是不会改变的,所以他们的物理地址应当是不一样的,那是怎么做到的呢,按道理无论是用段表的方式还是页表的方式它们都会映射到相同的地址吧?
Anod221
2007-11-05
打赏
举报
回复
//按道理无论是用段表的方式还是页表的方式它们都会映射到相同的地址吧?
你从哪看到的这个结论?不论是分段或分页机制都可以轻易做到不同地址
的映射。
是这样子的,我在网上看到winodws下面是默认把六个段寄存器的选择子选择到基址为0的4g的内存空间(flat模式),而我是在lunux底下用gdb同时开两个gdb调试同一个程序:
#include <stdio.h>
int t;
int main()
{
printf("%i\n",t);
t = 9;
printf("%i\n",t);
return 0;
}
在运行到t=9这一句,我用i reg看所有的寄存器,在两个gdb下面可以看到六个段寄存器是一样的值(而且指向的是GDT,因为第2位是0),所以有理由相信得到的线性地址是一样的(系统的GDT没有必要常常变动吧)!如果页表在我的gdb调试的时候没有进行动态的变动的话,当然是会映射到相同的地址的(我是看不到cr0和ldtr,gdtr的寄存器的内容的)
大熊猫侯佩
2007-11-05
打赏
举报
回复
//按道理无论是用段表的方式还是页表的方式它们都会映射到相同的地址吧?
你从哪看到的这个结论?不论是分段或分页机制都可以轻易做到不同地址
的映射。
王鲲彩
2007-11-05
打赏
举报
回复
同一个程序运行两次,就是两个不同的进程。一般操作系统会为不同的进程分配不同的LDT。
注意逻辑地址一般只是编程时从0开始的偏移地址而已。
大熊猫侯佩
2007-11-04
打赏
举报
回复
这是 保护模式的一个理论概念,但在 windows NT 中用的很少。
//一般来说每个程序编译完成得到了可执行的文件,里面是否会带有此程序专门的ldt呢?
它不是必须要有的。
清问
一个
Windows的程序的
LDT
是谁创建的?http://topic.csdn.net/t/20061228/17/5262577.html
清问
一个
Windows的程序的
LDT
是谁创建的?楼主Windows_80X86_C()2006-12-28 17:00:10 在 其他开发语言 / 汇编语言 提问
一个
Windows的程序的
LDT
是谁创建的? 看了80x86编程后,可以看到程序中自己创建了GDT和
LDT
,那么我...
GDT和
LDT
详解
那么总共有 1024 × 1024 × 4 K = 4 G 1024\times 1024\times 4\text{K}=4\text{G} 1024×1024×4K=4G 这里就会有
一个
疑问
了注意,逻辑地址中的 Offset 是 32 位的,而基于多级页表的线性地址的 offset 是 12 位...
GDT和
LDT
的关系
GDT(Glocal Descriptor Table)和
LDT
(Local Descriptor Table)在内存是怎样存放的呢?程序在运行时又是如何对GDT和
LDT
产生了影响?
GDT,
LDT
,GDTR,
LDT
R详解
LDT
R内容是
一个
段选择子:它是用来寻找
LDT
(
LDT
本身也是一段内存),这个
LDT
既然也是一段,那么他也有
一个
描述符,就放在GDT里面,
LDT
R里面就存放的是用来到GDT里面寻找的选择子。 理解:通过
LDT
R里面的段选择子,再...
os学习之每日
疑问
大总结-11.24
1。为什么分段会对内存有保护作用? 因为内存中每
一个
段都会对应着
一个
段描述符,如下图: 其DPL(Descriptor Privilege Level)位规定了内存段的...段选择子是存放在
一个
寄存器中的,其通过GDT/
LDT
找到所对应的段...
汇编语言
21,458
社区成员
41,603
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章