5

我想清楚用户空间程序和操作系统交互。在文件 I/O 的上下文中,我想知道像 java 文件 i/o API read() 这样的用户应用程序如何工作。由于文件操作由诸如 open() close() read() write() 之类的 POSIX 系统调用访问,那么 java 代码如何调用这些系统调用?

当我们编译 java 代码时,java read() API 会编译成什么样的指令?据说,用户程序会引发陷阱/软件中断以进行系统调用。那么Java read() API 是否也引发了陷阱?java中是否有用于引发陷阱的API?如果是,那么这些 API 可能会被编译以捕获诸如 'INT' 之类的指令?但是,INT 是否调用更高层的 POSIX 系统调用或一些固定的 ISR(中断服务例程)?

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

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

4

1 回答 1

0

也许我在http://pages.cs.wisc.edu/~remzi/OSFEP/intro-syscall.pdf上得到了很好的说明,
因此我得到了以下流程:Java Code -> JNI -> read() syscall in C -> 内核子程序。但最后一个疑问:Java 中的 JNI 如何调用 C 代码?

于 2013-10-30T08:41:40.427 回答