Inflearn brand logo image
Inflearn brand logo image
Inflearn brand logo image
Hardware

/

Embedded IoT

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

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

  • austinkim
저자 직강
임베디드리눅스
리눅스커널
인터럽트
Operating System
Linux
linux-kernel
ARM Architecture
interrupt

こんなことが学べます

  • インタラプトの後半部 基本概念と動作方式

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

  • threaded IRQフィーチャで割り込みの後半を処理する方式

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

<お知らせ>

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

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

2. ロードマップ案内 🎯

今回の講義「Linuxカーネルの構造と原理:割り込み [著者直講 1部-5]」はロードマップ'システムソフトウェア開発者のためのLinux kernel - basic course'に含まれている講義です。

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

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

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

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

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

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

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

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

Linuxシステムソフトウェア分野にキャリアチェンジしたい他分野の開発者

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

システム半導体、電気自動車分野を含む様々な分野に配置されたLinuxシステムソフトウェア開発者の皆さんは、Linuxカーネルをよく知ってこそ開発能力を向上させることができるという事実は知っています。しかし、Linuxカーネルをどのように学ぶべきか、そして何よりも実務でどのような内容をよく知っておくべきかを把握するのが難しい状況です。

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

Linuxシステムソフトウェア開発者として入門すると、ほとんどの場合Linuxデバイスドライバを開発することになりますが、この過程で必ず実装し最適化しなければならない要素の一つが割り込みです。割り込み後半部は割り込みと共に必ず知っておくべき内容です。その理由をいくつか挙げると、

  • ほとんどの割り込みハンドラは割り込み後半部技法と共に使用される。

  • 割り込みによって制御されるペリフェラルデバイスの主要な問題は、割り込み後半部に関連するルーチンにおいて - 割り込みハンドラと共に - 確認される。

そこで私が書いた「Linuxカーネルの構造と原理」という本の6章で、次のような「割り込み後半部技法」について説明しています。

  • スレッド化IRQ(IRQスレッド)

  • Softirq

  • タスクリット

様々な方法で読者の皆様がftraceデバッグ実習を通じて割り込み後半部技法を学べるように構成しました。

講義の差別化ポイント

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

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

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

2. 割り込み後半部技法の基本概念を簡単で詳しく説明

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

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

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

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

この講義では、この内容を扱います。LinuxカーネルメモリダンプをTRACE32シミュレータを使用してプロセスに関連するカーネルのデータ構造をデバッグしながら、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トレースポイントを説明し、ftraceメッセージを詳細に分析します。

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

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

TRACE32やCrash utilityなどのデバッグプログラムを活用して「Linuxカーネルメモリを」デバッグできる高度なデバッグ手法を提供します。

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

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

著書執筆・講義経験をもとに
誰よりも深く詳細に!


グローバル著者&Linuxシステムソフトウェア開発者(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年、大韓民国学術院優秀図書賞著者

  • 'プログラマス デブ コース: Linuxシステム及びカーネル専門家' メイン講師 (1~2次数)

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

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


国内で誰よりもLinuxカーネルを構成する主要機能をよく説明できる教育者だと自信を持って申し上げることができます。

受講前の参考事項

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

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

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

  • 今回の講義のTRACE32教育用プログラムを使用していて質問事項があれば必ず教育者に質問してください。

実習環境と提供される講義資料

  • オペレーティングシステムおよびバージョン(OS):Raspberry Pi(Raspbian)、Linuxカーネル v6.1

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

  • 6個のLinuxカーネルメモリダンプ(vmcore)

前提知識および注意事項

  • 大まかにLinuxがどのように動作するかご存知であれば良いです。

  • 「Linuxカーネルの構造と原理:デバッグ - Basic [著者直講 1部-2]」の講義をできるだけ先に受講してからお越しいただければと思います。

  • オペレーティングシステムやコンピュータアーキテクチャについて知っていれば、より楽に授業を受けることができます。

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

こんな方に
おすすめです

学習対象は
誰でしょう?

  • システム半導体、電気自動車分野(自動運転、インフォテインメント)を含むシステムソフトウェア分野でスキルアップしたいジュニア開発者

  • システム半導体、電気自動車分野のようなシステムソフトウェア開発をしたい就職準備生

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

  • システムソフトウェア分野へキャリア転換を目指す他分野のエンジニア

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

  • C言語

  • コンピュータアーキテクチャ

  • オーエス

こんにちは
です。

5,437

受講生

148

受講レビュー

84

回答

4.9

講座評価

21

講座

글로벌 저자 & 리눅스 시스템 소프트웨어 개발자 (Arm, RISC-V 아키텍처)

국내 시스템 소프트웨어 분야에서 전무후무한! 'Arm 아키텍처(Armv8-A, Armv7-A)'와 '리눅스 커널' 책을 쓴 저자(2권의 책 모두 대한민국 학술원 우수도서에 선정)이며, 국내 최초로 해외 출판사(Packt)를 통해 "Reverse Engineering Armv8-A Systems" 책(영어)을 집필한 글로벌 저자입니다. 무엇보다 최신 시스템 소프트웨어 트렌드(전기자동차, 시스템 반도체- 시스템 소프트웨어)를 가장 잘 알고 있는 현업 개발자입니다. 또한 시스템 소프트웨어 분야에서 가장 지식 전파 활동을 활발하게 하는 교육자입니다. 

  • 'Reverse Engineering Armv8-A Systems: A practical guide to Kernel, Firmware, and TrustZone analysis' 책(영어) 저자, (Packt 출판사)

  • '시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리'(2024년, 대한민국 학술원 우수도서상) 저자

  • '디버깅을 통해 배우는 리눅스 커널의 구조와 원리' (2021년, 대한민국 학술원 우수도서상) 저자

  • '프로그래머스 데브 코스: 리눅스 시스템 및 커널 전문가' 메인 강사

  • 2022년 6월, 한국컴퓨터종합학술대회 (KCC2022) - 튜토리얼 발표 [ftrace를 이용해 리눅스 커널 정복하기]

  • LG전자 '리눅스 커널' 및 'Armv8 아키텍처' 사내 강사(국내 및 해외 개발자 포함) - (2020년~현재)

국내에서 어느 누구보다 리눅스 커널과 Arm 아키텍처(Armv8-A, Armv7-A)를 잘 설명할 수 있는 교육자라고 자신있게 말씀드릴 수 있습니다.

강의문의 : austindh.kim@gmail.com

주요 로드맵 🎯

'시스템 소프트웨어 개발자를 위한 Arm - basic course'

'시스템 소프트웨어 개발자를 위한 Arm - advanced course'

시스템 소프트웨어 개발자를 위한 Linux kernel - basic course

カリキュラム

全体

85件 ∙ (10時間 12分)

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

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

受講レビュー

全体

2件

5.0

2件の受講レビュー

  • dlrbcnvk님의 프로필 이미지
    dlrbcnvk

    受講レビュー 17

    平均評価 4.9

    5

    61% 受講後に作成

    • sunny75님의 프로필 이미지
      sunny75

      受講レビュー 94

      平均評価 5.0

      5

      100% 受講後に作成

      2024/07/20/토 10:53 강의 잘 들었습니다. 강의를 들으면서, linux에 대해 많이 알게 되네요. 다른 강의도 만드시면, 잘 들어 보려고 합니다. 감사합니다.

      ¥6,554

      austinkimの他の講座

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

      似ている講座

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