软件兼容性的定义及操作系统对比:

向上(下)兼容指的是按某档机器编制的软件,不加修改就能运行于比它高(低)档的机器上。
向前(后)兼容指的是按某个时期投入市场的该型号机器上编制的软件,不加修改就能运行于比它前(后)投入市场的机器上。
目前市面上流行的操作系统有:windows、linux、mac、android、ios
Windows的特点就是兼容性强,几乎所有硬件驱动都是优先适配Windows的,Windows的向后兼容使得它满足几乎所有类型用户的需求,假如Windows不能向后兼容就不会像现在这么流行
linux是免费开源的,一般用于无界面的服务器应用,在学术界和工业上应用比较多
mac和ios界面漂亮系统稳定安全性较好,软件生态完善,Android市场占有率有绝对优势,目前存在系统碎片化的问题
PS:WIN10高分辨率下开DPI缩放已经对4k支持比较好了,现在HTML5能较好的兼容手机与PC的浏览体验。Windows(\r\n)与Linux换行符(\n) 目录斜杠win() linux(/)。64位的系统上可以运行64位和32位的软件,32位系统只能运行32位软件。黑苹果Hackintosh可以上 NUC8i5BEH厚款 冥王峡谷

虚拟程序包括操作系统虚拟机、解释型语言虚拟机、容器(如docker)

所有解释型语言都有自己的虚拟机,常见的有:java虚拟机、python虚拟机、.net CLR ,Android系统的解释语言虚拟机过去是Dalvik,Dalvik在应用每次运行时都会执行转换机器码操作,到了5.0以上换成了ART(Android Runtime),ART应用在第一次安装的时候,字节码就会预先转换成机器码
Docker 是一个应用容器,可以打包应用以及依赖包到一个可移植的镜像中,在主流的操作系统上运行这些应用,和操作系统虚拟机的区别是,容器更轻量级,是直接运行在操作系统之上的,而操作系统虚拟机在虚拟层之上运行了一个完整的操作系统,再在上面运行软件。

虚拟机分为硬件级模拟和软件级模拟

硬件级会开启CPU的VT特性,能够模拟的指令集架构和自身CPU架构类似,具有速度快,精度高的优点,如Virtual PC、 VMware、VirtualBox等。
软件级模拟通过1到N条指令的程序实现模拟的指令,速度比较慢,但可以模拟不同指令集架构,具有无以伦比的可移植性,QEMU和Bochs 属于软件模拟
某些外挂或者恶意程序会检测自身是否在虚拟机中运行以对抗分析,一个比较奇葩的检测方法是检测壁纸是不是系统默认壁纸
安卓模拟器是基于虚拟机的安装的操作系统,常用的有逍遥安卓模拟器,genymotion、bluestacks等,一些游戏机模拟器也是这样的。

在某种操作系统上运行另一种操作系统的软件的方案有如下几种:
wine是一个能够在多种 POSIX-compliant 操作系统(如 Linux)上运行 Windows 应用的兼容层
MinGW是著名C/C++编译器GCC的Windows版本
Cygwin是一个在windows平台上运行的类UNIX模拟环境
WSL Windows Subsystem for Linux