5

ユーザー空間プログラムと OS の相互作用を明確にしたいと考えています。ファイル 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 (Interrupt Service Routines) を呼び出しますか?

私は混乱しており、コンパイルから実行まで、このシナリオでシステムコールがどのように行われるかを段階的に知りたいと思っています。

この単純な概念で私を助けてください。

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 に答える