模拟器可以有不同的类型,具体取决于用例和主机环境。以下是需要注意的基本模拟器类型:
1. 终端模拟器
终端仿真器是模拟传统计算机终端功能的软件。这些终端由显示器和键盘组成,主要用于连接其他计算机,如小型机或大型机。终端仿真程序完成同样的工作。
终端仿真器使主机能够通过命令行或图形界面联系另一台计算机,包括远程系统。使用 Telnet 和 SSH 等协议,可以进行通信。该仿真使主机能够在远程计算机上使用或执行应用程序,并在两者之间交换文件。这里的优点是两个设备的操作系统不需要相同。
2.打印机模拟器
打印机仿真是提供一系列打印机命令语言的打印机应用程序。同时,它们提供了可管理性和安全性。多种仿真可以传输到打印机,使用户能够选择合适的命令语言。考虑到为 HP 打印机创建的软件数量,例如,许多软件旨在复制 HP LaserJet 打印机。通过模拟 HP 打印机,它能够与为真正的 HP 打印机设计的任何软件一起工作。
3. 游戏机模拟器
视频游戏机模拟器允许机器模拟视频游戏机的硬件并在模拟平台上运行其游戏。大多数情况下,模拟器具有超越实际硬件边界的附加功能,例如更广泛的控制器兼容性、更好的性能、更清晰的清晰度、单击即可访问作弊码等。
仿真器还有助于为过时的、失效的或不常见的系统制作自制演示和新游戏。模拟器通常通过 ROM 文件(游戏卡带内容的副本)或 ISO 映像(光学媒体的副本)接收游戏的代码和数据。
4. 全系统模拟器
完全仿真模拟一切,包括 CPU、芯片组、基本输入/输出系统 (BIOS)、设备和中断。COREMU 是一个开源并发仿真平台,可降低集成全系统环境的复杂性。像这样的模拟器很难构建,因为它们需要精确消除主机上的系统依赖性。
5.CPU模拟器
CPU 模拟器是模拟物理 CPU 的软件应用程序。解释器——跟踪模拟程序代码执行路径的计算机程序,是 CPU 模拟器的最简单变体。对于检测到的每条机器代码指令,在主机 CPU 上执行与源指令语义相似的操作。计算机科学家利用这些模拟器执行各种任务,包括调试、分析和恶意软件分析。
6. 功能器模拟器
功能仿真是使用计算机程序模仿另一个用符号汇编语言或编译器代码而不是二进制机器代码编写的计算机程序运行的做法。在不创建二进制代码的情况下,程序员可以运行和跟踪指定的源代码位,以使用功能模拟器查找编程错误(错误)。
7.服务器模拟器
通常,多人视频游戏需要一个 Internet 游戏服务器,该服务器可能无法访问以进行本地安装。服务器仿真器是一种未经授权的本地服务器,它模仿经授权的互联网服务器的行为,尽管其核心流程可能有所不同。这并不总是仿真技术的合法使用。
8. 网络模拟器
在实验室中测试网络(无线、5G、MANET 等)的行为是网络仿真。PC或虚拟机上运行的软件进行网络仿真;偶尔使用单独的仿真设备进行链路仿真。网络会引发延迟、故障和数据包丢失,以测试它们在模拟器中的表现。
9. 移动模拟器
顾名思义,移动仿真器在台式计算机上或作为基于云的测试平台的组件来模拟设备的硬件和软件。它是基于机器级汇编语言的移动应用程序的全面重新实现。Android(软件开发工具包或 SDK)模拟器说明了这一点。它使开发人员能够评估他们的应用程序在各种硬件类型和屏幕尺寸上的外观。
仿真器如何工作?
在深入研究其内部工作原理之前,让我们先了解一下仿真的基本价值主张。仿真通过控制 CPU 及其组件单元的行为来运行。仿真器构建系统的每个组件,然后连接它们,类似于电线连接硬件组件的方式。确切的操作将根据您使用的是低级还是高级仿真技术而有所不同。
底层工作
低级仿真 (LLE) 模拟仿真硬件的行为。主机将尽可能地模拟程序执行的环境,程序将在其中进行处理。硬件或软件均可实现 LLE。
由于它复制了硬件的行为,因此低级仿真是模拟所考虑系统的最准确措施之一。然而,基于硬件的仿真只是有时可行,因为它会增加系统成本。
然而,基于软件的仿真需要对系统或其组件有深入的了解,只有在文档足够的情况下才能获得这些知识。要以相同的速度执行程序,需要一个比原来的系统强大得多的系统。这就是高级仿真技术发挥作用的地方。
高层工作
高级仿真 (HLE) 提供了一种独特的系统仿真方法。它不是模拟硬件本身,而是复制设备的功能。它提供了一组开发人员经常使用的操作,并有效地管理所有细节。
高级仿真器使用三种技术进行操作:
解释:模拟器通过逐行模拟每条指令要完成的任务来运行应用程序的代码。这种方法的主要问题是它非常慢;每次处理指令时,仿真器都必须对其进行解码并执行必要的操作。
动态重新编译:仿真器检查应用程序的机器指令部分,看它们是否可以优化以在主机处理器上更有效地运行。这与单独执行每条指令形成对比,后者通常会导致更大的开销。因此,当仿真器再次遇到特定指令集时,它只需运行缓存的代码即可。
列表拦截:具有足够硬件抽象的协处理器,如图形处理单元 (GPU) 和音频芯片,需要主处理器提供指令列表。这是一个命令集,它建议协处理器执行什么。仿真器可以捕获命令列表并将其转换成主机的协处理器可以解释的格式。
处理器时序和中断处理是决定仿真器如何与 CPU 接口以适当运行的原则。
特定系统,尤其是较旧的系统,要求仿真器具有精确的时序以与当前的 CPU 兼容。例如,任天堂娱乐系统 (NES) 测量像素处理单元 (PPU) 中的处理器时序,这需要 CPU 在不同时刻将像素加载到内存中。
总之,中断是 CPU 与硬件交互的主要方式。通常,您的硬件组件会向 CPU 传达哪些中断对它们至关重要。因此,仿真器也可以通过中断处理来启用相同的功能。
模拟器对于开发人员来说一直是至关重要的,因为它们允许您在不同的环境中运行和测试应用程序,而不会产生配置新操作系统的成本。需要在 Linux PC 上访问 Windows 应用程序的DevOps 工程师经常求助于模拟器。此外,仿真最重要的用例之一是游戏,因为新版本的游戏软件会很快推出,并且向后兼容性仍然很少见。仿真器允许用户在使用现代系统的同时恢复和保留旧技术。