• 在线工具
  • - 计算器
    • 字符计数
  • - 下载
    • TikTok 下载
    • 抖音下载
  • - 网络工具
    • BASE64
    • Base64 转图片
    • 图片转 Base64
    • URL 编码
    • JavaScript
    • 时间戳
    • Unicode 转换器
    • JSON 格式化
    • 修改扩展名
    • 制作列表
    • CSS 优化器
  • - 加密工具
    • MD5 加密
    • 随机生成器
  • - 图像工具
    • 图像压缩
    • 二维码生成器
    • 二维码识别器
    • 壁纸预览
    • 图片 EXIF
  • - 信息表
    • 血型遗传
    • 服装尺码
  • [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

其他工具
  • 字符计数 TikTok 下载 抖音下载 BASE64 Base64 转图片 图片转 Base64 URL 编码 JavaScript 时间戳 Unicode 转换器 JSON 格式化 修改扩展名 制作列表 CSS 优化器 MD5 加密 随机生成器 图像压缩 二维码生成器 二维码识别器 壁纸预览 图片 EXIF 血型遗传 服装尺码
  • 藤子・F・不二雄の名言「ありそうもない話をありそうに描きたい」【本と名言365】
    2024-05-29

    「現実をみんなに伝えたい」能登高校書道部が新作の書道パフォーマンスを披露…部員それぞれが抱える大地震の被害
    2024-05-30

    白と黒で奏でるインスタレーション 渡辺信子が京都で「White and Black」
    2024-05-31

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

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

    芸術レベルのグッズも登場! パリ・東京・大阪の名コレクションが集まる「TRIO展」
    2024-06-01

    日本の「木」の文化を家具を通して世界へ【ミラノデザインウィーク】
    2024-06-01

    <今週の本棚・次回の予定>6月8日の毎日新聞書評欄は『新装版 ペルーからきた私の娘』ほか
    2024-06-03

    「警察密着24時」担当者ら懲戒 テレビ東京、石川社長は3割返上
    2024-06-03

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

    応挙手本?に描いたトラ甦れ…徳島の寺のふすま絵修復へ
    2024-06-04

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

    「CLAMP展」が国立新美術館で7月より開催。展示数は史上最多の約800点
    2024-06-04

    お台場エリアを舞台に新芸術祭「東京お台場トリエンナーレ 2025」が誕生
    2024-06-05

    田名網敬一「TANAAMI!! AKATSUKA!! / 45 rpm」展、集英社マンガアートヘリテージ トーキョーギャラリーで開催
    2024-06-04

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

    謎多き家形埴輪 「考古学の空白」に挑む橿考研ベテラン研究員、念願の特別展開催中
    2024-06-04

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

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

    umami.is をおすすめする理由
    2025-07-04

    ©  Dopu Box
    💛