강의

멘토링

커뮤니티

Hardware

/

Embedded IoT

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

システムソフトウェアで最も多く使われている、最新のLinuxカーネル(v6.1)のインタラプトの核心概念を「デバッグを通じて学ぶLinuxカーネルの構造と原理」の著者が適切に説明します。

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

受講後に得られること

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

  • デバイスドライバの観点からインタラプトの処理方式

  • Armアーキテクチャ観点でのインタラプト処理方式

  • 割り込みを管理するデータ構造

<お知らせ>

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

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

-30% 割引クーポンリンク:https://inf.run/i3zsz

2. ロードマップ案内 🎯

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

体系的にLinuxカーネルを構成する主要機能を学びたい方は、ロードマップ(全講義30%割引)を活用されると良いでしょう。

システム半導体、自動車分野など

システムソフトウェア開発者なら必ず知っておくべき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デバイスドライバを開発する際、必ず実装し最適化しなければならない要素の一つが割り込みです。また、割り込みはLinuxカーネルを構成する主要機能と多く関連しています。割り込み後半部技法、動的タイマー、Preemptive schedulingおよびシグナル動作と深く関連しています。

そこで私が書いた「Linuxカーネルの構造と原理」という本の5章でインタラプトについて説明しています。様々な方法で読者の皆さんがftraceデバッグ実習を通してインタラプトを学べるように構成しました。

講義の差別化ポイント

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

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

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

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

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

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

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

最近システム半導体業界が注目されています。グローバルシステム半導体企業の中で最高の技術力を持つQualcommのLinuxカーネルBSP開発者は、どのような方式でLinuxカーネルドライバーをデバッグするのでしょうか?

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

こんな内容を学びます

まず割り込みを処理する方式を説明し、様々な観点から割り込みが処理される流れを説明します。

Linuxカーネルとユーザーアプリケーションで割り込みが発生した際の全体実行フローをArmv8アーキテクチャの観点から詳細に説明します。

Linuxカーネルで割り込みが発生した際のArmv8の例外ベクターテーブルを分析します。続いて処理される例外ハンドラルーチンを詳細に分析します。

ユーザーアプリケーションで割り込みが発生した際のArmv8の例外ベクターテーブルを分析します。続いて処理される例外ハンドラールーチンをアセンブリ命令レベルまで詳細に分析します。

インタラプトが処理される流れを大きな図で分析し、IRQサブシステム(Armアーキテクチャに依存しない)で実行される関数を詳細に説明します。

TRACE32とCrash-utilityデバッグプログラムを使用して、割り込みに関連するデータ構造を分析します。

TRACE32を使用してインタラプトハンドラーであるbcm2835_mmc_irq()関数をデバッグします。コールスタックと関連データ構造と共にインタラプトハンドラーのソースコードを詳細に分析します。

割り込みコンテキストを紹介し、割り込みコンテキストを確認できるサンプルコードを説明します。

インタラプトコンテキストを有効化するカーネルソースコードを分析します。インタラプトコンテキストでスリープに進入するカーネル関数を呼び出してはいけない理由を説明し、例としてミューテックスを取得する際の例外処理コードを紹介します。

割り込みサービスルーチンの実行を完了した後に処理されるPreemptionの動作方式を詳細に説明します。また、Preemption時の動作をTRACE32デバッグプログラムで詳細にデバッグします。

インタラプトの動作をトレースするftraceイベントを設定する方法を紹介します。ftraceメッセージを詳細に分析しながら、インタラプトハンドラの実行フローとインタラプトコンテキストの条件について説明します。

インタラプトの動作をトレーシングするftraceメッセージを出力するカーネルソースコードを詳細に分析します。

教育用TRACE32プログラムと6個のLinuxカーネルメモリダンプ提供

この講義では、Linuxシステムソフトウェア業界で最も進歩した(Advanced)デバッグ方式である -グローバル最高水準のシステム半導体企業である、Qualcomm Linuxカーネル開発者たちがデバッグする- Linuxカーネルメモリダンプをデバッグする方法を紹介します。TRACE32やCrash utilityなどのデバッグプログラムを活用して、割り込みの主要なデータ構造をデバッグできます。

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

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

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

国内システムソフトウェア分野で前代未聞!「Linuxカーネル」本と「Armアーキテクチャ(Armv8-A、Armv7-A)」本を書いた著者です。また、最新システムソフトウェアトレンド(電気自動車、システム半導体-システムソフトウェア)を最もよく知っている現役開発者であり、システムソフトウェア分野で最も知識普及活動を活発に行っている教育者です。

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

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

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

  • 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カーネルに関する深い予備知識は必要ありません。

こんな方に
おすすめです

学習対象は
誰でしょう?

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

  • システム半導体、電気自動車分野といったシステムソフトウェア開発をしたい就職活動生

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

  • システムソフトウェア分野へキャリア転換を考えている他分野のエンジニア

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

  • C言語

  • コンピュータ構造

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

こんにちは
です。

6,018

受講生

200

受講レビュー

89

回答

4.9

講座評価

22

講座

글로벌 저자 & 리눅스 시스템 소프트웨어 개발자 (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

カリキュラム

全体

56件 ∙ (6時間 13分)

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

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

受講レビュー

全体

6件

5.0

6件の受講レビュー

  • heecheol.song님의 프로필 이미지
    heecheol.song

    受講レビュー 4

    平均評価 5.0

    5

    30% 受講後に作成

    • ionia.kim님의 프로필 이미지
      ionia.kim

      受講レビュー 9

      平均評価 4.9

      5

      100% 受講後に作成

      • dlrbcnvk님의 프로필 이미지
        dlrbcnvk

        受講レビュー 19

        平均評価 4.9

        5

        60% 受講後に作成

        • 최영주님의 프로필 이미지
          최영주

          受講レビュー 2

          平均評価 5.0

          5

          31% 受講後に作成

          • sunny75님의 프로필 이미지
            sunny75

            受講レビュー 112

            平均評価 5.0

            5

            100% 受講後に作成

            2024/07/14/일 15:27 강의 정말 잘 들었습니다. 감사합니다.

            ¥6,874

            austinkimの他の講座

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

            似ている講座

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