WINDOWS下的gdt和ldt

SGYHMSLY 2007-04-13 08:57:52
是这样的,我想问下Windows 在Intel Protection Mode下工作的问题。
在指令手册第三卷system programming 可以看到,通常GDT只有一个,而LDT可以有很多的。
本来我很天真地想:
那么我又多少个进程在running 就应该有多少个LDT才对。
于是我打开softice, 输入GDT
结构只有一个被标为LDT,参考了using softice,只看到如下一段:
Under Winnt , LDT are per process data structures and are only used for virtual dos machines.
The 16 bit WOW box is executed within a NTVDM process and has an LDT.
Like Windows 3.1 the LDT for a WOW contains the selectors for every 16 bit proteced mode code and data segment for each 16 bit application or DLL that is loaded. It also contains the selectors for each task database, module database, local heaps, global allocation, and all USER and GDI objects that require the creation of a selector. Under a WOW, because the number of selectors needed can be quite large, a full LDT is created with a majority of the entries initially reserved. These reserved selectors are allocated as needed. Under a non-WOW VDM, the size of the LDT is significant smaller.

老实说我不知道它在说什么,最后的结果就是我只能看到一个LDT.
这实在太奇怪了,请问难道windows不用LDT?

第二个奇怪的是
GDTbase=80036000 Limit=03FF
0008 Code32 Base=00000000 Lim=FFFFFFFF DPL=0 P R
0010 Data32 Base=00000000 Lim=FFFFFFFF DPL=0 P R
001B Code32 Base=00000000 Lim=FFFFFFFF DPL=3 P R
0023 Data32 Base=00000000 Lim=FFFFFFFF DPL=3 P R
0028 TSS32 Base=8000B000 Lim=000020AB DPL=0 P B
0030 Data32 Base=FFDFF000 Lim=00001FFF DPL=0 P R
003B Data32 Base=7FFDE000 Lim=00000FFF DPL=3 P R
0043 Data16 Base=00000400 Lim=0000FFFF DPL=3 P R
0048 LDT Base=E156C000 Lim=0000FFEF DPL=0 P

显然code32 data32也就是从0008-001b
这段是固定的,所谓的flat mode,可是真的不明白,
明明规定4g地址只有低2g空间是用户可以访问的。
高2G操作系统用,也就是ring0才能访问。
那么这里有两个Code32,一个是ring3(0008),一个是ring0(001B)
那么同一句汇编指令,访问32位偏移0xYYYYYYYY地址,
操作系统怎么知道是访问上面那个还是下面那个,
有两个段,这两个段根本都覆盖了4g空间,却具有不同的权限,dpl 不同,
同一个地址到底要怎么解释呢?

晕眩。
...全文
624 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Nixom 2007-04-20
  • 打赏
  • 举报
回复
要结合cs和ds的内容,cs里的值是1b,ds是23,所以你的程序是处在ring3.

ps:楼主的softice能在windows下用吗?怎么弄的?
Alecksun 2007-04-14
  • 打赏
  • 举报
回复
Windows 的分段是个摆设,你当它不存在好了,真正的保护是在分页上处理的,低2G页表的特权级是用户的,高2G页表的特权级是系统的。至于分段,你说对了,就是给分页提供一个平坦的4G空间。同时段选择子表明了当前的特权级。

至于LDT,windows还真不用,为什么一定要用呢?一般的PC操作系统都不用,Linux也不用

下载代码方式:https://pan.quark.cn/s/a4b39357ea24 全国计算机等级考试二级教程《Python语言程序设计》(2018年版)被视为针对Python入门者和备考人员的核心学习材料。该资料汇总了教材内的所有编程练习答案,这些答案在Python 3.5.3环境中经过实际执行测试,从而保障了代码的准确性和应用价值。备考人员借助这些答案,能够评估自身的学习进度,并深入理解和熟练掌握Python编程的基础原理与方法。 1. Python基础理论:Python作为一门高级编程语言,因其简明扼要的语法结构和卓越的功能表现而备受推崇。基础内容涵盖了变量、数据种类(例如整型、浮点型、字符串、布尔型、列表、元组、字典、集合)、逻辑控制(比如条件判断if-else,循环控制for、while)、函数的声明及使用、模块的引入等。 2. Python高级应用:Python的进阶内容涉及异常管理(try-except-finally结构),类与实例(面向对象编程的基础,包含类的构造、对象的生成、属性与方法的运用、继承机制、多态表现),装饰器(用于调整函数或类的功能特性),上下文管理器(借助with语句实现资源管理)等。 3. 数据文件处理:Python配备了全面的文件操作功能,涉及文件的开启、数据读写、关闭操作,以及多种操作模式(例如r模式用于读取,w模式用于写入,a模式用于追加内容等)。此外,还包括文本文件与二进制文件的转换处理,以及文件的位置调整、复制和删除等操作。 4. 标准库的运用:Python的标准库资源极为丰富,比如os模块提供操作系统接口,sys模块用于获取系统参数,random模块可用于生成随机数值,datetime模块负责处...
代码下载地址: https://pan.quark.cn/s/664854f01855 TCP/IP SOCKET协议构成了互联网通信的基石,它明确了网络设备之间数据交换的规范。TCP(Transmission Control Protocol)是一种以连接为导向、具备可靠性且基于字节流的传输层通信规范,而UDP(User Datagram Protocol)则是一种非连接型且不可靠的传输协议。在实施TCP/IP SOCKET的调试工作中,专业的软件能够协助开发者更清晰地洞察网络通信的流程,精准地找出故障点,并对代码进行改进。 "TCP模拟调试工具"即为一种实用的辅助性软件,它赋予用户模拟TCP连接、发送及接收数据的能力,从而对网络应用程序进行测试和调试。此工具或许具备以下几项功能: 1. **连接模拟**:可以模拟客户端与服务器之间TCP连接的完整过程,涵盖三次握手和四次挥手阶段,从而帮助理解TCP连接的完整生命周期。 2. **数据发送与接收**:支持自定义数据包的发送,并能显示接收到的数据,这对于核实数据传输的准确性极为关键。 3. **错误检测与重传**:TCP协议内含错误检测和丢失数据自动重传的机制,该工具或许能够模拟这些场景,助力开发者测试其应用的容错性能。 4. **流量控制与拥塞控制**:TCP通过滑动窗口机制实现流量控制与拥塞管理,工具或许提供查看和调整这些参数的选项。 5. **端口监听**:能够监听指定的端口,观察数据的进出情况,这对于服务器端程序的调试尤为有益。 6. **日志记录**:记录所有通信事件,便于后续的分析与问题定位。 7. **多线程支持**:针对处理多个并发连接的程序,工具或许提供多线程或并发会话的模拟。 8. **协议解...

21,500

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧