Java中的用户程序如何进行系统调用/调用内核子程序?

时间:2013-10-30 06:15:24

标签: operating-system kernel system-calls

我希望明确用户空间程序和操作系统交互。在文件I / O的上下文中,我想知道像java文件i / o API read()这样的用户应用程序是如何工作的。 由于文件操作是通过POSIX系统调用来访问的,例如open()close()read()write(),java代码如何调用这些系统调用?

当我们编译java代码时,java read()API会编译成什么样的指令? 据说,用户程序会引发陷阱/软件中断以进行系统调用。那么Java read()API也会引发陷阱吗? java中是否有API来提升陷阱?如果是,那么这些API可能会编译为陷阱'INT'等指令?但是,INT会调用更高层的POSIX系统调用还是某些固定的ISR(中断服务程序)?

我很困惑并试图逐步了解......从编译到执行 - 如何在这种情况下完成系统调用。

请帮我解决这个简单的概念。

1 个答案:

答案 0 :(得分:0)

也许我对http://pages.cs.wisc.edu/~remzi/OSFEP/intro-syscall.pdf得到了很好的澄清 因此,我推荐以下流程:Java代码 - > JNI - > C中的read()系统调用 - >内核子程序。  但最后有疑问:Java中的JNI如何调用C代码?