コース概要

導入

    GNU/Linux の簡単な歴史 ライセンス カーネルのバージョン管理 リリース サイクル カーネル ツリー メインライン カーネル vs. ユーザー空間メカニズム vs. ポリシー カーネル ドライバーの代替案 RTOS vs. Linux

メモリーManagement

    カーネル ページ ゾーン API スラブにおける仮想メモリと物理メモリのメモリ割り当て

カーネルパッチ

    ライフサイクル git カーネルソース パッチチェック パッチ修正 パッチ配布 パッチ監査済みコード

カーネルモジュール

    カーネル ソースの取得 デバイス ドライバーの構成/ビルド/インストール (静的にリンクされ、実行時にロードされる) init/終了 ライセンス発行 シンボルのエクスポート GPL ツリー外 makefile module-init-tools カーネル ツリー内のモジュール Kconfig パラメーターの受け渡し スパース

チャードライバー

    アーキテクチャ ユーザー/カーネル インターフェイス I/O サブシステム VFS sysfs (デバイス、バス、ドライバー、クラス)、kobject/ktype/kset Linux カーネル ドライバー モデル デバイス ファイル char ドライバーの初期化 登録オープン、リリース cdev、cdev add、cdev del、...メジャー/マイナー番号 udev、udevmonitor、udevadm

高度なキャラクタードライバーの操作

    ioctl ロック解除 ioctl compat ioctl ユーザー空間 API カーネル空間 API プロセスのライフサイクル スリープ/ブロック スリープ/ウェイクアップ 待機キュー サンダーリング ハード ポーリング/選択

カーネルのデバッグ

    バグのデバッグ カーネルのデバッグ git カーネルからのデバッグ サポートによるバイナリ検索 printk syslogd、klogd、loglevels、レート制限、デバッグ レベル、選択的サブシステムのデバッグ debugfs のクエリによるデバッグ おっと デバッグ、アサート おっと Magic SysRq キー kgdb/kdb JTAG

トレース

    gcov lcov oprofile ftrace nop トレーサ関数トレーサ sched スイッチ トレーサ関数 グラフ トレーサ ダイナミック トレーサ
トレース-cmd/kernelshark
  • パフォーマンス
  • 長い
  • 割り込み
  • 割り込みとポーリング 割り込みプログラム セクション 再入可能イベント 割り込みハンドラー 共有割り込みハンドラー 割り込みフロー 割り込み制御

      作業の延期

    上半分/下半分 SoftIRQS タスクレット ワークキュー スレッド化された割り込み

      同時実行性

    クリティカル領域/セクション アトミック競合状態 同期 ロック ロック ソリューション デッドロック競合 何をロックするか?何が使えるの?アトミック操作 スピン ロック リーダー/ライター スピン ロック セマフォ バイナリ セマフォ ミューテックス リーダー/ライター セマフォ 完了変数 シーケンシャル ロック プリエンプション順序の無効化とバリア

      時間

    HZ Jiffies によるカーネル タイマーの大小の遅延

      ハードウェアI/O

    I/O ポート I/O メモリ レジスタにアクセスする際の副作用にどう対処するか?

      ユーザーカーネル Communication

    put(get)_user() copy to(from)_user() カーネル I/O メモリ マッピング procfs sysfs debugfs reversefs netlink ioctl

      携帯性

    ワード サイズ 不透明型 符号付き/符号なし char データ アライメント 整数プロモーション コード 再利用 エンディアン システム ティック ページ サイズ 命令順序付け SMP/プリエンプション/ハイ メモリ

      特に明記されている場合を除き、コンテンツおよびこのコース概要は表示 - 非営利 - 継承 4.0 インターナショナル (CC BY-NC-SA 4.0) に基づいてライセンスされています。

    要求

    • エンドユーザーとしてGNU/Linuxシステムの使用に精通していること
    • コマンドラインシェルに精通している
    • ユーザースペース/アプリケーション開発の基礎知識
    • 中級のCプログラミング知識
    • 以前に Embedded GNU/Linux Systems Architecture に参加したことがあること(強く推奨します!)、および/またはそこで概説されたトピックをよく理解していること
     35 時間

    参加者の人数



    Price per participant

    お客様の声 (4)

    関連コース

    The Yocto Project - An Overview - hands-on

    28 時間

    IBM MobileFirst Platform for Hybrid Mobile Application Development

    21 時間