オペレーティングシステムの割り当てを行っています。これは新しいシステムコールを追加しています。 "ダンボフ(dumbfork)"と呼ばれるシステムコールは、コピーオンライトポリシーを使用せずにプロセスをフォークする必要があります。基本的には、アドレス空間全体を子プロセスにコピーする必要があります。copy-on-writeを無効にしてdo_forkを呼び出す
私はシステムカーネルをセットアップして再コンパイルすることができました。私は私のカスタムシステムコールを呼び出すことができますが、COW機能を無効にするためにダンボールを実際に実装する方法はわかりません。ソースコードの1つでは、sys_vforkがdo_forkを呼び出す方法を示しています。ダンボフはsys_vforkに似ているはずです。 do_forkのパラメータをどのように設定できるのか分かりません。私はsys_forkがどのように実装されているかを模倣しようとしましたが、それは私にNULLポインタ逆参照エラーを与えます。誰でもこの問題を私に教えてもらえますか?
asmlinkage long sys_dumbfork(struct pt_regs *regs)
{
return do_fork(SIGCHLD, regs->sp, regs, 0, NULL, NULL);
}
'sys_vfork'は、あなたが望むものの正反対です! –
はい、そうです。 vforkは、フラグCLONE_VM、CLONE_VFORK、およびSIGCHLDをdo_forkに渡し、アドレス空間を共有します。とにかくvforkの子はexecやexitを行いますので意味があります。 – NeoJi