Inflearn brand logo image
Inflearn brand logo image
Inflearn brand logo image
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カーネルの構造と原理:プロセス[著者直講第1部-4]>はロードマップ「システムソフトウェア開発者向けのLinuxカーネル - basic course」に含まれる講義。

体系的にLinuxカーネルを構成する主な機能を学びたい方は、ロードマップ(全講義の30%割引)を活用してください。

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

システムソフトウェア開発者なら、知っておくべきLinuxカーネル


すべてのITデバイスで最も一般的なオペレーティングシステムは何ですか?それはLinuxオペレーティングシステムです。スマートフォン、デジタルテレビ、航空エンターテイメントシステム、サーバーに使用されています。システム半導体メーカーで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カーネルメモリダンプでデバッグします。

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シミュレータを使用してプロセスに関連するカーネルのデータ構造をデバッグしながら、クラッシュユーティリティでメモリダンプをロードしてカーネルの主な動作を分析します。特に、プロセスのスタックが壊れたり、スタックオーバーフローが発生した場合のデバッグ方法は、トップクラスのペプリスメーカーの開発者にもよく分からない内容です。

このようなことを学びます。

Linuxシステムの3つのリソースの1つであるプロセスについて説明し、なぜプロセスを学ぶべきかについて説明します。プロセスの基本概念を簡単に紹介します。

プロセスの実行スペースを説明し、プロセスを知る必要がある理由を説明します。

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

プロセスの属性情報を格納および管理する task_struct 構造体を、TRACE32 および Crash-Utility デバッグプログラムを使用して分析します。

Linuxカーネルのいくつかの機能とサブシステムでよく利用されている現在のマクロについて説明します。

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

マルチコアシステム構造でプロセスが実行されるフローについて説明します。

TRACE32プログラムを使用して、プロセスが生成または終了する動作を詳細にデバッグします。

TRACE32プログラムを使用して割り込みハンドラが実行されるプロセスの割り込みコンテキスト情報を詳細に分析します。

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


トレーニング用TRACE32プログラムと8つのLinuxカーネルメモリダンプを提供

今回のレッスンでは、Linuxシステムソフトウェア業界で最も先進的なデバッグ方法である -グローバル最高レベルのシステム半導体メーカーであるQualcomm Linuxカーネル開発者がデバッグする- Linuxカーネルメモリダンプをデバッグする方法を紹介します。提供します。

トレーニング用TRACE32プログラム(シミュレータ版)を講義カリキュラムからダウンロードできます。

オープンソースプロジェクトとして運用されている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):ラズベリーパイ(ラズビアン)、Linuxカーネルv6.1

  • TRACE32教育用プログラムおよび設置ガイド文書(講義)

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

選手の知識と注意事項

  • おおよそのLinuxがどのように動作するかを知っておくと良いでしょう。

  • 「Linux カーネルの構造と原理: デバッグ - Basic [著者直講 1部-2]」 講義をなるべく先に聞いてきてください。

  • オペレーティングシステムやコンピュータの構造について知っていれば、より簡単にクラスを聴くことができます。

  • Linuxカーネルに関する深いプレーヤーの知識は必要ありません。

こんな方に
おすすめです

学習対象は
誰でしょう?

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

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

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

  • システムソフトウェア分野へのキャリア転換を目指す他分野の開発者

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

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

  • コンピュータ構造

  • 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

カリキュラム

全体

71件 ∙ (9時間 21分)

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

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

受講レビュー

全体

5件

5.0

5件の受講レビュー

  • nexgedu18614님의 프로필 이미지
    nexgedu18614

    受講レビュー 1

    平均評価 5.0

    5

    30% 受講後に作成

    • hjlee929096님의 프로필 이미지
      hjlee929096

      受講レビュー 12

      平均評価 5.0

      5

      30% 受講後に作成

      • woo12346560311님의 프로필 이미지
        woo12346560311

        受講レビュー 5

        平均評価 5.0

        5

        30% 受講後に作成

        Okay.

        • kech6119610648님의 프로필 이미지
          kech6119610648

          受講レビュー 3

          平均評価 5.0

          5

          30% 受講後に作成

          • aceoftop1975님의 프로필 이미지
            aceoftop1975

            受講レビュー 94

            平均評価 5.0

            5

            100% 受講後に作成

            2024/07/13/Sat 21:07 I really enjoyed the Linux lecture. Thank you.

            ¥6,563

            austinkimの他の講座

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

            似ている講座

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