中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » DOS4GW能直接运行INT21H的原因是什么?
作者:
标题: DOS4GW能直接运行INT21H的原因是什么? 上一主题 | 下一主题
defrag
中级用户

痴迷DOS者


积分 456
发帖 570
注册 2004-10-9
状态 离线
『楼 主』:  DOS4GW能直接运行INT21H的原因是什么? [已使用 LLM 解释]

难道是INT21H后就进入V86???
LLM 解释

DOS4GW 处理 INT 21H 的机制涉及保护模式与实模式的切换,具体流程如下:

  1. 保护模式下的中断捕获
    DOS4GW 作为 DPMI 服务器运行于保护模式,通过 IDT(中断描述符表)重定向 INT 21H 向量至自身处理例程。当应用程序执行 int 21h 时,CPU 并非直接进入 V86 模式,而是触发保护模式下的中断处理。

  2. 模式切换决策
    DOS4GW 首先检查 INT 21H 功能号:

    • 保护模式兼容功能(如 DPMI 扩展调用 0x31):直接在保护模式内处理,无需切换。
    • 传统实模式功能:DOS4GW 需切换至 V86 模式以调用实模式 DOS 内核。
  3. V86 模式转换与执行
    对于需实模式处理的调用,DOS4GW 执行以下步骤:

    • 保存当前保护模式上下文(寄存器、段选择子)。
    • 建立 V86 模式执行环境(设置 VM 标志、模拟实模式段寄存器)。
    • 将 INT 21H 指令“注入”V86 环境执行,由实模式 DOS 处理。
    • 完成后恢复保护模式上下文,将结果返回应用程序。
  4. 关键技术点

    • DPMI 规范支持:DOS4GW 遵循 DPMI 1.0 标准,通过 INT 31H 提供模式切换接口。
    • 效率优化:频繁调用的 INT 21H 功能可能被缓存或模拟,减少模式切换开销。
    • 内存隔离:V86 模式下通过页表限制实模式代码访问范围,确保保护模式内存安全。

结论:INT 21H 并非直接触发 V86 模式,而是由 DOS4GW 根据功能类型动态决定处理方式,V86 模式仅用于需要实模式环境的传统 DOS 系统调用。这种设计既保留了 DOS 兼容性,又充分利用了保护模式的内存管理能力。





DOS不是万能的,没有DOS是万万不能的
自古系统谁无死?留取胆清照汗青!uploadImages/20035317345478982.png
2009-8-17 22:09
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: