【问题标题】:Is operating system an abstraction?操作系统是抽象的吗?
【发布时间】:2011-02-09 16:31:38
【问题描述】:

在 DOS 环境或 Windows 环境中汇编、链接和加载汇编语言代码或 C 代码有什么关系?结果不应该一样吗?毕竟执行是由微处理器完成的,而不是操作系统。我正在从 MS-DOS 时代的一本旧书中学习汇编语言。是挫折吗?汇编语言及其代码执行不是独立于操作系统的吗?或者其他语言编写的代码?

【问题讨论】:

    标签: assembly dos


    【解决方案1】:

    汇编语言及其代码执行不是独立于操作系统吗?或者其他语言编写的代码?

    是和不是。

    是的。机器的语言独立于操作系统。不管是你自己写的还是 C 编译器为你写的都没关系。

    没有。您必须使用操作系统才能实际运行该软件。如果你想让它做一些有用的事情,你需要调用 OS API。这完全取决于操作系统。

    【讨论】:

    • @Slott 那么操作系统在运行软件中的确切作用是什么?将其复制到内存中,分配内存段,将第一个指令地址复制到IP?但是在做这一切的过程中,软件是汇编程序还是 C 又有什么关系呢?我的意思是,对于操作系统而言,可执行文件就是可执行文件,无论它是用哪种语言编写的,用哪种编译器编译的。
    • @Saurabh:“软件是汇编程序还是 C 有什么关系?” (1)没关系,(2)这不是你的问题。如果您的问题不正确,请更新
    【解决方案2】:

    是的,操作系统“标准化”了我们的程序和处理器之间的通信,因此 printf() 在 linux 和 windows(以及其他)、这些操作系统的许多不同版本和不同硬件上都可以正常运行配置。
    而且,理论上,可以在具有不同操作系统的同一处理器上运行相同的程序,因为操作码显然是相同的,但这不会因为金钱问题而发生(猜猜会发生什么如果有一天 linux 可以运行 windows 的应用程序..).
    因此,尽管运行或不运行二进制文件的可能性应仅取决于处理器,但它也取决于操作系统。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-18
      • 1970-01-01
      • 2018-05-17
      • 1970-01-01
      • 2015-06-13
      • 2015-06-25
      • 2016-10-31
      • 1970-01-01
      相关资源
      最近更新 更多