Linux システムプログラミング

リナックス システム プログラミング

Linux システムプログラミングの表紙
OS
著者:
ロバート・ラブ / 千住治郎(ラブ, ロバート / センジュ, ジロウ)
出版社:
オライリー・ジャパン
出版日:
2008年04月
ISBN:
9784873113623
在庫:
在庫あり
4.5(4 件 / 楽天ブックス)
中級者向け
LinuxOSコンパイラーシステムプログラミングファイル I/Oメモリ管理システムコールメモリマッピング最適化技術カーネル

なぜ注目されているか

言及数
435位
総合482位 ↑ 3 ランクアップ 言及 6 件
02320222023202420252026

書籍紹介

本書には、Linux の概要、カーネル、C ライブラリ、C コンパイラなどプログラミングの基礎知識から、ファイル I / O、バッファサイズ管理、メモリマッピング、最適化技術、システムコール、メモリ管理まで、プログラマの観点から実践的なトピックが多く盛り込まれている。Linux カーネル動作についても、その内部実装よりもプログラマがソースコードを書くために必須の知識が凝縮。カーネル 2.6 対応。

技書の森解説

『Linux システムプログラミング』 (Robert Love 著、千住 治郎 訳、オライリー・ジャパン、2008 年 4 月刊) は、Linux 上で動くプログラムがカーネルの機能をどのように呼び出すのかを、プログラマの立場から解説した書籍です。原書は Linux System Programming で、版元の紹介文は、カーネルの内部実装よりもプログラマがソースコードを書くために必須の知識をまとめた本だと説明し、対応するカーネルを 2.6 と明記しています。C で Linux 向けのツールやサーバーを書く人が、ライブラリ関数の一段下で何が起きているのかを押さえるための一冊です。

全 10 章と GCC 拡張の付録、ファイル I/O からタイマーまで

構成は全 10 章と付録です。1 章の概要および主要概念で API と ABI、標準仕様、Linux プログラミングの概念を整理したあと、2 章から 4 章の 3 つの章をファイルの入出力に充てています。2 章のファイル I/O は read () と write () に加えて同期 I/O、ダイレクト I/O、I/O の多重化を扱い、3 章は標準 I/O ライブラリのバッファリングとその制御、4 章は scatter-gather I/O、Event Poll インタフェース、ファイルのメモリへのマッピング、I/O スケジューラーと I/O パフォーマンスへ進みます。5 章と 6 章はプロセス管理で、新規プロセスの起動と終了、デーモン、プロセススケジューリング、プロセッサアフィニティ、リアルタイムシステム、リソースリミットを取り上げます。後半は 7 章のファイル、ディレクトリの管理、8 章のメモリ管理、9 章のシグナル、10 章の時間と続き、巻末には C 言語の GCC 拡張を扱う付録が置かれています。

システムコールと標準ライブラリの境目を知る意味

Linux のプログラムがファイルを開く、メモリを確保する、子プロセスを作るといった操作は、最終的に システムコール を通じてカーネルへ依頼されます。C の標準ライブラリはその上にバッファリングや書式付きの入出力といった便利な層を重ねていますが、この層があるために、書いたはずのデータがまだディスクに届いていない、シグナルを受けた瞬間に呼び出しが途中で戻る、といった挙動が見えにくくなります。open () が返す ファイルディスクリプタ という整数を起点に、書き込みが要求より短く終わる場合の扱い、fsync による同期、fork と exec によるプロセスの生成と置き換え、epoll による多数の接続の待ち受けを理解しておくと、ログが欠ける、子プロセスが回収されずに残る、高負荷で接続を捌けないといった障害の原因を自分で切り分けられるようになります。

C の基礎とカーネル 2.6 時代の前提、向く人と向かない人

コード例は C で書かれているため、ポインターと構造体を扱えること、コマンドラインでプログラムをコンパイルして動かせることが読み進める前提になります。刊行は 2008 年で、対応するカーネルは 2.6 です。2008 年時点の技術環境を前提とした本であり、その後のカーネルで加わった機能は範囲に含まれません。また版元が説明するとおり、カーネル内部の実装を学ぶ本ではないので、スケジューラーやデバイスドライバーの作りそのものを知りたい場合は目的が合いません。版元のページには刷ごとの正誤表が公開されているため、手元の本の刷数を奥付で確かめてから照らし合わせると安心です。Linux の操作やカーネルの仕組みを扱う本との使い分けは、Linux 本の選び方 で整理されています。

標準ライブラリの便利さに頼ってきたものの、障害の調査や性能の詰めで一段下の動きを説明できずに困った経験がある人にとって、ファイル、プロセス、メモリ、シグナル、時間という OS の基本の機能をプログラマの側から一通り押さえられる本書は、手元に置く価値のある一冊です。C の基礎を固めたうえで 2 章から順にコードを追えば、Linux の上で動くプログラムの動きを一段下の層から説明する手がかりが得られます。

言及した記事 (6 件)

この本に興味がある方におすすめ

関連する本

関連記事

関連用語

共有: