トレーニング > Linuxカーネル開発 > Linux Kernel Internals and Development (LFD420)
インストラクター主導のコース

Linux Kernel Internals and Development (LFD420)

Linuxカーネルの開発方法を学びます。このインストラクター主導のコースでは、Linuxの設計方法、カーネルを開発するための基本的な方法、およびLinux開発者コミュニティと効率的に連携する方法について学びます。 Linuxカーネルについて学ぶことに興味がある場合は、これがこのテーマの最も確実なコースです。

対象者

このコースは、経験豊富なプログラマーがLinuxカーネルをしっかりと理解できるように作られています。学生は、Cプログラミング言語、ls、grep、tarなどの基本的なLinux(UNIX)ユーティリティに習熟し、利用可能なテキストエディタ(emacs、viなど)に慣れている必要があります。
少なく読む 続きを読む
学習内容

このコースでは、Linuxの構築方法、カーネルアルゴリズムの仕組み、ハードウェアとメモリの管理、モジュール化手法とデバッグ、カーネル開発者コミュニティの操作方法、およびLinuxを効率的に使用する方法などについて学びます。
少なく読む 続きを読む
身につく知識

Linuxカーネルの背後にある理論と哲学、およびLinuxカーネルコードを開発してデバッグする能力について詳細に理解することで、このコースを終了します。
少なく読む 続きを読む
おもなテーマ
すべて展開
すべて折りたたむ
はじめに
- 目的
- 対象受講者
- The Linux Foundation
-著作権および機密情報なし
- Linux Foundationトレーニング
- 認定プログラムおよびデジタルバッジ
- Linuxディストリビューション
- プラットフォーム
- システムの準備
-仮想マシンの使用とダウンロード
- Linux とオープン ソース プロジェクトの変化
- ドキュメントとリンク
準備
- プロシージャ
-カーネルバージョン
-カーネルソースとgitの使用
- 演習
OSSプロジェクトでの作業方法**
- 適切に貢献するには
-コードがどこから来ているかを知る:DCOとCLA
- メインラインの近くでセキュリティと品質を保つ
- プロジェクトのDNAを研究して理解する
- スクラッチするべき部分を見つけ出す
- メンテナーおよび彼らのワークフローやメソッドを特定する
- 早い段階で意見を訊き、オープンに作業する
- 大きなコード ダンプではなく、差分のコードをコントリビュートする
- エゴはドアに置いておいてください。
- 忍耐強く、長期的な関係を築き、助けの手を差し伸べよう
カーネルアーキテクチャI
-UNIXおよびLinux **
-モノリシックカーネルとマイクロカーネル
-オブジェクト指向メソッド
-メインカーネルコンポーネント
-ユーザースペースとカーネルスペース
カーネルプログラミングプレビュー
-エラー番号とカーネル出力の取得
-タスク構造
-メモリ割り当て
-ユーザースペースとカーネルスペース間でのデータの転送
-オブジェクト指向の継承-一種の
-リンクリスト
-文字列から数値への変換
-ジフィー
- 演習
モジュール
-モジュールとは何ですか?
-ささいな例
-モジュールのコンパイル
-モジュールと組み込み
-モジュールユーティリティ
-自動モジュールロード
-モジュール使用回数
-モジュール構造
-モジュールライセンス
-シンボルのエクスポート
-シンボルの解決**
- 演習
カーネルアーキテクチャII
-プロセス、スレッド、およびタスク
-プロセスコンテキスト
-カーネルプリエンプション
-リアルタイムプリエンプションパッチ
-動的カーネルパッチ
-実行時の代替案**
-新しいプラットフォームへの移植**
- 演習
カーネルの初期化
-システム初期化の概要
-システムブート
-組み込みシステム用のDasU-Boot **
-カーネルの起動
カーネルの構成とコンパイル
-カーネルソースのインストールとレイアウト
-カーネルブラウザ
-カーネル構成ファイル
-カーネル構築とMakefiles
--initrdおよびinitramfs
- 演習
システムコール
-システムコールとは何ですか?
-利用可能なシステムコール
-システムコールの実装方法
-新しいシステムコールの追加
- 演習
カーネルスタイルと一般的な考慮事項
-コーディングスタイル
--kernel-doc **
-一般的なカーネルルーチンとメソッドの使用
-カーネルパッチの作成
-まばら
-possible()とlikely()の使用
-ポータブルコードの記述、CPU、32/64ビット、エンディアン
-SMPの作成
-ハイメモリシステム向けの書き込み
- パワー管理
-セキュリティを念頭に置いて
-ユーザースペースヘッダーとカーネルスペースヘッダーの混合**
- 演習
競合状態と同期方法
-並行性と同期の方法
-不可分操作
-ビット演算
-スピンロック
-Seqlocks
-プリエンプションの無効化
-ミューテックス
-セマフォ
-完了関数
-リードコピーアップデート(RCU)
-参照カウント
- 演習
SMPとスレッド
-SMPカーネルとモジュール
-プロセッサ親和性
-CPUSETS
- SMP アルゴリズム - スケジューリング、ロックなど
-CPUごとの変数**
- 演習
プロセス
-プロセスとは何ですか?
- task_struct
-ユーザープロセスとスレッドの作成
-カーネルスレッドの作成
-プロセスとスレッドの破棄
-カーネル内からユーザースペースプロセスを実行する
- 演習
プロセスの制限と機能**
-プロセス制限
-機能
- 演習
監視とデバッグ
-Debuginfoパッケージ
-トレースとプロファイリング
-sysctl
-SysRqキー
--oopsメッセージ
-カーネルデバッガー
--debugfs
- 演習
スケジューリング
-主なスケジューリングタスク
-SMP
-スケジューリングの優先順位
-システムコールのスケジューリング
-2.4のschedule()関数**
-O(1)スケジューラ**
-タイムスライスと優先順位
-負荷分散
-優先順位の逆転と優先度継承**
-CFSスケジューラ
-優先順位とフェアタイムの計算
-クラスのスケジューリング
-スケジューラの詳細
- 演習
メモリアドレッシング
-仮想メモリ管理
-MMUとTLBがあるシステムとないシステム
-メモリアドレス
-高メモリと低メモリ
-メモリゾーン
-特別なデバイスノード
-NUMA
-ページング
-ページテーブル
-ページ構造
-カーネル同じページのマージ(KSM)**
- 演習
巨大なページ
-巨大なページのサポート
-透明な巨大なページ
--libhugetlbfs
- 演習
メモリ割り当て
-ページのリクエストとリリース
- バディシステム
-スラブとキャッシュの割り当て
-メモリプール
--kmalloc()
--vmalloc()
-早期割り当てとbootmem()
-メモリの最適化
- 演習
プロセスのアドレス空間
-ユーザーメモリとアドレススペースの割り当て
-ページのロック
-メモリ記述子とリージョン
- アクセス権
-メモリ領域の割り当てと解放
-ページフォールト
- 演習
ディスクキャッシュとスワッピング
-キャッシュ
-ページキャッシュの基本
-スワッピングとは何ですか?
-スワップエリア
-ページのインとスワッピング
-Swappinessの制御
-スワップキャッシュ
-リバースマッピング**
-OOMキラー
- 演習
デバイスドライバ**
-デバイスの種類
-デバイスノード
-キャラクタードライバー
- 例
- 演習
シグナル
-シグナルとは何ですか?
-利用可能な信号
-信号のシステムコール
-シグアクション
-シグナルとスレッド
-カーネルがシグナルハンドラをインストールする方法
-カーネルがシグナルを送信する方法
-カーネルがシグナルハンドラーを呼び出す方法
-リアルタイム信号
- 演習
クロージングと評価サーベイ
- 評価サーベイ

**
これらのセクションは、部分的にまたは全体を
オプションとして考えることができます。これらのセクションには、
背景となる参考資料、専門的なトピック、または高度なテーマが含まれています。
講師は、教室での経験や時間の制約に応じて、
これらをカバーするかしないかを選択することができます。
前提条件
このコースを最大限に活用するには、次のことを行う必要があります。

Cプログラミング言語、ls、grep、tarなどの基本的なLinux(UNIX)ユーティリティに習熟し、利用可能なテキストエディタ(emacs、viなど)に慣れていること。主要なLinuxディストリビューションの経験は役に立ちますが、厳密には必要ありません。

レビュー
2024 年 3 月
インストラクターがコース中に行った深さ。細部が大好きです!
2024 年 3 月
素晴らしいトレーニングと、経験豊富で熟練したトレーナーに感謝します。
2024 年 1 月
非常に有益で、どの部分についても質問することができ、本当に知識のある答えが得られました。あちこちで知っていたことについて、よりよく一貫した考えが得られました。
2024 年 1 月
インストラクターは知識を共有することに心から興味があり、人々がそのトピックを理解していることを確認しました。
2024 年 1 月
演習のデザインがとても気に入りました。楽しく学ぶことができました。インストラクターが複数のリソースを共有してくれたので、とても役に立ちました。