inflearn logo
知識共有
inflearn logo

Linuxカーネルの構造と原理:ワークキュー [著者直講 第1部-7]

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

難易度 入門

受講期間 無制限

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

受講後に得られること

  • ワークキューを構成する基本概念と動作の仕組み

  • デバイスドライバの観点から見たワークキューの処理方式

  • ディレイワークの主要概念

  • TRACE32のメモリダンプでワークキューをデバッグする

<お知らせ>

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

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

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

今回の講義「システムソフトウェア開発者のための Linux kernel - basic course」は、ロードマップに含まれている講義です。

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

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

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

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

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

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

✅ リナックスシステムソフトウェア分野(メモリ、ファイルシステム、オペレーティングシステム)の大学院進学希望者 in the field of Linux system software (memory, file systems, operating systems)

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

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

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

Linuxデバイスドライバ開発の核心中の核心:ワークキュー

Linuxシステムソフトウェア開発者として入門すると、ほとんどの場合Linuxデバイスドライバを開発することになります。この過程で必ず知っておくべき機能が、まさにワークキューです。その理由をいくつか挙げると;

  • ワークキューは割り込みボトムハーフ(後半部)処理の手法として使用される。

  • デバイスドライバの多くの機能は、ワークキューが提供するAPIを使用して実装されている。

また、Linuxカーネルを構成する多くの機能も、ワークキューが提供するAPIを使用して動作します。そのため、私が執筆した'Linuxカーネルの構造と原理'という本の第7章で、次のような'ワークキュー'について説明しています。

今回の講義は、読者の皆さんが様々な方法でデバッグ実習(TRACE32メモリダンプ解析、ftrace解析)を通じてワークキューを学べるように構成しました。

講義の差別化ポイント

今回の講義は、これまでYouTubeやどの講義プラットフォームでも扱われたことのないコンテンツで構成されています! リ눅스カーネルのワークキューに関連するデータ構造(system_wqグローバル変数、worker_pool構造体、work_struct構造体)を、リナックスカーネルのメモリダンプを通じてデバッグします。この講義を受講される方は、3つのメモリダンプをダウンロードして直接実習することができます。

1. ワークキューデバッグ用リナックスカーネルダンプの提供 (3個)

この講義を受講すると、3つのメモリダンプを「Inflearn講義資料」からダウンロードして、直接TRACE32シミュレータプログラムを活用してデバッグすることができます。2つのメモリダンプはArmv8-AベースのRaspberry Pi、1つのメモリダンプはRISC-VベースのVisionFive2から取得したメモリダンプです。ワークキュー技法の多様な動作(ワークアイテムのキューイング、ワークアイテムの実行、ワーカープール、グローバルワークキュー)を直接デバッグしながら習得できます。

*ちなみに、TRACE32シミュレータプログラムは、以下の既存のリナックスカーネル講義からダウンロードできます:

  • Linuxカーネルの構造と原理:デバッグ - Advanced 実戦 [著者直講 第1部-3]

  • Linuxカーネルの構造と原理:プロセス [著者直講 第1部-4]

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

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

2. ワークキューの基本概念を分かりやすく詳細に説明

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

ワークキューに関連するLinuxカーネルのソースを、TRACE32プログラムのコールスタックや詳細なデータ構造とともに分析します。独学でLinuxカーネルを学ぶよりも、はるかに効率的にワークキューの仕組みを習得できます。また、メモリダンプから抽出したftraceメッセージまで分析するため、ワークキューの動作原理を立体的かつ詳細に把握することができます。

3. デバイスドライバの観点とLinuxカーネルの観点からワークキューを説明

ワークキューを初めて学ぶ方は、非常に難しいと言います。ほとんどのワークキューを説明する本やブログは、入門者ではなく、リナックスカーネルをある程度熟知している開発者を対象に構成されているからです。今回の講義は、入門者の方々がワークキューをしっかりと理解できるように、以下の2つの観点でワークキューを説明します:

  • デバイスドライバの観点:ワークアイテムを基準に説明

  • Linuxカーネルの観点:ワークキューを構成する詳細なデータ構造を説明

この講義を聞いた後、すぐにデバイスドライバの開発を始めることができ、続いて高度なワークキュー手法の動作方式も習得できます。

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

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

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

5. 本で扱いきれなかった内容も解説

実戦開発でよく使われるワークキュー・ウォッチドッグ(CONFIG_WQ_WATCHDOG)を、次のような内容とともに説明します。

  • ラズベリーパイで直接ワークキュー・ウォッチドッグ(CONFIG_WQ_WATCHDOG)を有効にする方法

  • ワークキュー・ウォッチドッグの動作をftraceでデバッグ

現場ですぐに活用できる有익な内容まで講義に込めました。

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

ワークキューを構成する核心機能とロードマップをまず説明します。続いて、ワークキューを効率よく学ぶ方法を詳細に説明します。

ワークキューを構成するデータ構造を全体像で説明します。グローバルワークキューとワーカープール、そしてワークアイテムの構造を詳細に説明します。

デバイスドライバの観点から、ワーク(ワークアイテム)がどのように使用されるかを説明します。

ワークに関連するデータ構造を紹介し、デバッグ実習を通じて各フィールドがどのような値を格納しているのか、分かりやすく詳細に説明します。

ワークアイテムがキューイングされる過程を、カーネルコードの解析を通じて詳細に説明します。

ワークアイテムがキューイングされる際のデータ構造(連結リスト)を、TRACE32のメモリダンプデバッグを用いて詳細に説明します。

ワークアイテムを実行するワーカースレッドを紹介し、ワーカースレッドの実行段階を説明します。続いて、ワーカースレッドが生成されるカーネルソースを分析し、この過程のコールスタック(バックトレース)も併せて説明します。

ワーカーレッドが実行される際の動作方式について、カーネルソースの解析を通じて詳細に説明します。

ワーカースレッドを通じてワークアイテムが実行される動作方式を、TRACE32デバッグを通じて説明します。(3つのメモリダンプ)

ワークキューをトレースするftraceについて詳細に説明し、関連するカーネルソースコードをftraceメッセージとともに分析します。

デバイスドライバでよく活用されるディレイドワークキュー(delayed workqueue)について、分かりやすく説明します。

遅延ワーク(delayed work)のソースコードと、遅延ワークの実行フローを詳細に分析します。

本では扱っていませんでしたが、実戦プロジェクトでよく使用されるワークキュー・ウォッチドッグについて説明します。CONFIG_WQ_WATCHDOGを有効にする方法を説明し、関連するカーネルソースコードを分析します。

ワークキュー・ウォッチドッグの動作方式をftraceメッセージの分析を通じて詳細に説明します。


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


グローバル著者 & リナックスシステムソフトウェア開発者 (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)

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

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

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

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

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


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

受講前のアドバイス

前提知識および注意事項

  • おおよそリ눅스가どのように動作するのかを知っていると良いです。

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

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

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

こんな方に
おすすめです

学習対象は
誰でしょう?

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

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

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

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

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

  • C言語

  • コンピュータ構成論

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

こんにちは
austinkimです。

6,316

受講生

241

受講レビュー

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

もっと見る

カリキュラム

全体

68件 ∙ (8時間 2分)

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

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

受講レビュー

全体

2件

5.0

2件の受講レビュー

  • ioniakim2638님의 프로필 이미지
    ioniakim2638

    受講レビュー 9

    平均評価 4.9

    5

    100% 受講後に作成

    • dlrbcnvk님의 프로필 이미지
      dlrbcnvk

      受講レビュー 19

      平均評価 4.9

      5

      60% 受講後に作成

      austinkimの他の講座

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

      似ている講座

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

      ¥5,578