コース概要

はじめに

  •  目的
  •  あなたとは
  •  The Linux Foundationについて
  •  Linux Foundationのトレーニング
  •  認定プログラムとデジタルバッジ
  •  Linuxディストリビューション
  •  プラットフォーム
  •  システムの準備
  •  仮想マシンの使用とダウンロード
  •  Linuxでの変更点

前提知識

  •  手続き
  •  規格とLSB

OSSプロジェクトへの参加方法 **

  •  適切な貢献の概要
  •  セキュリティと品質のためにメインラインに近づくこと
  •  プロジェクトDNAの研究と理解
  •  解決したい課題を特定する
  •  メンテナとそのワークフロー、手法を特定する
  •  初期段階でのフィードバックを得てオープンに作業すること
  •  小さな部分を貢献し、大量のコードダンプを避けること
  •  自己意識を捨て、皮肉に反応しないこと
  •  忍耐強く、長期的な関係を築き、役立つこと

コンパイラ

  •  GCC
  •  他のコンパイラ
  •  主要なgccオプション
  •  プリプロセッサ
  •  統合開発環境(IDE)
  •  ラボ

ライブラリ

  •  静的ライブラリ
  •  共有ライブラリ
  •  ライブラリへのリンク
  •  動的リンキングローダー
  •  ラボ

Make

  •  makeとMakefilesの使用
  •  大規模プロジェクトのビルド
  •  より複雑なルール
  •  組み込みルール
  •  ラボ

ソース管理

  •  ソース管理
  •  RCSとCVS
  •  Subversion
  •  git
  •  ラボ

デバッグとコアダンプ

  •  gdb
  •  コアダンプファイルとは何か?
  •  コアダンプの生成
  •  コアダンプの検査
  •  ラボ

デバッグツール

  •  時間を取得する方法
  •  プロファイリングとパフォーマンス
  •  valgrind
  •  ラボ

システムコール

  •  システムコールとライブラリ関数の違い
  •  システムコールの生成方法
  •  戻り値とエラーナンバー
  •  ラボ

メモリ管理と割り当て

  •  メモリ管理
  •  動的割り当て
  •  malloc()のチューニング
  •  ページのロック
  •  ラボ

Linuxでのファイルとファイルシステム **

  •  ファイル、ディレクトリ、デバイス
  •  仮想ファイルシステム
  •  ext2/ext3ファイルシステム
  •  ジャーナリングファイルシステム
  •  ext4/ ファイルシステム
  •  ラボ

ファイルI/O

  •  UNIXファイルI/O
  •  開閉
  •  読み込み、書き込み、シーク
  •  位置指定とベクトルI/O
  •  標準I/Oライブラリ
  •  大規模ファイルサポート(LFS)
  •  ラボ

高度なファイル操作

  •  stat関数
  •  ディレクトリ関数
  •  inotify
  •  メモリマッピング
  •  flock()とfcntl()
  •  一時ファイルの作成
  •  その他のシステムコール
  •  ラボ

プロセス I

  •  プロセスとは何か?
  •  プロセスの制限
  •  プロセスグループ
  •  procファイルシステム
  •  プロセス間通信手法
  •  ラボ

プロセス II

  •  system()を使用してプロセスを作成する
  •  fork()を使用してプロセスを作成する
  •  exec()を使用してプロセスを作成する
  •  clone()の使用
  •  終了処理
  •  コンストラクタとデストラクタ
  •  待機
  •  デーモンプロセス
  •  ラボ

パイプとFIFO

  •  パイプとプロセス間通信
  •  popen()とpclose()
  •  pipe()
  •  名前付きパイプ(FIFO)
  •  splice(), vmsplice() と tee()
  •  ラボ

非同期I/O **

  •  非同期I/Oとは何か?
  •  POSIX非同期I/O API
  •  Linuxでの実装
  •  ラボ

シグナル I

  •  シグナルとは何か?
  •  利用可能なシグナル
  •  シグナルの送出
  •  アラーム、一時停止、スリープ
  •  シグナルハンドラの設定
  •  シグナルセット
  •  sigaction()
  •  ラボ

シグナル II

  •  再入可能性和シグナルハンドラ
  •  ジャンプと非ローカルリターン
  •  siginfo と sigqueue()
  •  リアルタイムシグナル
  •  ラボ

POSIXスレッド I

  •  Linuxでのマルチスレッディング
  •  基本的なプログラム構造
  •  スレッドの作成と削除
  •  シグナルとスレッド
  •  フォーク対スレッディング
  •  ラボ

POSIXスレッド II

  •  デッドロックと競合状態
  •  ミューテックス操作
  •  セマフォ
  •  フテックス
  •  条件付き操作
  •  ラボ

ネットワークとソケット

  •  ネットワーク層
  •  ソケットとは何か?
  •  ストリームソケット
  •  データグラムソケット
  •  Rawソケット
  •  バイト順序
  •  ラボ

ソケット アドレスとホスト

  •  ソケットアドレス構造体
  •  IPアドレスの変換
  •  ホスト情報
  •  ラボ

ソケット ポートとプロトコル

  •  サービスポート情報
  •  プロトコル情報
  •  ラボ

ソケット クライアント

  •  基本的なクライアントシーケンス
  •  socket()
  •  connect()
  •  close() と shutdown()
  •  UNIXクライアント
  •  インターネットクライアント
  •  ラボ

ソケット サーバー

  •  基本的なサーバーシーケンス
  •  bind()
  •  listen()
  •  accept()
  •  UNIXサーバー
  •  インターネットサーバー
  •  ラボ

ソケット 入出力操作

  •  write(), read()
  •  send(), recv()
  •  sendto(), recvfrom()
  •  sendmsg(), recvmsg()
  •  sendfile()
  •  socketpair()
  •  ラボ

ソケット オプション

  •  ソケットオプションの取得と設定
  •  fcntl()
  •  ioctl()
  •  getsockopt() と setsockopt()
  •  ラボ

Netlinkソケット **

  •  Netlinkソケットとは何か?
  •  Netlinkソケットの開設
  •  Netlinkメッセージ
  •  ラボ

ソケット マルチプレクシングと並行サーバー

  •  マルチプレクスされた非同期ソケットI/O
  •  select()
  •  poll()
  •  pselect() と ppoll()
  •  epoll
  •  シグナル駆動の非同期I/O
  •  並行サーバー
  •  ラボ

プロセス間通信

  •  IPCの手法
  •  POSIX IPC
  •  System V IPC **
  •  ラボ

共有メモリ

  •  共有メモリとは何か?
  •  POSIX共有メモリ
  •  System V共有メモリ **
  •  ラボ

セマフォ

  •  セマフォとは何か?
  •  POSIXセマフォ
  •  System Vセマフォ **
  •  ラボ

メッセージキュー

  •  メッセージキューとは何か?
  •  POSIXメッセージキュー
  •  System Vメッセージキュー **
  •  ラボ

要求

このコースは経験豊富な開発者向けです。学生はC言語プログラミングの習熟と基本的なLinuxユーティリティおよびテキストエディタの使用に慣れていることが求められます。

対象者

このコースは経験豊富な開発者向けです。学生はC言語プログラミングの習熟と基本的なLinuxユーティリティおよびテキストエディタの使用に慣れていることが求められます。

経験レベル: 中級

 28 時間

参加者の人数


参加者1人あたりの価格

今後のコース

関連カテゴリー