Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxチュートリアル >> Linuxでは2.6はタスクレット、メカニズムのsoftirq Linux 2.6カーネルの下部にユーザの視点から主に

この論文を機構

Linuxでは2.6はタスクレット、メカニズムのsoftirq Linux 2.6カーネルの下部にユーザの視点から主に

この論文を機構

  
の下半分を中断していないカーネルで実現するためにこれら三つのメカニズムを分析ワークキュー読者がもっと学ぶことに興味を持っている場合には詳細な分析、直接Linuxカーネルのソースコードの関連部分をお読みください。

この文書は無料のオープンソースソフトウェアの精神に基づいて発行され、インターネットからの流星によって収集され、誰でも、無料で入手使用して再リリースすることができますが、あなたはあなたの公開されたコンテンツを再発行するために他人の権利を制限するものではありません。本稿の目的は、公開され、それが読者に役立つことを願っていますが、無保証、特定の目的のためにも、黙示の保証なし。より詳細な情報は、GNU一般公衆利用許諾契約書(GPL)を参照してください、そしてGNU Free Documentation Licenseの(GFDL)。 5 Linuxの半選択および2.1のsoftirq機構NGSA 2.2タスクレット機構2.3ワークキューメカニズムの比較

2のLinux 1つのカーネルはいくつかのメカニズム機構下半分4の下半分3の下半分のメカニズムを中断目次2.6概要セクション5.1 NGSA割り込みメカニズムは、メカニズムの欠陥が5.2 NGSA分析は

は、割り込みサービスルーチンは、CPUの場合にはオフを実行する必要性は常にある1つの概要は、再帰を避けるために割り込みが制御を中断メカニズムの下部の比較的下半分であります複雑な、しかし時間を断つ、それ以外の場合は、割り込み信号損失の原因となります、長すぎることはできません。このため、Linuxでは、割り込みハンドラは二つの部分、すなわち、上半分と下半分に分かれています。上半分は、通常、ハードウェアと密接な関係を持つ重要な手順を実行するために使用され、実行時間のこの部分は非常に短く、そして環境の下関中断で実行されます。時間が非常に厳しいではなく、一部の操作は、通常、時間がかかり、オープン割り込みで実行されるコードのこの部分を実行するために下半分に引き渡されています。ハードウェア割り込みとして知られている治療に関連するハードウェアの上半分が、これは通常、即時実行が必要です。下半分は、私たちが中断議論するためにここにあるソフトでプログラムを実行するために適切なタイミングカーネルでは、一定の時間を遅らせることができます。本論文では、Linuxカーネル2.6.22の最新バージョンでは、例えば、Linuxのを議論することはメカニズムの下の部分を中断します。カーネルの2.6バージョンでは、主機構の下半分は、のsoftirq、タスクレットとワークキューによる分析のために、以下の三つのメカニズムにこのフォーカスを実現します。

2つのLinux 2.6カーネルはLinuxカーネルの古いバージョンの下半分のメカニズムを中断し、メカニズムの下部は達成するために(BHと呼ぶ)下半分と呼ばれ、それは、最初のベクトルによって中断されましたそれぞれ、関数ポインタ(32)のセットを使用して、システムに実装、ベクトル32割り込み、この実装はまた、シャドウバージョン2.4カーネルで今見ることができます。しかし、今のカーネルの2.6バージョンでは、それを見ることができませんでした。さて、一般的にソフト割り込みメカニズムのsoftirqと呼ばれるLinuxカーネルは、下半分を達成するために。

2.1のsoftirq機構BH機構元の2つの重大な欠点:まず、唯一のシステム、CPUはコードBHを実行することができ、BHは、二つの入れ子の機能が許可されません。これは、シングルプロセッサシステムの中には問題ないかもしれませんが、SMPシステムに致命的な欠陥があります。しかしソフト割り込みメカニズムは同じではありません。 SMP Linuxののsoftirqメカニズムと密接に全体の設計と実装のメカニズムのことを考えて走るのsoftirqにリンクされている:'誰が実行&'をトリガし;(走る人、マーク)、つまり、一人で各CPUそれはソフト割り込みをトリガする責任があり、互いに干渉。これは効果的に大きく、処理効率を向上させる、SMPシステムの性能や特性を利用します。 Linuxの定義は次のように、要求を記述するためにsoftirq_action用のsoftirq構造内/リナックス/interrupt.hを含む:構造体softirq_action {ボイド(*アクション)(構造体softirq_action *); void *型データ;};ここで、関数ポインタアクションソフトポイント要求割込みサービスルーチン、独自の通訳サービス機能へのデータポイントによってパラメータデータ。以上の構成に基づいて、システムは、ソフト割り込みベクタsoftirq_vecディスクリプタカーネル/softirq.c表さ32 softirq_action構造に対応し、グローバルソフト割り込みのsoftirq [32]を定義します。しかし実際には、Linuxは32個のソフト割り込みベクトルを使用していませんカーネルは、使用するいくつかのソフト割り込みベクトルの意味を事前定義しています。 、#ENDIF};優先度の高いソフトウェアを達成するためHI_SOFTIRQは、優先度の高いhi_taskletとして、割り込み、および一般的なソフト割り込みとしてTASKLET_SOFTIRQのタスクレットを実装するために使用されます。タスクレットについては、後ほど紹介します。私たちは、実際には、カーネルの事前定義されたソフト割り込みベクトルは、当社のアプリケーションの大半のニーズを満たすために持っている、32個のソフト割り込みベクトルを使用する必要はありません。他のベクターカーネル拡張機能は、将来の使用のために予約され、我々はそれらを使用するべきではありません。 softirqを使用するには、我々はそれを最初に初期化する必要があります。我々は、特定のソフトウェア割り込みベクタNRを開くために、()関数を使用open_softirq、NR初期対応する記述子softirq_vec [NR]は、すべてのCPUは、ソフト割り込みマスクの対応するビットが1に設定します。関数do_softirqは()[32]のソフトセット割り込みサービス機能softirq_vecアレイを実現する責任があります。各CPUはソフト割り込みのサービスを行うことで、この機能を実行することです。同じCPUの割り込みサービス・ルーチンのソフトを入れ子にすることはできませんので、それは、その後すぐに返された場合、現在のCPUは、割り込みサービスであるかどうか、そのため、do_softirq()関数は、最初に確認してください。同一のCPU上で、do_softirq()逐次実行されます。登録ソフト割り込みが完了した後に()open_softirqを使用し、我々はそれをトリガーする必要があります。ソフト割り込みをトリガするカーネル関数raise_softirq()。与えられたのsoftirqの場合は、ハンドラは、すべてのCPUで共有され、一つだけのハンドラになります。同じのsoftirqハンドラは、関数自体に対処するために、異なるCPU上で同時に実行し、競合状態を作り出す、同期メカニズムもあるので非常に重要です。ソフト割り込みをアクティブにすると、一般的に、割り込みの上半分に行われます。割り込みハンドラは、ソフトウェア割り込みを有効にしたい場合は、raise_softirq()が呼び出されます。 CPU上で実行するために()do_softirq時にいくつかの後の時点で、それは、関連するソフトウェア割り込みハンドラを呼び出します。 softirqメカニズムで、またスレッドがksoftirqd小さなカーネルが含まれている、ということに注意してください。これは、システムが単語のロードバランスをとることです。ただ、システムがソフト割り込み要求をトリガし続けている場合、CPU)が少なくとも一度クロック割り込みが(do_softirq実行されますので、ソフト割り込みを処理していきます、と思います。その結果、他の重要な課題でシステムは、CPUの慢性的不足によるものではなく、やる飢餓の状態にありましたか?システムがビジー状態である場合には、この小さなカーネルスレッドが特に有用であるが、あまりにも多くのソフト割り込み要求は、他のプロセスより実行の機会に、適切な期間を実行するためにシステムに配置されます。 2.6カーネル、do_softirq()は()irq_exitに配置されて実行されます。割り込みの上半分では、唯一ただソフトのアップグレードおよび移行モジュールを中断非常に助長しているソフト割り込みを処理するためdo_softirqでirq_exitを()()を呼び出します。あなたが私たちのNGSA割り込みLinuxソフトウェアを移植する必要がある場合は、我々は唯一の私たちへの変更の半分に小さな休憩のために実行する必要があるため、そのような契約は、本当に、私たちに利便性の多くを与えました。上半分呼び出す割り込みの多くのソフト割り込みエントリがある場合は、その後、私たちは痛みを伴うことがない移植しますか?

Copyright © Windowsの知識 All Rights Reserved