Linux Kernel Internals and Development (LFD420)

Linuxカーネル用に開発する方法を学びます。このコースでは、Linuxの設計方法、カーネルで開発するための基本的な方法、およびLinux開発者コミュニティと効率的に作業する方法を学びます。 Linuxカーネルについて学ぶことに興味があるなら、これは絶対にこのテーマに関する決定的なコースです。

$3250 申し込む 見積もりを取得

コースの概要

このコースは、経験豊富なプログラマーにLinuxカーネルの確実な理解を提供するように設計されています。 Linuxカーネルの背後にある理論と哲学の詳細な検討に加えて、Linuxカーネルコードの開発とデバッグに必要なツールを提供するために設計された広範な実践演習とデモにも参加します。

もっと見る

このコースでは次のことを学びます。

  • Linuxの設計方法
  • カーネルアルゴリズムの仕組み
  • ハードウェアおよびメモリ管理
  • モジュール化技術とデバッグ
  • カーネル開発者コミュニティの運営方法と、それを効率的に使用する方法。
  • その他。

このコースの情報は、主要なLinuxディストリビューションで機能します。

スケジュール

インストラクター主導
5/18/2020 - 5/21/2020
バーチャル
$3250 カートに追加 見積もりを作成する
インストラクター主導
6/22/2020 - 6/25/2020
バーチャル
保証付き次回登録時このクラスは、次回の登録時に実行されることが保証されます。
$3250 カートに追加 見積もりを作成する
インストラクター主導
7/27/2020 - 7/30/2020
バーチャル
$3250 カートに追加 見積もりを作成する
インストラクター主導
8/24/2020 - 8/27/2020
バーチャル
$3250 カートに追加 見積もりを作成する
あなたのスケジュールに合うコースがない場合は、こちらを参照してください。 パートナーが提供するコース>

おもなテーマ

  1. 前書き
    • 目的
    • あなたは誰ですか
    • The Linux Foundation
    • Linux Foundationのトレーニング
    • Linuxディストリビューション
    • プラットフォーム
    • システムの準備
    • 仮想マシンの使用とダウンロード
    • Linuxで物事が変わる
    • ドキュメントとリンク
    • コース登録
  2. 予選
    • 手続き
    • カーネルバージョン
    • カーネルソースと使用 ギット
  3. OSSプロジェクトでの作業方法**
    • 適切に貢献する方法の概要
    • セキュリティと品質のためにメインラインの近くにとどまる
    • プロジェクトDNAの研究と理解
    • スクラッチしたいものを把握する
    • メンテナーとそのワークフローと方法を特定する
    • 初期の入力を取得し、オープンで作業する
    • 大きなコードダンプではなく、増分ビットを提供する
    • あなたのエゴをドアに置いてください:薄くなるな
    • 忍耐強く、長期的な関係を築き、助けになる
  4. カーネルアーキテクチャI
    • UNIXおよびLinux **
    • モノリシックカーネルとマイクロカーネル
    • オブジェクト指向メソッド
    • メインカーネルタスク
    • ユーザースペースとカーネルスペース
    • カーネルモードLinux **
  5. カーネルプログラミングプレビュー
    • エラー番号とカーネル出力の取得
    • タスク構造
    • メモリ割り当て
    • ユーザー空間とカーネル空間の間でデータを転送する
    • リンクリスト
    • 文字列から数値への変換
    • ジフィー
    • ラボ
  6. モジュール
    • モジュールとは何ですか?
    • 些細な例
    • モジュールのコンパイル
    • モジュールと組み込み
    • モジュールユーティリティ
    • モジュールの自動ロード/アンロード
    • モジュール使用数
    • モジュール 構造
    • モジュールのライセンス
    • シンボルのエクスポート
    • シンボルの解決**
    • ラボ
  7. カーネルアーキテクチャII
    • プロセス、スレッド、およびタスク
    • プロセスコンテキスト
    • カーネルプリエンプション
    • リアルタイムプリエンプションパッチ
    • 動的カーネルパッチ
    • 実行時の代替手段**
    • 新しいプラットフォームへの移植**
    • ラボ
  8. カーネルの初期化
    • システム初期化の概要
    • システム起動
    • 組み込みシステム向けDas U-Boot **
  9. カーネルの構成とコンパイル
    • カーネルソースのインストールとレイアウト
    • カーネルブラウザ
    • カーネル構成ファイル
    • カーネルの構築とメイクファイル
    • initrdおよびinitramfs
    • ラボ
  10. システムコール
    • システムコールとは何ですか?
    • 利用可能なシステムコール
    • システムコールの実装方法
    • 新しいシステムコールを追加する
    • ラボ
  11. カーネルスタイルと一般的な考慮事項
    • コーディングスタイル
    • kernel-doc **
    • 汎用カーネルルーチンとメソッドの使用
    • カーネルパッチの作成
    • まばらな
    • を使用して ありそうな() および ありそうもない()
    • ポータブルコード、CPU、32/64ビット、エンディアンネスの記述
    • SMPの作成
    • ハイメモリシステム用の書き込み
    • パワー管理
    • セキュリティを念頭に置く
    • ユーザーヘッダーとカーネルスペースヘッダーの混在**
    • ラボ
  12. 競合状態と同期方法
    • 並行性と同期の方法
    • 原子操作
    • ビット操作
    • スピンロック
    • シークロックス
    • プリエンプションを無効にする
    • ミューテックス
    • セマフォ
    • 完了関数
    • 読み取りコピー更新(RCU)
    • 参照カウント
    • ラボ
  13. SMP とスレッド
    • SMPカーネルとモジュール
    • プロセッサアフィニティ
    • CPUSETS
    • SMPアルゴリズム-スケジューリング、ロックなど
    • CPUごとの変数**
    • ラボ
  14. プロセス
    • プロセスとは何ですか?
    • task_struct
    • ユーザープロセスとスレッドの作成
    • カーネルスレッドの作成
    • プロセスとスレッドの破棄
    • カーネル内からのユーザー空間プロセスの実行
    • ラボ
  15. プロセスの制限と機能**
    • プロセス制限
    • 能力
    • ラボ
  16. 監視とデバッグ
    • Debuginfoパッケージ
    • トレースとプロファイリング
    • sysctl
    • SysRqキー
    • おっとっと メッセージ
    • カーネルデバッガー
    • debugfs
    • ラボ
  17. スケジューリング
    • 主なスケジューリングタスク
    • SMP
    • スケジューリングの優先順位
    • システムコールのスケジューリング
    • 2.4 スケジュール() 関数
    • O(1)スケジューラー
    • タイムスライスと優先順位
    • 負荷分散
    • 優先度の逆転と優先度の継承**
    • CFSスケジューラー
    • 優先順位とフェアタイムの計算
    • スケジューリングクラス
    • CFSスケジューラの詳細
    • ラボ
  18. メモリアドレッシング
    • 仮想メモリ管理
    • MMUおよびTLBを使用するシステムと使用しないシステム
    • メモリアドレス
    • ハイメモリとローメモリ
    • メモリゾーン
    • 特別なデバイスノード
    • NUMA
    • ページング
    • ページテーブル
    • ページ 構造
    • カーネルの同一ページのマージ(KSM) **
    • ラボ
  19. 巨大なページ
    • 巨大なページのサポート
    • libhugetlbfs
    • 透明な巨大ページ
    • ラボ
  20. メモリ割り当て
    • ページのリクエストとリリース
    • バディシステム
    • スラブとキャッシュの割り当て
    • メモリプール
    • kmalloc()
    • vmalloc()
    • 早期配分と bootmem()
    • メモリの最適化
    • ラボ
  21. プロセスのアドレス空間
    • ユーザーメモリとアドレススペースの割り当て
    • ページのロック
    • メモリ記述子と領域
    • アクセス権
    • メモリ領域の割り当てと解放
    • ページ違反
    • ラボ
  22. ディスクキャッシュとスワッピング
    • キャッシュ
    • ページキャッシュの基本
    • スワッピングとは何ですか?
    • スワップ領域
    • ページの入れ替え
    • Swappinessの制御
    • スワップキャッシュ
    • 逆マッピング**
    • OOMキラー
    • ラボ
  23. デバイスドライバ**
    • デバイスの種類
    • デバイスノード
    • キャラクタードライバー
    • ラボ
  24. 信号
    • シグナルとは何ですか?
    • 利用可能な信号
    • シグナルのシステムコール
    • シグアクション
    • シグナルとスレッド
    • カーネルがシグナルハンドラをインストールする方法
    • カーネルが信号を送信する方法
    • カーネルがシグナルハンドラを呼び出す方法
    • リアルタイム信号
    • ラボ
  25. Closing and Evaluation Survey

**これらのセクションは、一部または全体をオプションと見なすことができます。これらには、背景の参考資料、専門的なトピック、または高度な主題が含まれています。インストラクターは、教室での経験と時間の制約に応じて、それらをカバーするかしないかを選択できます

前提知識

学生は、Cプログラミング言語、ls、grep、tarなどの基本的なLinux(UNIX)ユーティリティに習熟し、利用可能なテキストエディター(emacs、viなど)に慣れている必要があります。役立つが、厳密には必要ではない。

コメント

Most drawings were very helpful.”  Mar 2020

 

John delivered the material very well and it definitely shows that he’s an expert。」 2020年3月

 

John’s diagrams and explanations were excellent。」 2020年3月

 

「構造化され、整理されたコンテンツ。」 2020年1月

 

「トレーナーによる優れたコンテンツ配信。」 2020年1月

 

「Behanはすごいです。彼はLinux Internalsについて知っておくべきすべてのことを本当に知っていて、良い精神と面白い発言で講義します。」 2020年1月

 

 

 

 

構成

実施方法

ライブオンライン(仮想)

実施方法

ライブ(教室)

含まれているもの

  • インストラクター主導の4日間の授業時間
  • 演習と課題
  • リソースとコースマニュアル
  • 修了証
  • デジタルバッジ
  • 無料のChromebook

経験レベル

   中級

コースの評価

   

アドバイス

5人以上でトレーニングを受けるなら?
企業向けの団体割引を受ける>

Chromebook
$3250 申し込む 見積もりを取得