강의

멘토링

커뮤니티

Security & Network

/

System

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

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

  • austinkim
저자 직강
리눅스커널
임베디드리눅스
프로세스
trace32
Linux
linux-kernel
Operating System
Computer Architecture

学習した受講者のレビュー

受講後に得られること

  • Linuxカーネルにおけるプロセスの役割

  • プロセスの基本動作方式

  • プロセスのスタックの構造

  • TRACE32でプロセスの多様な実行フローをデバッグする方法

  • マルチコアシステム構造におけるプロセスの動作方式

<お知らせ>

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

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

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カーネルの構造と原理」という本では、様々な方法で読者の皆さんがftraceデバッグ実習を通してプロセスを学べるように構成しました。

講義の差別化ポイント

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

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

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

2. プロセスの基本概念を簡単で詳しく説明

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

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

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

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

今回の講義では、この内容を扱います。LinuxカーネルメモリダンプをTRACE32シミュレータを使用してプロセスに関連するカーネルのデータ構造をデバッグしながら、crash-utilityでメモリダンプをロードしてカーネルの主要動作を分析します。特にプロセスのスタックが破損したり、スタックオーバーフローが発生した際のデバッグ方法は、一流のファブレス企業の開発者でもよく知らない内容です。

こんな内容を学びます

Linuxシステムの3大リソースの一つであるプロセスについて説明し、なぜプロセスを学ぶ必要があるのかを説明します。プロセスの基本概念について分かりやすく紹介します。

プロセスの実行空間について説明し、プロセスを理解する必要がある理由を説明します。

プロセスの基本動作をCrash-UtilityとTRACE32デバッグプログラムを使用して分析します。

プロセスの属性情報を保存・管理するtask_struct構造体をTRACE32とCrash-Utilityデバッグプログラムを使用して分析します。

Linuxカーネルの様々な機能とサブシステムで多く活用されるcurrentマクロについて説明します。カーネルソースコードを

アセンブリコードレベルまで詳細に分析します。

マルチコアシステム構造においてプロセスが実行される流れを説明します。これに関連するデータ構造についても説明します。

TRACE32プログラムを使用してプロセスが生成または終了する動作を詳細にデバッグします。プロセスのデータ構造と関数呼び出しフローを詳細に説明します。(受講生の皆さんは本講義にアップロードされたTRACE32プログラムとカーネルメモリダンプをダウンロードして、実際に操作しながら実習することができます。)

TRACE32プログラムを使用して割り込みハンドラが実行されるプロセスの割り込みコンテキスト情報について詳細に分析します。Crash-utilityプログラムから抽出したftraceメッセージを分析しながら割り込みコンテキストについて説明します。

ダンプのデータ構造とコールスタックをLinuxカーネルソースコードと共に分析します。


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

今回の講義では、Linuxシステムソフトウェア業界で最も進歩した(Advanced)デバッグ方式である -グローバル最高水準のシステム半導体企業である、Qualcomm Linuxカーネル開発者たちがデバッグする- Linuxカーネルメモリダンプをデバッグする方法を紹介します。TRACE32とCrash utilityのようなデバッグプログラムを活用して、Linuxカーネルメモリをデバッグできる高度なデバッグ方法を提供します。

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

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

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

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

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

  • 「システムソフトウェア開発のためのArmアーキテクチャの構造と原理」(2023年)著者

  • 'プログラマース デブ コース: 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教育用プログラム及びインストールガイド文書(講義)

  • 8個の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

カリキュラム

全体

71件 ∙ (9時間 21分)

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

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

受講レビュー

全体

9件

5.0

9件の受講レビュー

  • heecheolsong님의 프로필 이미지
    heecheolsong

    受講レビュー 4

    平均評価 5.0

    5

    100% 受講後に作成

    • redkyo008975님의 프로필 이미지
      redkyo008975

      受講レビュー 4

      平均評価 5.0

      5

      100% 受講後に作成

      • wodud0432886님의 프로필 이미지
        wodud0432886

        受講レビュー 3

        平均評価 5.0

        5

        97% 受講後に作成

        詳細で復習レベルの講義内容がとても良いと思います!😊 実際のBSP業務を見ながらカーネルログ分析やTRACE32を利用したCRASH問題分析及び追跡を多くするのですが、そういうことを考えてみた時に良い講義だと思います!

        • ioniakim2638님의 프로필 이미지
          ioniakim2638

          受講レビュー 9

          平均評価 4.9

          5

          100% 受講後に作成

          • nexgedu18614님의 프로필 이미지
            nexgedu18614

            受講レビュー 1

            平均評価 5.0

            5

            30% 受講後に作成

            ¥6,873

            austinkimの他の講座

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

            似ている講座

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