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

Operating system Java中的用户程序如何进行系统调用/调用内核子例程?,operating-system,kernel,system-calls,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?如果是,那

我想清楚用户空间程序和操作系统交互。在文件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(中断服务例程)

我很困惑,试图一步一步地了解。。。从编译到执行-在这个场景中如何完成系统调用


请帮我解释一下这个简单的概念。

也许我对
因此,我提供了以下流程:Java代码->JNI->C中的read()系统调用->内核子例程。
但最后一个疑问是:Java中的JNI如何调用C代码?

请参见和。JNI如何启动对C/C++库/程序的调用?