お問い合わせを送信いただきありがとうございます!当社のスタッフがすぐにご連絡いたします。
予約を送信いただきありがとうございます!当社のスタッフがすぐにご連絡いたします。
コース概要
イントロダクション
- GNU/Linux の歴史概要
- ライセンス
- カーネルのバージョン管理
- リリースサイクル
- カーネルツリー
- メインライン
- カーネル空間とユーザー空間
- 仕組みとポリシー
- カーネルドライバの代替手段
- RTOS と Linux
メモリ管理
- 仮想メモリと物理メモリ
- カーネル内のメモリ割り当て
- ページ
- ゾーン
- API
- スlab (Slab)
カーネルパッチ
- ライフサイクル
- Git
- カーネルソース
- パッチの作成
- パッチのチェック
- パッチの修正
- パッチの提出
- 監査済みコード
カーネルモジュール
- カーネルソースの取得
- 設定/ビルド/インストール
- デバイスドライバ(静的リンク、ランタイムロード)
- init/exit
- ライセンス
- EXPORT_SYMBOL(GPL)
- 外部ツリーの Makefile
- module-init-tools
- カーネルツリー内のモジュール
- Kconfig
- パラメータの受け渡し
- Sparse
キャラクタデバイスドライバ
- アーキテクチャ
- ユーザー/カーネルインターフェース
- I/O サブシステム
- VFS (Virtual File System)
- sysfs (デバイス、バス、ドライバ、クラス)、
- kobject/ktype/kset
- Linux カーネルドライバモデル
- デバイスファイル
-
キャラクタドライバー
- 初期化
- 登録
- open, release
- cdev, cdev_add, cdev_del,...
- メジャー番号/マイナー番号
- udev, udevmonitor, udevadm
キャラクタデバイスドライバの応用操作
- ioctl
- unlocked ioctl
- compat ioctl
- ユーザー空間 API
- カーネル空間 API
- プロセスのライフサイクル
- スリーピング/ブロック
- スリーピングとウェイクアップ
- ウェイトキュー
- 轟音群問題 (Thundering herd)
- poll/select
カーネルデバッグ
- デバッグ
-
カーネルのデバッグ方法
- Git を使った二分探索によるデバッグ
- カーネルによるデバッグサポート
- printk, syslogd, klogd, ロギングレベル, レートリミット, デバッグレベル, 選択的なサブシステムのデバッグ
- debugfs からのクエリによるデバッグ
- Oops のデバッグ、Oops の発生強制
- Magic SysRq キー
- kgdb/kdb
- JTAG
トレース
- gcov
- lcov
- oprofile
-
ftrace
- nop tracer
- function tracer
- sched switch tracer
- function graph tracer
- dynamic tracer
- trace-cmd/kernelshark
- perf
- LTTng
割り込み (Interrupts)
- 割り込みとポーリング
- 割り込み
- プログラムのセクション
- 再入可能性
- イベント
- 割り込みハンドラ
- 共有割り込みハンドラ
- 割り込みフロー
- 割り込み制御
作業のDeferred (Deferring Work)
- トップハーフ/ボトムハーフ
- ソフトウェア割り込み (Softirqs)
- タスクレット (Tasklets)
- ワークキュー (Work queues)
- スレッド化された割り込み
並行処理
- クリティカルリージョン/セクション
- アトミック演算
- レースコンディション
- 同期
- ロッキング
- ロッキングの解決策
- デッドロック
- コンテンション
- 何をロックすべきか?
-
何を利用できるか?
- アトミック操作
- スピンロック
- リーダーライタースピンロック
- セマフォ
- バイナリセマフォ
- ミューテックス
- リーダーライターセマフォ
- 完了変数 (Completion variables)
- シーケンシャルロック
- プリエンプションの無効化
- 順序保証とバリアー
時間
- HZ
- ジフリーズ (Jiffies)
- 長時間/短時間のディレイ
- カーネルタイマー
ハードウェア I/O
- I/O ポート
- I/O メモリ
- レジスタへのアクセス時の副作用への対応方法
ユーザーとカーネル間の通信
- put/get_user()
- copy_to_user()/copy_from_user()
- カーネル I/O
- メモリマップ
- procfs
- sysfs
- debugfs
- relayfs
- Netlink
- ioctl
ポータビリティ
- ワードサイズ
- オpaqueな型
- 符号付き/符号なし文字
- データのアラインメント
- 整数拡張
- コードの再利用
- エンディアン
- システムティック
- ページサイズ
- 命令の順序付け
- SMP/プリエンプション/ハイメモリ
特に注釈がない限り、本コンテンツおよびコースアウトラインはCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0)の下でライセンスされています。
要求
- GNU/Linux システムのエンドユーザーとしての基本的な利用経験
- コマンドラインシェルの基本的な利用経験
- ユーザー空間/アプリケーション開発に関する基礎知識
- C言語の中級レベルのプログラミング知識
- 事前に埋め込み GNU/Linux システムアーキテクチャの研修を受講していること(強く推奨)、またはそこで概説されるトピックを十分に理解していること
35 時間
お客様の声 (3)
すべてが正常です。
Adrian Rybka - SEOyon
コース - Flutter Development Bootcamp with Dart
機械翻訳
非常に役立つ追加情報
Grzegorz - Comp S.A.
コース - BLoC Pattern
機械翻訳
彼の知識と忍耐力。
Chrisna - Agricatural Research Council
コース - Ionic 4 and Angular for Developers
機械翻訳