2011-07-01 9 views

答えて

1

システムコールは、カーネルで処理が行われなければならない場合に実行されます。つまり、エスカレートされた特権またはカーネルプライベートリソースへのアクセスが必要です。通常、何かがユーザー空間に保存されていれば、それはそこで行われます。事態がカーネル処理に移行する際にパフォーマンス上の理由があるため、実行するためにシステムコールが必要になります。別の側面は、ユーザ空間とカーネル空間との間の移行が比較的高価であることである。

+0

これは私の質問に答えることができません。私はよくシステムコールがどのように実行されるかについてよく知っています。私の質問は、いくつかの機能がシステムコールとして分類される理由です。 –

+0

@new_perl多分もっと明確にするには、何かがこのようにして実行されると、それはシステムコールのために分類されます。何かがシステムコールとして分類されている場合、それには要件があります。 A)メモリやその他のカーネル管理リソースへのアクセスを必要とするなどの絶対条件、またはB)パフォーマンスベースの要件です。私はあなたがBについて質問していると仮定していると仮定します。これらについては、ケースバイケースでしかありません。私は一般的に最後の手段はカーネルに本当の必要性だけを含めることだと思います。一例はpthreads/futexの機能で、必要なパフォーマンスの向上のためにシステムコールが作成されます。 – Nektarios

+0

@new_perl答えの補足は、おそらく最終的に決定するのでしょうか?まあ、もしあなたがバニラのLinuxカーネルについて話しているのであれば、それをロックするのはLinusなどに任されています。もちろん、カーネルパッチや独自のドライバ(think:VMware)を書いているなら、あなたが望むように意思決定をすることができます – Nektarios

関連する問題