選択してファイルディスクリプタの違い

転載:https://blog.csdn.net/gymaisyl/article/details/83962671

 

欠点を選択:

    限られた数のサポートをfdが:
    個々のプロセスの数は、典型的には、1024のファイル記述子を監視することができる最大限界があり、当然のことながら、量が、選択ポーリングを使用してスキャンファイル記述子、ファイル記述子の数を変更することができ性能より、悪い;(Linuxカーネルヘッダに、そのような定義:、もちろん一般的に1024単一プロセスファイルディスクリプタを監視することが可能な上限量は、存在するの#define数を変更することができるが、選択ホイールを使用してファイルディスクリプタ照会スキャンモード、より多くのファイル記述子の数、貧しいパフォーマンス;(Linuxカーネルヘッダ、このような定義でます。#define
    __FD_SETSIZE 1024)

    ユーザがFDからコピーされる各select呼び出しモードメモリ状態、
    カーネル/ユーザー・コピーのメモリ空間の問題、メモリ空間の問題のカーネル/ユーザー・コピー、ハンドルのデータ構造、巨大なオーバーヘッドを大量にコピーするSELECT必要性、

    ラウンドロビン方式を使用して、カーネルはすべてがFDに渡されたトラバースする必要があります。
    アレイ全体のハンドルを含む選択戻り、アプリケーションは、アレイ全体を行うことができる横断する必要があります 全体ハンドルを含む配列は、アプリケーションは、アレイ全体は、イベントが発生して処理する見つけることができる横断する必要が選択戻り;た今イベントが発生したハンドル

SELECTのみ機能し、ファイルディスクリプタは、3つの機能を提供--select機能を提供します。 epoll_create、epoll_ctlとイベントがepoll_wait;

    epoll_createは、ファイルディスクリプタのハンドルを作成することです。
    epoll_ctlは、イベントタイプをリッスンするために登録され、
    イベントがepoll_waitが待機イベントです。

のepollは元のコールは3つの部分に分かれている選択します。

1)コールepoll_create()ファイルディスクリプタオブジェクト(このオブジェクトepollファイルシステムを処理するためのリソースの割り当て)を確立するために、

2)コールepoll_ctlソケットファイルディスクリプタオブジェクトに接続され、この百万追加

イベント3)イベントがepoll_waitコールを収集が発生しました接続された

第1の欠点、FDの限られた数:
  ファイルディスクリプタは、この制限を持っていない、FDは、それがファイルを開くことができるサポートする最大数の上限であり、この数は一般に2048よりもはるかに大きい、例えば、マシン上で1GBのメモリは約10でありますおよそ万人と具体的な数は猫を/ proc / sys / fs /できるファイル-MAX 、一般的に、これは大きな数とシステムメモリとの間の関係を図です。
  
第二の欠点のために、ユーザーモードメモリ状態から繰り返しコピーFD:
ファイルディスクリプタソリューションepoll_ctl機能。epollハンドルが、fdはすべてかなりのイベントがepoll_wait時に複製コピーよりも、カーネルにコピーされます(中epoll_ctlにEPOLL_CTL_ADD指定された)新しいイベントを登録するたびに。ファイルディスクリプタfdの各プロセス全体で一度だけコピーしてください。

第3の欠点は、すべてのFDによるポーリングの場合:
  ファイルディスクリプタは、デバイスが変わるたびに、現在のFDが待ちキューに追加しましたが、現在は再びでなければならない(epoll_ctlの上にハングアップする場合にのみに対応したソリューションを選択しません基本的な)と、デバイスの準備ができたときに、キューで待機して目を覚ます人のために待っている、)それはコールバック関数を呼び出しますが、このコールバック関数は、FDの準備リストに参加する準備ができて、各FDのためのコールバック関数を指定します。イベントがepoll_waitは、実際に動作する何の準備ができてFDが存在しない、レディリストを見ることです(しばらくの間、睡眠を達成するために使用schedule_timeoutは()、ステップ7は、判決の影響もあり、実装が似て選択されます)。
---------------------
免責事項:この記事はCC BY-SA 4.0の著作権契約、複製、元のソースのリンクと、この文を添付してください次元の記事CSDNのブロガーCSDN *」、です。
オリジナルリンクします。https://blog.csdn.net/gymaisyl/article/details/83962671

おすすめ

転載: www.cnblogs.com/cppthomas/p/11319363.html