【问题标题】:How are system calls are done when writing Java code or any other language?在编写 Java 代码或任何其他语言时,系统调用是如何完成的?
【发布时间】:2019-07-23 13:22:46
【问题描述】:

在系统编程课上,我们被告知所有的系统调用都是用c进行的。例如打开一个文件进行读/写。 java后面跑c代码吗?

【问题讨论】:

  • 取决于您在哪个操作系统上运行您的程序,因为 JVM 是根据平台实现的。我猜你甚至可以为 javascript 编写一个 JVM(如果它不存在的话)
  • Java 在虚拟机上运行。虚拟机的代码可以用任何语言编写,只要它符合 Java 虚拟机 (JVM) 规范中规定的要求。但是,是的,JVM(或至少它的一部分)通常是用 C 编写的。

标签: java c operating-system


【解决方案1】:

是的,java 在后台运行 C 代码。使用 native 关键字。

例如:System.currentTimeMillis() 是一个本地方法

这里很好地解释了如何使用本机代码: https://www.baeldung.com/java-native

【讨论】:

    【解决方案2】:

    系统调用不是用 C 语言进行的。它们几乎完全是用汇编语言或像 BLISS 这样可以访问硬件指令的语言完成的。

    系统调用需要触发异常才能将处理器置于受保护模式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-11
      • 1970-01-01
      • 2011-03-28
      • 2014-09-26
      • 1970-01-01
      • 2014-11-20
      • 1970-01-01
      相关资源
      最近更新 更多