システムプログラミング入門

システムプログラミングニュウモン

実行しながら理解する Linux OS のしくみ

システムプログラミング入門の表紙
プログラミング
著者:
篠山 学(ササヤマ マナブ)
出版社:
森北出版
出版日:
2020年10月30日頃
ISBN:
9784627855519
在庫:
在庫あり
5(1 件 / 楽天ブックス)
初級者向け
プログラミング入門プログラミングLinuxC 言語プロセス管理メモリ管理ファイルシステムシステムプログラミングコンピュータサイエンスコマンドライン

なぜ注目されているか

総合814位 ↓ 3 ランクダウン 言及 1 件
言及数
1003位

書籍紹介

はじめてシステムプログラミングを学ぶ方向けのやさしいテキストです。

ディレクトリ構造と基本的なコマンドの説明から、プロセス管理、メモリ管理、ファイルシステムまで Linux OS のしくみをわかりやすく解説します。
C 言語を用いたサンプルプログラム・実行例を豊富に掲載し、手を動かしながら学ぶことができるようになっています。

動作のイメージがつかめるような平易な解説で、初学者への配慮が行き届いたコンパクトな 1 冊です。

第 1 章 C 言語のまとめ

第 2 章 Linux のディレクトリ構造とコマンド

第 3 章 プロセス

第 4 章 環境変数

第 5 章 プロセスの管理

第 6 章 ファイルシステム

第 7 章 シグナル

第 8 章 パイプ

第 9 章 共有メモリ

第 10 章 ソケット通信

第 11 章 スレッド

技書の森解説

C 言語のサンプルプログラムを実際に動かしながら、Linux OS がプログラムに何を提供しているのかを確かめていく入門書が『システムプログラミング入門』 (篠山学 著、森北出版、2020 年 10 月 30 日発売) です。副題は「実行しながら理解する Linux OS のしくみ」です。版元の紹介は「はじめてシステムプログラミングを学ぶ方向けのやさしいテキストです」と始まり、ディレクトリ構造と基本的なコマンドの説明から、プロセス管理、メモリ管理、ファイルシステムまでを解説し、C 言語を用いたサンプルプログラムと実行例を豊富に載せた本だと案内しています。hanmoto の著者紹介は刊行時点のもので、著者を香川高専准教授としています。

C 言語のまとめからスレッドまで、全 11 章の構成

目次は全 11 章です。第 1 章「C 言語のまとめ」と第 2 章「Linux のディレクトリ構造とコマンド」で準備を整えたあと、第 3 章「プロセス」、第 4 章「環境変数」、第 5 章「プロセスの管理」、第 6 章「ファイルシステム」、第 7 章「シグナル」、第 8 章「パイプ」、第 9 章「共有メモリ」、第 10 章「ソケット通信」、第 11 章「スレッド」と進みます。C 言語の要点を確認する章とコマンド操作の章が先に置かれ、OS の機能を使うプログラムの章はそのあとに続く並びです。版元の資料には節の一覧が載っていないため、各章の中でどの関数や仕組みを取り上げるかまでは確かめられません。

システムコールの境界で OS が引き受けていること

ふだん書くアプリケーションのプログラムは、ファイルを開く、画面に字を出す、別のプログラムを起動するといった仕事を、自分では直接こなしていません。CPU には特権の段階があり、ハードウェアに触れる操作はカーネルだけが実行できるため、プログラムは システムコール という決められた入口を通してカーネルに仕事を頼みます。システムプログラミングを学ぶ意味は、この入口の手前と向こう側で何が起きているかを、自分で書いたコードの実行結果として観察できるようになる点にあります。プログラム同士がデータを受け渡す方法にも性格の違いがあり、カーネルの中の一時的な領域を経由してバイト列を順に流す方式と、同じ物理メモリを複数のプログラムの空間に見せる方式とでは、速さと扱いの難しさが逆になります。通信相手が別の計算機へ移れば、同じ受け渡しの考え方がネットワーク越しに広がります。

共有と並行で生まれる不具合を理解する土台

メモリを共有して複数の処理を同時に進めると、処理の速さと引き換えに新しい種類の不具合を抱えます。複数の実行の流れが同じデータを同時に読み書きすると、実行の順序しだいで結果が変わる レースコンディション が起き、手元では再現しないのに本番でだけ値が壊れるといった調べにくい障害につながります。Web アプリケーションのワーカーの数やコンテナの中のプロセスの振る舞い、非同期に届く終了の通知の扱いなど、フレームワークの上で開発していても、原因をたどると OS の仕組みに行き着く問題は少なくありません。実行例を自分の手で確かめた経験があると、こうした障害を前にしたときに、どの層で何が起きているのかを順に切り分けられるようになります。

初学者向けのやさしいテキストとして選ぶ判断材料

版元はこの本を初学者に配慮したコンパクトな本と紹介しています。目次に並ぶのは Linux 上で利用者のプログラムから OS の機能を使う側の題材で、カーネルのソースコードを読む章や、OS の設計理論を体系的に扱う章はありません。カーネルの内部実装を追いたい人や、スケジューリングや仮想記憶の理論を教科書として学びたい人は、別の本を組み合わせる方が目的に合います。また 2020 年の刊行なので、ディストリビューションや開発環境の細部は刊行時点の環境が前提です。低レイヤーの学び方の全体像は OS / 低レイヤー本の選び方 にもまとめています。C 言語の基本を学び終え、次にプロセスやファイル、シグナル、プロセス間の通信、スレッドを実際のプログラムで動かして Linux の手触りをつかみたい学生や若手エンジニアにとって、本書は最初の 1 冊として取り組みやすい選択肢です。

言及した記事 (1 件)

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

関連する本

関連記事

関連用語

共有: