• 在线工具
  • - 计算器
    • 字符计数
  • - 下载
    • TikTok 下载
    • 抖音下载
  • - 网络工具
    • BASE64
    • Base64 转图片
    • 图片转 Base64
    • URL 编码
    • JavaScript
    • 时间戳
    • Unicode 转换器
    • JSON 格式化
    • 修改扩展名
    • 制作列表
    • CSS 优化器
  • - 加密工具
    • MD5 加密
    • 随机生成器
  • - 图像工具
    • 图像压缩
    • 二维码生成器
    • 二维码识别器
    • 壁纸预览
    • 图片 EXIF
  • - 信息表
    • 血型遗传
    • 服装尺码
    • app.tool_clock
  • [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 血型遗传 服装尺码 app.tool_clock
  • MURAKAMI × Liquem 夢のコラボアクセが再登場☆|長山智美 デザイン狩人
    2024-05-30

    『ボールアンドチェイン』南Q太著 評者:三木那由他【このマンガもすごい!】
    2024-05-30

    “ひばり”の愛称にふさわしい美しいメロディ。ハイドンの『弦楽四重奏曲第67番』【クラシック今日は何の日?】
    2024-05-30

    かど番・藤井聡太、第4局始まる 将棋、叡王戦
    2024-05-30

    韓国HYBE傘下の代表続投 和解望む意向
    2024-05-31

    【光る君へ】平安時代、強烈なエピソードで知られた2人の受領とは
    2024-06-01

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

    香川県・直島に開館する新たな美術館の正式名称が「直島新美術館」に決定
    2024-06-03

    テレ東が警察密着番組の担当者らを懲戒処分
    2024-06-03

    「2億円トイレ」のイメージ図など公開 大阪・関西万博
    2024-06-04

    第34回福岡アジア文化賞受賞者が決定。大賞は真鍋大度
    2024-06-04

    美術評論家連盟が「ガザ戦争に対する意⾒表明」を公開
    2024-06-04

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

    「犬派?猫派?」(山種美術館)開幕レポート。初公開から名作まで勢揃い
    2024-06-04

    五木ひろし歌手生活60年…ふるさと福井へ恩返しの新曲
    2024-06-04

    「Osaka Art & Design 2024」(大阪市内)開幕レポート。何気ない日常のなかで多様なカルチャーに触れる
    2024-06-06

    写真家の吉田ルイ子さん死去 「ハーレムの熱い日々」
    2024-06-06

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

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

    もしあの時に戻れたら…歌人・穂村弘が話題書『迷子手帳』で明かす、今も忘れられない「失敗」
    2024-06-07

    ©  Dopu Box
    💛