複合システムコールのようなものが実装されていないのはなぜですか?

複合システムコールのようなものが実装されていないのはなぜですか?

Syscall(システムコール)は、カーネルとユーザースペースの間の分離によって一部のパフォーマンスが低下します。したがって、システムコールを減らすのは良い考えのようです。

だから私の考えは、システムコールを1つにまとめることができるということです。したがって、アイデアは、システムコールとパラメータをメモリ内の単純なデータ構造に配置することです。その後、このデータ構造を提供する新しいシステム呼び出しを導入できます。その後、カーネルはすべての機能を並列にトリガーし、1つ(またはすべて)のシステム呼び出しが完了したらスレッドを再開できます。

私はこのアプローチが同時プログラミング(非同期I / O)のための良い基盤になり、すべてのシステムコールで同時実行を可能にし、コンテキスト全体の移行を減らすことによって既存の選択/ポーリング/エポーリングソリューションを改善すると思います。

なぜこれが行われていないのですか?

ベストアンサー1

これはすでに存在します。 Linuxでは、実装は次のとおりです。io_uring、カーネルバージョン5.1(2019年5月)から利用可能:ジョブはキュー(またはより正確にはリング)に配置され、システムコールなしで処理され、結果は別のキューに送信されます。

おすすめ記事