AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1519671
Accepted
ioi-xd
ioi-xd
Asked: 2020-01-24 14:16:00 +0800 CST2020-01-24 14:16:00 +0800 CST 2020-01-24 14:16:00 +0800 CST

64 位计算机 (x86) 可以在没有仿真的情况下本机运行 16 位操作系统吗?

  • 772

如果您要构建一个具有完全现代部件的现代 x86 计算机,您是否可以在没有任何仿真甚至使用 FreeDOS 的情况下将 MS-DOS 6.11 和 Windows 3.11 加载到它上面?我最近看到一个视频,它是用 32 位操作系统 Windows 95 完成的,但它可以用像 Windows 3.1 甚至更低的 16 位操作系统完成吗?

64-bit x86
  • 4 4 个回答
  • 9730 Views

4 个回答

  • Voted
  1. Best Answer
    Ro-ee
    2020-01-24T14:44:52+08:002020-01-24T14:44:52+08:00

    是的。64 位 CPU(x86 类型)可以在 x86 实模式下运行,这就是 16 位应用程序运行的基础。你有它的所有限制(640KB 内存、16 位宽寄存器等),但你的处理器速度比 80 年代快数百甚至数千倍,当时这些 16 位操作系统风靡一时。

    不过,硬件访问是有问题的。由于英特尔计划在 2020 年积极放弃对旧版 BIOS 甚至兼容性支持模块的支持,因此您的 16 位应用程序将无法依赖 BIOS 调用来进行磁盘访问、图形、键盘/鼠标输入等。必须为所有这些都编写 16 位驱动程序,这实际上是不可行的,因为大多数设备无法用 16 位寻址(设备 PCI 地址通常在 3GB 左右),而且没有办法告诉您的驱动程序“将此缓冲区数据写入地址 0xEF000000”(因为这将是驱动程序所期望的)。

    另一方面,如果您仍然有传统的 BIOS(或至少启用了 UEFI CSM),您仍然可以运行旧的 16 位软件。但是,硬件支持将受到限制,因为所有这些都必须由 BIOS 提供,并且 BIOS 制造商可能会减少广泛的支持,仅支持有限数量的 USB 设备以及一定数量的 SATA(甚至 NVMe)设备.

    • 53
  2. Sam Forbis
    2020-01-24T14:44:51+08:002020-01-24T14:44:51+08:00

    随着 CPU 和 PC 的发展,CPU 制造商一直致力于保持与以前的指令集和软件的向后兼容性。您仍然会在 Intel 8086(从 1970 年代后期)上引入的现代 x86-64 CPU 上找到一些说明。

    您的问题的答案是肯定的,现代 x86-64 PC 在技术上可以运行 16 位操作系统。事实上,这里有一个热门 YouTuber LGR 的视频链接,显示他在他的新游戏 PC 上安装 MS-DOS 6.2。

    做这样的事情有一些明显的限制。在 DOS 中,您将无法访问超过 640K 的 RAM。同样,如果您在 64 位硬件(或 32 位硬件)上运行 32 位操作系统,则您运行的程序将被限制为使用 4GB 的 RAM。

    综上所述,64 位操作系统不能像 32 位软件那样本机运行 16 位软件。一个奇怪的怪癖,但这就是计算机芯片饼干崩溃的方式。

    • 14
  3. phuclv
    2020-01-24T21:51:42+08:002020-01-24T21:51:42+08:00

    是的。现代 x86-64 CPU 仍然完全向后兼容,甚至可以追溯到第一代 (8086)

    完全向后兼容性在计算机指令集架构中尤为重要,其中最成功的架构之一是 x86 系列微处理器。它们的完全向后兼容性可追溯到 1978 年推出的 16 位 Intel 8086/8088 处理器。(反过来,8086/8088 的设计考虑到为其前身编写的程序易于机器翻译,尽管它们不是指令- 从 1974 年起与 8 位 Intel 8080 处理器兼容。

    https://en.wikipedia.org/wiki/Backward_compatibility#Hardware

    它甚至从DOS 运行的实模式启动。启动后,引导加载程序或内核将根据需要切换到 32 或 64 位模式

    支持保护模式的 x86 处理器引导到实模式,以向后兼容旧的 8086 类处理器。上电(又名启动)后,处理器以实模式初始化,然后开始执行指令。可能存储在ROM中的操作系统引导代码可以将处理器置于保护模式以启用分页和其他功能。保护模式下的指令集类似于实模式下使用的指令集。

    https://en.wikipedia.org/wiki/X86#Protected_mode

    因此,绝对有可能在所有 x86 CPU 中安装所有 DOS 版本,并遭受所有 DOS 限制,例如寻址模式或地址线的数量。Windows 3.x 实际上只是一个运行在 DOS 之上的 GUI 应用程序(虽然在不同的 16 位模式下),所以你也可以在现代机器上运行它


    然而,以前的模式和 64 位模式(AKA 长模式)的一个主要区别是,一旦 CPU 切换到长模式,它就不能转换回虚拟 8086 模式,所以你不能运行 16 位 DOS 64 位 Windows 中的应用程序。对于那些你必须在裸机上运行的人(所以在裸机上运行也可以)

    请参阅是否可以在支持 Intel IA-32e 模式的操作系统中运行 16 位代码?


    也就是说,尽管 CPU 支持完整的 16 位指令集,但由于缺乏现代硬件支持,启动系统可能很困难,正如其他人所说

    • 7
  4. Jasen
    2020-01-26T01:48:11+08:002020-01-26T01:48:11+08:00

    我最近看到了一个使用 Windows 95 完成的视频,

    Windows 95 是一个带有 32 位外壳的 16 位操作系统 (MS-DOS),所以您已经看到它完成了。

    • 1

相关问题

  • Shuttle XH61V / i7:支持 64b 窗口吗?

  • 我可以将 64 位 MS Access 连接到 32 位 ODBC 驱动程序吗?

  • 如何安装 Ole32.lib?

  • 是否有适用于 Windows 10 的 64 位版本的 Groovy?

  • 尝试在 AMD C-60 上运行适用于 Windows 的 Docker 时不支持虚拟化

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 为什么通过电缆(同轴电缆)的千兆位/秒 Internet 连接不能像光纤一样提供对称速度? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    fixer1234 “HTTPS Everywhere”仍然相关吗? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve