Naja, meine Module werden von einem JIT Compiler kompiliert und wie alle Java/Bytecode Anwendungen in Ring0 ausgeführt. Ring3 Programme werden nur aus Kompitibilitätsgründen unterstützt. Wenn ein Ring3 Programm ein Ring0 Modul aufrufen will, macht es einen SYSCALL/SYSENTER/INT (je nachdem, was auf dem System unterstützt wird) in den Kernel, der dann die Parameter, die in den Registern übergeben werden, pushed, und dann den kompilierten Bytecode aufruft. Threads (egal welche Privilegstufe) können wie in meinen letzten Posts beschrieben kommunizieren.