Linuxカーネルの構造と原理:割り込み後半部 [著者直講 第1部-6]

システムソフトウェアで最も多く使われる、最新のLinuxカーネル(v6.1)の「割り込み後半部」の核心概念を、『デバッグを通じて学ぶLinuxカーネルの構造と原理』の著者が詳しく解説します。

難易度 初級

受講期間 無制限

Operating System
Operating System
Linux
Linux
linux-kernel
linux-kernel
ARM Architecture
ARM Architecture
interrupt
interrupt
Operating System
Operating System
Linux
Linux
linux-kernel
linux-kernel
ARM Architecture
ARM Architecture
interrupt
interrupt

受講後に得られること

  • 割り込みの後半部(ボトムハーフ)の基本概念と動作方式

  • デバイスドライバの観点から見た割り込み後半部の処理方式

  • threaded IRQ機能で割り込み後半部を処理する方式

  • Softirqの処理方式とタスクレット

<お知らせ>

1. 500名突破 30%割引クーポン発行🙏

Linuxカーネル講座の受講生500名突破を記念して、30%割引クーポンを発行します。ありがとうございます。先着100名様限定です。

2. ロードマップのご案内 🎯

今回の講義<リ눅스 커널의 구조와 원리: 인터럽트 [저자 직강 1부-5]>は、ロードマップ'시스템 소프트웨어 개발자를 위한 Linux kernel - basic course'に含まれている講義です。

システム半導体、自動車分野など、システムソフトウェア開発者なら

必ず知っておくべきLinuxカーネル

すべてのIT機器で最も多く使用されているオペレーティングシステムは何でしょうか?それはまさにLinuxオペレーティングシステムです。スマートフォン、デジタルテレビ、航空エンターテインメントシステム、およびサーバーで使用されています。システム半導体メーカーでは、Linux(Linuxデバイスドライバ)を活用して、自社で設計したハードウェアを制御しています。また、電気自動車(Automotive)を構成するさまざまな部品(インフォテインメント、自動運転、テレマティクス)にもLinuxが多く活用されています。

Linuxオペレーティングシステムの核心はLinuxカーネルです。Armv8-Aアーキテクチャとともに、現在のシステムソフトウェア業界で最も必要とされる基礎知識がLinuxカーネルであるとも言えます。

Linuxシステムソフトウェア開発者、Linux組み込みシステム(BSP)プログラマー必見!

✅ システム半導体、電気自動車分野(自動運転、インフォテインメント)を含むリ눅스システムソフトウェア分野のジュニア開発者

✅ システム半導体、電気自動車分野などのリ눅스システムソフトウェア開発分野で働きたい就職準備生

✅ リナックスシステムソフトウェア分野(メモリ、ファイルシステム、オペレーティングシステム)の大学院進学希望者

✅ Linuxシステムソフトウェア分野へキャリアチェンジしようとしている他分野の開発者

しかし、リヌックスカーネルはシステムソフトウェア分野の入門者にとって、巨大な壁のような存在です。入門者の方は、リヌックスカーネルを学ぼうとして何度も挫折した経験があるでしょう。ただでさえ難しいリヌックスカーネルは、バージョンがアップグレードされるにつれて、ますます複雑に進化しています。2024年以降、リヌックスカーネルのバージョンはv6.6以上にアップグレードされており、参入障壁はさらに高まっています。

システム半導体や電気自動車分野を含む様々な分野で活躍しているリヌックスシステムソフトウェア開発者の方々は、リヌックスカーネルを熟知してこそ開発能力を高められるという事実は理解しています。しかし、リヌックスカーネルをどのように学ぶべきか、そして何より実務でどのような内容を深く理解しておくべきか、掴みどころがない状況です。

Linuxデバイスドライバ開発の核心中の核心:割り込み後半部(Interrupt Bottom Half)

Linuxシステムソフトウェア開発者として入門すると、その多くがLinuxデバイスドライバを開発することになりますが、この過程で必ず実装し最適化すべき要素の一つが割り込みです。割り込みの後半部(Interrupt Bottom Halves)は、割り込みと併せて必ず理解しておくべき内容です。その理由をいくつか挙げると;

  • ほとんどの割り込みハンドラは、割り込み後半部(ボトムハーフ)の手法とともに使用される。

  • インターラプトを通じて制御する周辺デバイスの主なイシューは、インターラプト後半部に関連するルーチンで(インターラプトハンドラとともに)確認される。

そこで、私が執筆した書籍『Linuxカーネルの構造と原理』の第6章では、次のような「中断(割り込み)後半部処理」について説明しています。

  • threaded IRQ(IRQスレッド)

  • Softirq

  • タスクレット

読者の方々がさまざまな方法でftraceデバッグの実習を通じて、割り込み後半部処理(ボトムハーフ)の手法を学べるように構成しました。

講義の差別化ポイント

今回の講義は、これまでYouTubeやどの講義プラットフォームでも扱われたことのないコンテンツで構成されています! リ눅스カーネルの割り込み後半部技法に関連するデータ構造や、リ눅스カーネルを構成する様々なデータ構造(task_struct、thread_info構造体)を、リ눅스カーネルメモリダンプを通じてデバッグします。この講義を受講される方は、教育用プログラム(TRACE32)をダウンロードして直接実習することができます。

1. TRACE32シミュレータプログラム(教育用)とリ눅스カーネルダンプの提供

Linuxシステムソフトウェア開発全般において、TRACE32デバッガと関連プログラムは広範囲に使用されます。TRACE32プログラムはライセンスがないと実行できません。この講義を受講すると、教育用TRACE32シミュレータプログラムを「Inflearn講義資料」からダウンロードして、実際にTRACE32シミュレータプログラムを活用し、メモリダンプをデバッグすることができます。また、割り込み後半部処理の多様な動作(threaded IRQ、Softirq)をデバッグできる6つのカーネルメモリダンプをダウンロードして実習することができます。

2. インタラプト後半部処理の基本概念を分かりやすく詳細に説明

Linuxカーネルを学ぶ際、カーネルソースを分析します。しかし、カーネルソースを分析する過程で多くの障害に直面します。該当する関数がどのような流れで呼び出されるのか、分析しているルーチンのデータ構造が実際にどのような値なのかを確認するのは困難です。今回の講義では、これらすべての障害を解消します。

割り込み後半部(Bottom Half)手法に関連するLinuxカーネルソースを、TRACE32プログラムのコールスタックや詳細なデータ構造とともに分析します。独学でLinuxカーネルを学ぶよりも、はるかに効率的に割り込み後半部手法を習得できます。また、メモリダンプから抽出したftraceメッセージまで分析するため、多角的に割り込み後半部手法の動作原理を詳細に把握することができます。

3. グローバルシステム半導体企業のLinuxカーネルBSP開発者が行うデバッグ手法の紹介

最近、システム半導体業界が注目を集めています。グローバルシステム半導体企業のリナックスカーネルシステム開発者は、どのような方法でリナックスカーネルドライバをデバッグしているのでしょうか?

今回の講義では、この内容を扱います。TRACE32シミュレーターを使用してLinuxカーネルのメモリダンプからプロセス関連のカーネルデータ構造をデバッグしながら、crash-utilityでメモリダンプをロードし、カーネルの主要な動作を分析します。

このような内容を学びます

割り込みが処理される全体の流れを説明し、割り込みハンドラの後半部(ボトムハーフ)処理がなぜ必要なのかを説明します。

割り込みの後半部処理として広く活用されているthreaded IRQ方式を紹介し、その核心機能を説明します。

threaded IRQ手法の実行フローを大きな枠組みで説明し、ソースコードを詳細に解説します。

threaded IRQ関連のパッチを紹介し、ftraceを設定する方法を紹介します。Ftraceメッセージとthreaded IRQ手法の実行フローを併せて詳細に説明します。

TRACE32とCrash Utilityプログラムを使用して、threaded IRQ方式に関連するデータ構造を詳細に分析します。

Softirqについて紹介し、Softirqをよく知っておくべき理由について説明します。

Softirqの核心であるSoftirqサービスの種類と、段階別の実行フローについて詳細に説明します。

Softirqサービスをリクエストして実行する動作を、全体の実行フローとソースコードの分析を通じて詳細に説明します。

Softirqサービスを実行するデーモンであるksoftirqd/[n]カーネルスレッドを説明し、タスクレットを詳細に分析します。

Softirq関連のftrace tracepointを説明し、ftraceメッセージを詳細に分析します。

教育用TRACE32(シミュレーター)プログラムと6つのリヌックスカーネルメモリダンプを提供

今回の講義では、リノックスシステムソフトウェア業界で最も進んだ(Advanced)デバッグ方式であるリノックスカーネルメモリダンプをデバッグしながら、割り込み後半部処理を構成するデータ構造とコールスタックを説明します。

TRACE32やCrash utilityといったデバッグプログラムを活用し、&#39;リヌックスカーネルメモリを&#39;デバッグできる高度なデバッグ方法を提供します。

✅ 教育用TRACE32プログラム(シミュレーター版)を講義カリキュラムからダウンロードできます。受講生はTRACE32プログラムで、本講義で提供されるカーネルメモリダンプをロードして、一緒に進めながらデバッグすることができます。

✅ オープンソースプロジェクトとして運営されているCrash Utilityを直接ダウンロードし、カーネルメモリダンプをローディングしてデバッグすることができます。Crash Utilityでサポートされている様々な機能を活用し、カーネルのデータ構造やコールスタックを直接デバッグすることができます。

執筆・講義の経験を活かし、
誰よりも深く詳細に!


グローバル著者 & リナックスシステムソフトウェア開発者 (Arm, RISC-V アーキテクチャ)

国内のシステムソフトウェア分野において前例のない!「Armアーキテクチャ(Armv8-A, Armv7-A)」と「Linuxカーネル」の書籍を執筆した著者(2冊とも大韓民国学術院の優秀図書に選定であり、国内初めて海外出版社(Packt)を通じて"Reverse Engineering Armv8-A Systems"という本(英語)を執筆したグローバル著者です。何よりも最新のシステムソフトウェアトレンド(電気自動車、システム半導体-システムソフトウェア)を最も熟知している現役の開発者です。また、システムソフトウェア分野で最も活発に知識共有活動を行っている教育者でもあります。

  • 'Reverse Engineering Armv8-A Systems: A practical guide to Kernel, Firmware, and TrustZone analysis' 著者(英語)、(Packt 出版社)

  • 'デバッグを通じて学ぶLinuxカーネルの構造と原理' (2021年、大韓民国学術院 優秀図書賞) 著者

  • 「システムソフトウェア開発のためのArmアーキテクチャの構造と原理」(2024年、大韓民国学術院 優秀図書賞 著者

  • 'Programmers Dev Course: Linuxシステムおよびカーネルエキスパート' メイン講師 (1~2回目)

  • 2022年6月、韓国コンピューター総合学術大会 (KCC2022) - チュートリアル発表 [ftraceを利用してリ눅スカーネルを征服する]

  • LG電子「Linuxカーネル」および「Armv8アーキテクチャ」社内講師(国内および海外開発者を含む) - (2020年〜2024年)


国内の誰よりも、リ눅스カーネルを構成する主要な機能を分かりやすく説明できる教育者であると、自信を持って申し上げます。

受講前のご参考事項

TRACE32プログラムを使用する際の注意事項

  • TRACE32教育用プログラムは、Windows環境でのみ実習可能です。

  • TRACE32教育用プログラムは、あくまで「教育用」としてのみ活用でき、商業的な目的での修正や配布はできません。

  • 今回の講義のTRACE32教育用プログラムを使用中に不明な点があれば、必ず教育担当者に質問してください。

実習環境および提供される講義資料

  • オペレーティングシステムおよびバージョン(OS): ラズベリーパイ(ラズビアン)、リナックスカーネル v6.1

  • TRACE32 教育用プログラムおよびインストールガイド文書(講義)

  • 6個のリナックスカーネルメモリダンプ(vmcore)

前提知識および注意事項

  • おおよそリヌックスがどのように動作するのかを知っておくと良いです。

  • 'リナックスカーネルの構造と原理:デバッグ - Basic [著者直講 第1部-2]' 講義をできるだけ先に受講してから来られることをお勧めします。

  • OSやコンピュータ構成について知っていると、よりスムーズに受講することができます。

  • Linuxカーネルに関する深い予備知識は必要ありません。

こんな方に
おすすめです

学習対象は
誰でしょう?

  • システム半導体、電気自動車分野(自動運転、インフォテインメント)を含むシステムソフトウェア分野で、自らの能力を高めていきたいジュニア開発者

  • システム半導体、電気自動車分野などのシステムソフトウェア開発を志望する就職準備生

  • システムソフトウェア分野(メモリ、ファイルシステム、オペレーティングシステム)の大学院進学を目指す大学生

  • システムソフトウェア分野へキャリアチェンジしようとしている他分野の開発者

前提知識、
必要でしょうか?

  • C言語

  • コンピュータ構成論

  • オペレーティングシステム

こんにちは
austinkimです。

6,319

受講生

242

受講レビュー

96

回答

4.9

講座評価

22

講座

グローバル著者 & リナックスシステムソフトウェア開発者 (Arm, RISC-V アーキテクチャ)

国内のシステムソフトウェア分野において前例のない!「Armアーキテクチャ(Armv8-A, Armv7-A)」と「Linuxカーネル」の本を執筆した著者(2冊とも大韓民国学術院の優秀図書に選定であり、国内初めて海外出版社(Packt)を通じて「Reverse Engineering Armv8-A Systems」の本(英語)を執筆したグローバル著者です。何よりも最新のシステムソフトウェアトレンド(電気自動車、システム半導体-システムソフトウェア)を最も熟知している現役エンジニアです。また、システムソフトウェア分野で最も活発に知識共有活動を行っている教育者でもあります。

  • 'Reverse Engineering Armv8-A Systems: A practical guide to Kernel, Firmware, and TrustZone analysis' 著者(英語、Packt出版), (Packt Publishing)

  • 『システムソフトウェア開発のためのArmアーキテクチャの構造と原理』2024年、大韓民国学術院優秀図書賞)著者)

  • 『デバッグを通じて学ぶLinuxカーネルの構造と原理』2021年、大韓民国学術院 優秀図書賞)著者)

  • 「Programmers Dev Course:Linuxシステムおよびカーネル専門家」メイン講師

  • 2022年6月、韓国コンピューター総合学術大会 (KCC2022) - チュートリアル発表 [ftraceを利用してリ눅스カーネルを攻略する]

  • LG電子「Linuxカーネル」および「Armv8アーキテクチャ」社内講師(国内および海外開発者を含む) - (2020年〜現在)

韓国国内で誰よりもリ눅스カーネルとArmアーキテクチャ(Armv8-A, Armv7-A)を分かりやすく説明できる教育者であると、自信を持って申し上げます。

講義に関するお問い合わせ:austindh.kim@gmail.com

主要ロードマップ 🎯

'システムソフトウェア開発者のためのArm - basic course'

'システムソフトウェア開発者のためのArm - advanced course'

システムソフトウェア開発者のためのLinux kernel - basic course

もっと見る

カリキュラム

全体

85件 ∙ (10時間 12分)

講座資料(こうぎしりょう):

授業資料
講座掲載日: 
最終更新日: 

受講レビュー

全体

4件

5.0

4件の受講レビュー

  • dlrbcnvk님의 프로필 이미지
    dlrbcnvk

    受講レビュー 19

    平均評価 4.9

    5

    61% 受講後に作成

    • aceoftop1975님의 프로필 이미지
      aceoftop1975

      受講レビュー 121

      平均評価 5.0

      5

      100% 受講後に作成

      2024/07/20/土 10:53 講義はよく聞きました。 講義を聞きながら、linuxについてたくさん知りますね。他の講義も作れば、よく聞いてみようと思います。 ありがとうございます。

      • heecheolsong님의 프로필 이미지
        heecheolsong

        受講レビュー 21

        平均評価 5.0

        5

        100% 受講後に作成

        austinkimの他の講座

        知識共有者の他の講座を見てみましょう!

        似ている講座

        同じ分野の他の講座を見てみましょう!

        ¥7,028