select()やpoll()などのシステムコールは、内部ではどのように機能しますか?

nisah:

私は非同期I / O 演算がプロセッサ時間を介して使用しないこと、つまりビジーループselect()poll()はないことを理解していますが、実際にはこれらは内部でどのように実装されていますか?どういうわけかハードウェアでサポートされているのですか、それがこれらを使用するための明らかなプロセッサコストがそれほどないのはなぜですか?

ecatmur:

select/ poll何を待っているかによりますいくつかのケースを考えてみましょう。簡略化のために、シングルコアマシンを想定します。

まず、selectが別のプロセスで待機している場合を考えます(たとえば、他のプロセスが何らかの計算を実行していて、パイプラインを介して結果を出力している場合があります)。この場合、カーネルはプロセスを入力待ちとしてマークするため、プロセスにCPU時間を提供しません。他のプロセスがデータを出力すると、カーネルはプロセスを起動し(CPUに時間を与える)、入力を処理できるようにします。最近のOSはプリエンプティブマルチタスクを使用しているため、これは他のプロセスがまだ実行されている場合でも発生します。つまり、カーネルは定期的にプロセスに割り込み、他のプロセスにCPUを使用する機会を与えます(「タイムスライシング」)。

selectがI / Oを待機しているときに画像が変わります。たとえば、ネットワークデータ、またはキーボード入力。この場合、古いハードウェアは入力を待機してCPUをスピンする必要がありますが、最新のハードウェアはすべて、ハードウェアが割り込み(カーネルが処理する特別に処理されるイベント)を提供するまで、CPU自体を低電力の「待機」状態にすることができます。割り込みハンドラでは、CPUは着信データを記録し、割り込みから戻った後、プロセスを起動してデータを処理できるようにします。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

execvpシステムコールの呼び出しはどのように機能しますか?

分類Dev

スリープシステムコールはどのように機能しますか?

分類Dev

forkシステムコールは実際にどのように機能しますか

分類Dev

Kotlinコルーチンは内部でどのように機能しますか?

分類Dev

マルチコアシステムで割り込みはどのように機能しますか?

分類Dev

システムサービスはどのように機能しますか

分類Dev

ファイルシステムコネクタシンクはどのように機能しますか

分類Dev

Linux システムでは、プログラムまたは bash シェル コマンドはどのように正確に機能しますか?

分類Dev

アクターベースのシステムで非同期はどのように機能しますか?

分類Dev

@SuppressWarningsおよびその他のカスタムアノテーションは内部でどのように機能しますか?

分類Dev

コンパレータは内部でどのように機能しますか?

分類Dev

Opencartシステム/変更フォルダーはどのように機能しますか?

分類Dev

tell()はAkkaアクターシステムでどのように機能しますか?

分類Dev

リレーショナルフィールドは内部でどのように機能しますか?

分類Dev

mysqli_pollはどのように機能しますか?

分類Dev

ループや条件文なしで1から1000まで出力するCコードはどのように機能しますか?

分類Dev

グルーヴィーなクロージャーは内部でどのように機能しますか?

分類Dev

セグメンテーション違反は内部でどのように機能しますか?

分類Dev

PDOで準備されたステートメントは「内部」でどのように機能しますか?

分類Dev

bash はさまざまなオペレーティング システムでどのように機能しますか?

分類Dev

ベクトルやその他のコンテナはディスク上でどのように機能しますか?

分類Dev

この奇妙なJavaScriptコードはどのように機能しますか?ミステリーコロン

分類Dev

Rubyではスコープはどのように機能しますか?

分類Dev

ConcurrentHashMapは内部でどのように機能しますか?

分類Dev

LinkedHashMapは内部でどのように機能しますか?

分類Dev

SignalRは内部でどのように機能しますか?

分類Dev

condaは内部でどのように機能しますか?

分類Dev

querySelectorは内部でどのように機能しますか?

分類Dev

gperftoolsは内部でどのように機能しますか?

Related 関連記事

  1. 1

    execvpシステムコールの呼び出しはどのように機能しますか?

  2. 2

    スリープシステムコールはどのように機能しますか?

  3. 3

    forkシステムコールは実際にどのように機能しますか

  4. 4

    Kotlinコルーチンは内部でどのように機能しますか?

  5. 5

    マルチコアシステムで割り込みはどのように機能しますか?

  6. 6

    システムサービスはどのように機能しますか

  7. 7

    ファイルシステムコネクタシンクはどのように機能しますか

  8. 8

    Linux システムでは、プログラムまたは bash シェル コマンドはどのように正確に機能しますか?

  9. 9

    アクターベースのシステムで非同期はどのように機能しますか?

  10. 10

    @SuppressWarningsおよびその他のカスタムアノテーションは内部でどのように機能しますか?

  11. 11

    コンパレータは内部でどのように機能しますか?

  12. 12

    Opencartシステム/変更フォルダーはどのように機能しますか?

  13. 13

    tell()はAkkaアクターシステムでどのように機能しますか?

  14. 14

    リレーショナルフィールドは内部でどのように機能しますか?

  15. 15

    mysqli_pollはどのように機能しますか?

  16. 16

    ループや条件文なしで1から1000まで出力するCコードはどのように機能しますか?

  17. 17

    グルーヴィーなクロージャーは内部でどのように機能しますか?

  18. 18

    セグメンテーション違反は内部でどのように機能しますか?

  19. 19

    PDOで準備されたステートメントは「内部」でどのように機能しますか?

  20. 20

    bash はさまざまなオペレーティング システムでどのように機能しますか?

  21. 21

    ベクトルやその他のコンテナはディスク上でどのように機能しますか?

  22. 22

    この奇妙なJavaScriptコードはどのように機能しますか?ミステリーコロン

  23. 23

    Rubyではスコープはどのように機能しますか?

  24. 24

    ConcurrentHashMapは内部でどのように機能しますか?

  25. 25

    LinkedHashMapは内部でどのように機能しますか?

  26. 26

    SignalRは内部でどのように機能しますか?

  27. 27

    condaは内部でどのように機能しますか?

  28. 28

    querySelectorは内部でどのように機能しますか?

  29. 29

    gperftoolsは内部でどのように機能しますか?

ホットタグ

アーカイブ