Computer science 为什么windows应用程序不能在linux或mac上运行?

Computer science 为什么windows应用程序不能在linux或mac上运行?,computer-science,Computer Science,我阅读了SO问题,但仍有疑问- 其中一份答复说,“每个操作系统都要求二进制文件符合特定的二进制格式。” 对吗?如果是,那么我们可以在上述声明中添加以下内容: 可执行文件包含二进制代码(???)。假设100011表示windows二进制格式的5。但这些相同的代码在另一个操作系统中意味着其他东西,甚至什么都没有。因此,为win制作的可执行文件在linux中不起作用 Windows和Linux使用不同的基础构建。Windows基于DOS,Linux基于UNIX。如果Windows已经发布了他们操作系统

我阅读了SO问题,但仍有疑问-

其中一份答复说,“每个操作系统都要求二进制文件符合特定的二进制格式。”

对吗?如果是,那么我们可以在上述声明中添加以下内容:
可执行文件包含二进制代码(???)。假设100011表示windows二进制格式的5。但这些相同的代码在另一个操作系统中意味着其他东西,甚至什么都没有。因此,为win制作的可执行文件在linux中不起作用

Windows和Linux使用不同的基础构建。Windows基于DOS,Linux基于UNIX。如果Windows已经发布了他们操作系统的源代码,那么Linux可能会更兼容,能够运行Windows程序,但这并没有发生。Linux是自己开发的,因此它是可以理解的,所以它会有所不同。除此之外,Linux还使用不同的系统命令和调用,因此即使它们都有“可执行程序”,它们的执行方式也是特定于操作系统的

例如:在Windows中打开命令提示符并键入
dir
。这将列出当前目录的所有文件和子目录。但是,Linux相当于目录的列表内容是
ls


资料来源:

用简朴的英语试图回答我自己的问题-

操作系统允许应用程序/程序与硬件(显示器、键盘、网卡等)交互。它就像是应用程序和硬件之间的中间人

为什么我们首先需要一个中间人?我不知道答案,但我会猜。也许我们可以在我们的应用程序中添加代码,使其能够与所有硬件交互。但是,如果每个应用都这样做,那么每个应用都需要太多的空间——这是一种浪费。他们将被解雇。例如,所有游戏都有自己的代码,可以在不同品牌的显示器上显示游戏的屏幕。也许还会有其他问题

要与硬件交互,程序需要与操作系统“对话”或进行“系统调用”。操作系统使用的“语言”称为“API”。每个操作系统都有一个独特的API。因此,windows API中的“对话”程序将无法与linux系统“对话”

我使用的链接-
http://en.wikipedia.org/wiki/System_call

嘿!为什么要投反对票?如果你认为这是一个愚蠢的问题,那么请回答并启发我。如果任何人有CS知识和/或CS学位,请改进或纠正这个答案。