• Online Tools
  • - Calculators
    • Character Count
  • - Download
    • TikTok Download
    • DouYin Download
  • - Web Tools
    • BASE64
    • Base64 to Image
    • Image to Base64
    • URL Encoding
    • JavaScript
    • Timestamp
    • Unicode Converter
    • JSON Format
    • Modify Extension
    • Make List
    • CSS Optimizer
  • - Encryption Tools
    • MD5 Encryption
    • Random Generator
  • - Image Tools
    • Image Compression
    • QR Code Generator
    • QR Code Reader
    • Wallpaper Preview
  • - Info Sheets
    • Blood Type Heredity
    • Clothing Sizes
  • [email protected]
DopuBox
  • English
  • Español
  • Français
  • 日本語
  • 한국어
  • 简体中文
  • 繁體中文
全部 ニュース Meta Code 文化・アート
linuxカーネルのソフトブレーク状況の概要
2022-01-01

ソフトブレークの紹介

遅延可能な処理をハード割り込み処理プログラムから独立させ,この処理を割り込みを開いた場合に実行することができ,この処理がソフト割り込みである.ソフトブレークのこのような離脱は,多くのリアルタイムアプリケーションにとって重要であるハードブレークの応答時間を大幅に短縮できることが分かった。

本稿ではソフト中断についてのみお話ししますが、tasklet、workqueueについては後でお話しします。ソフトブレークダウンプロセス(linux kernel 4.0参照)について説明すると、その詳細を深く理解し、自分たちの理解を共有しようとします(不正であれば、指摘してください。ありがとうございます)。

ソフトブレークデータ構造の定義

ソフトブレークの登録

Open_経由softirq()は、特定のソフト割り込み処理関数とソフト割り込み番号をバインドします。ネットワークシステムが送受信パケットのソフトブレーク処理関数を登録している場合:
コードのコピー
open_softirq(NET_TX_SOFTIRQ, net_tx_action);

open_softirq(NET_RX_SOFTIRQ, net_rx_action);

ソフトブレークのアクティブ化
各cpuには32 bitのビットマップ(すなわち__softirq_pending)があり、本cpu上のソフト割り込みがアクティブになっているかどうかを維持します。
コードのコピー

typedef struct {

unsigned int __softirq_pending;

#ifdef CONFIG_SMP
unsigned int ipi_irqs[NR_IPI];

#endif

} ____cacheline_aligned irq_cpustat_

irq_cpustat_t irq_stat[NR_CPUS] ____cacheline_aligned;

ソフトブレークのアクティブ化タイミングの1つ:irq_exit

irq_exit関数ではソフトブレークがアクティブになる可能性があります。アクティブ化条件は:

ハード割り込みではなくソフト割り込みではなく本cpuの_softirq_pendingにセットがあります。

コードのコピー
if (!in_interrupt() && local_softirq_pending())

invoke_softirq();

この条件から,ソフト割り込みとハード割り込みはここで同等に扱われ(in_interruptでは),割り込み処理という本質を体現していることが分かる.ハード割り込みの条件ではなく、優先性を示し、ソフト割り込みを考慮するには、ハード割り込みをすべて処理しなければならない。ソフトブレークに入れない条件は,ソフトブレークのネストを遮断していることを示している.

invoke_softirq関数の処理は、(まずksoftirqdを起動する)ソフト中をksoftirqd専門スレッドで処理するか、直接__を呼び出すかである。do_softirqインスタント処理(もちろん、インスタント処理は、現在のスタックにあるか、独立したソフトブレークスタックにあるかを区別します)。

ソフトブレークのアクティブ化タイミングの2:raise_softirq

NICパケット方式は非NAPIからNAPI方式に進化し,ソフト割り込みの利点を十分に示した:受信タスクをソフト割り込み処理に最大限に渡し,ハード割り込み処理を最大限に簡素化する.この進化は後で話しましょう。

ソフトブレークのアクティブ化の3:ksoftirqd
各cpuには、ソフトブレーク量が大きい場合にソフトブレークを専門に処理するksoftirqdスレッドがあります。

コードのコピー

DEFINE_PER_CPU(struct task_struct *, ksoftirqd);

ksoftirqdスレッドのコア関数run_ksoftirqdの(ループ)処理は、本cpuを中断して見る_softirq_pendingのセットの場合、あれば実行_do_softirqd()、実行完了割込み)。この実行はスムーズです。このスレッド自体のスタックでは、ユーザープロセスに影響を与える問題はありません。

ここで疑問なのは、ここでは以前は関強盗保護だったが、今は関中断保護だった(2012年のpatch 3 e 339 b、softirq:Use hotplugthread infrastructureを参照)?我々の理解は、プリエンプトに関する保護方式は、後続のより多くのソフトブレークをksoftirqdによって処理させ、ksoftirqdの補助的な地位に合致しないことである。ソフトブレークを処理する地位についてはirq_exitを主とし,ksoftirqdを補助とする.

ksoftirqdでは、ソフトブレークを実行する前にプリエンプトされることも見られますが、実行が開始されるとプリエンプトされることはできません(上記のスケジューリングの1つ:irq_exitで述べた考え方と一致しています)。すなわち,ソフト割り込みとハード割り込みの処理思想は一致している:実行期間中にスケジューリングが発生することは許されない!
ソフトブレークのアクティブ化の4:他の場所

例えばnetif_rx_Ni()、do_の実行softirqフロントオフプリエンプトは、ソフト割り込みの実行中にスケジュールできません。

ソフトブレークのアクティブ化の5:local_bh_enable

コードのコピー

if (unlikely(!in_interrupt() && local_softirq_pending()))

do_softirq();

考えてみれば,異常とソフト割り込みに共有データがあれば,異常処理がこの共有データの臨界領域に達するとソフト割り込みをオフにする必要があるが,ハード割り込みをオフにする必要はない.では、臨界領域を通過すると、ソフトブレークが必要になります。この場合はアクティブ化のタイミングです(preempt_countを見てください。実はプリエンプトのタイミングかもしれません)。

「呼び出し」ではなく「アクティブ」を使用する理由は、周辺処理が本cpuの__のみを変更するためである。softirq_pendingビットマップは、最後にコアメカニズム(例えばksoftirqd、in_interruptでチェックできるソフト割り込み処理)によって本格的に処理されるが、これはソフト割り込みの理念である:ハード割り込み(または他の)をより速く実行させるため、直接呼び出す方式を採用しない。

ソフトブレークコア関数処理のdo_softirq

do_softirqはまずソフト割り込み再入条件をチェックする:ハード割り込みではなくソフト割り込みではなく、条件に合致した後、以下のソフト割り込み処理を開始することができる。

コードのコピー

pending = local_softirq_pending();

if (pending)


ソース元URL:https://dopubox.com/article/p/960bb81942d9a290

Other Tools
  • Character Count TikTok Download DouYin Download BASE64 Base64 to Image Image to Base64 URL Encoding JavaScript Timestamp Unicode Converter JSON Format Modify Extension Make List CSS Optimizer MD5 Encryption Random Generator Image Compression QR Code Generator QR Code Reader Wallpaper Preview Blood Type Heredity Clothing Sizes
  • 一力が本因坊初防衛
    2024-05-30

    社長「関係者や視聴者不安にさせた」と謝罪
    2024-05-30

    授業中の生徒や住民が弾道ミサイル飛来を想定した避難訓練 福島・須賀川桐陽高
    2024-05-31

    小学館も来週に報告書公表
    2024-05-31

    「ねこクラゲ」被告、脱税認める 原稿優先で申告せず、福岡地裁
    2024-05-31

    杉真理×和田唱がビートルズをとことん語る!NHK-FMの人気番組「ディスカバー・ビートルズ」がオンライン講座として復活!
    2024-06-02

    森トラストが平安女学院から有栖川宮旧邸を取得…今度の活用は京都市とも引き続き協議
    2024-06-01

    ジャスパー・モリソンの名言「…が「普通」のものより役にたつことはない。」【本と名言365】
    2024-06-03

    “20世紀音楽”の発展に貢献した指揮者、クーセヴィツキー。その偉業とは【クラシック今日は何の日?】
    2024-06-03

    映画「ゴジラ‐1.0」の震電は「コックピットだけ復元」のはずだった…山崎貴監督がエピソード披露
    2024-06-04

    イタリア・ヴェローナの歴史あるレストランをパトリシア・ウルキオラが再解釈。
    2024-06-03

    太宰府天満宮で「Fukuoka Art Book Fair」が開催へ
    2024-06-04

    「ロエベ ファンデーション クラフト プライズ 2024」の大賞が発表。等身大のセラミック彫刻を制作したアンドレス・アンサが受賞
    2024-06-05

    国際博物館の日、今年のテーマは「学びと研究のための博物館」
    2024-06-04

    スマイル社が性犯罪被害者支援の法人設立
    2024-06-04

    【1971年の今日 : 6月5日】京王プラザホテル全面開業―今からは想像もできない着工前の巨大な貯水池だった頃の写真も
    2024-06-05

    第55回星雲賞・自由部門に「巨大ロボット展」 日本SFファングループ連合会議
    2024-06-05

    ユージーン・スタジオが東南アジアに美術館を建設予定。新法人YES__pte.ltdを設立し、インドネシア・ジャカルタに美術館準備室を開設
    2024-06-04

    書評:「日本美術史」を書き換える100年単位の挑戦。『この国(近代日本)の芸術──〈日本美術史〉を脱帝国主義化する』
    2024-06-05

    佐渡金山「情報照会」と勧告 世界遺産登録に可能性残す
    2024-06-06

    ©  Dopu Box
    💛