• 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
    • Image EXIF
  • - 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 Image EXIF Blood Type Heredity Clothing Sizes
  • MURAKAMI × Liquem 夢のコラボアクセが再登場☆|長山智美 デザイン狩人
    2024-05-30

    古本屋を巡り、顧みられなくなった作品、作家を生き返らせた九大大学院教授没後20年 教え子や研究仲間を支える「清新な光景」
    2024-05-30

    黒柳徹子さん、北京で特別授業 「日本語勉強続けて」
    2024-05-31

    幸田文の名言「台所に立てば、…」【本と名言365】
    2024-05-30

    鳥取・大山でたいまつ行列 夏山開き前夜祭
    2024-06-01

    ビルケンシュトック、創業から250年の歴史を振り返る2冊を出版
    2024-06-01

    三姉妹が温泉旅行で取っ組み合いの大げんか うっとうしくてめんどうくさい家族愛描く「お母さんが一緒」
    2024-06-02

    道後温泉の記憶を継承するアート 大竹伸朗が“描き”重要文化財を守ったテント膜「熱景」の再生
    2024-06-03

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

    フジコ・ヘミングさん偲ぶ魂のピアノ旋律
    2024-06-03

    アルテミス計画&天の川銀河! 大人も学んで楽しめる「大人レゴ」最新ラインナップは”宇宙”がテーマ!
    2024-06-03

    「国芳の団扇絵 猫と歌舞伎とチャキチャキ娘」(太田記念美術館)開幕レポート。世界初の展覧会
    2024-06-04

    「梅津庸一 エキシビションメーカー」(ワタリウム美術館)開幕レポート。きっとあなたも展覧会をつくりたくなる
    2024-06-04

    PARCELで「Not Quite」開催。「~でなくもない」作家が集結
    2024-06-04

    クールべ《世界の起源》はなぜ攻撃されたのか? ポンピドゥー・センター・メッスで破壊・盗難事件
    2024-06-04

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

    美しくて“かわいい”結びの技  1400年の歴史を誇る「水引」の可能性を探って
    2024-06-06

    写真家の吉田ルイ子さん死去
    2024-06-06

    ブリン・バン・バン・ボンが1位 ビルボード、上半期人気曲
    2024-06-06

    今週末に見たい展覧会ベスト8。閉幕の横浜トリエンナーレから、「梅津庸一 クリスタルパレス」、石川九楊の2ヶ月連続個展まで
    2024-06-06

    ©  Dopu Box
    💛