Software Design plusシリーズはじめてのOSコードリーディング
――UNIX V6で学ぶカーネルのしくみ
――
2013年1月8日紙版発売
2013年1月10日電子版発売
青柳隆宏 著
A5判/448ページ
定価3,520円(本体3,200円+税10%)
ISBN 978-4-7741-5464-0
書籍の概要
この本の概要
本書は,Sixth Edition UNIX(UNIX V6)を題材に,OSの全体像をひととおり解説します。
UNIX V6は1975年にベル研究所からリリースされたOSですが,近年のOSにも通じる,OSの基本的なアイディアが詰まっており,デバイスドライバも含めて約10,000行という,カーネルの全体を理解するのが難しくないボリュームに収まっています。
UNIX V6で基本的な動作が理解できていれば,新しいOSにたどっていくことも可能となります。
本書を通してカーネルのソースコードを読み解くことで,コンピュータシステムの全体像が理解できるようになるでしょう。
こんな方におすすめ
- 情報系学生
- 初級~中級ソフトウェアエンジニア
- コンピュータシステムの全体像を理解してみたい方
- OS,とくにカーネルのしくみを学びたい方
著者の一言
本書はUNIX V6カーネルの解説書です。UNIX V6は古いOSではありますが,カーネルのコード量が少なく,ロジックがシンプルなため,OS初学者の人が初めて読むカーネルのソースコードとしてはうってつけだと思います。カーネルはコンピュータシステムの中核を成すものだと言え,カーネルを理解すれば,コンピュータに対する造詣が深まり,技術力の意欲向上にもつながるでしょう。私もUNIX V6のカーネルを読んでから,コンピュータに対する理解が深まり,世界が広がった感覚を味わっています。そのような感覚をぜひ読者の皆様にも味わっていただきたく,本書を執筆しました。
目次
- はじめに
第I部 UNIX V6とは
第1章 UNIX V6の全体像
- 1.1 UNIX V6とは
- 1.2 UNIXの歴史
- 1.3 UNIX V6のカーネル
- 1.4 UNIX V6を構成するハードウェア
- 1.5 ソースコード
- 1.6 マニュアル
- 1.7 まとめ
第II部 プロセス
第2章 プロセス
- 2.1 プロセスの概要
- 2.2 proc構造体とuser構造体
- 2.3 プロセスに割り当てられるメモリ
- 2.4 まとめ
第3章 プロセスの制御
- 3.1 プロセスのライフサイクル
- 3.2 プロセスの生成
- 3.3 実行プロセスの切り替え
- 3.4 プログラムの実行
- 3.5 プロセスの終了
- 3.6 データ領域の拡張
- 3.7 メモリとスワップ領域の管理
- 3.8 まとめ
第4章 スワッピング
- 4.1 スワッピングとは
- 4.2 テキストセグメントの共有処理
- 4.3 まとめ
第III部 割り込み
第5章 割り込み・トラップ
- 5.1 割り込み・トラップとは
- 5.2 優先度とベクタ
- 5.3 割り込み・トラップの処理の流れ
- 5.4 クロック割り込みハンドラ
- 5.5 トラップハンドラ
- 5.6 システムコールの処理の流れ
- 5.7 まとめ
第6章 シグナル
- 6.1 シグナルとは
- 6.2 トレース
- 6.3 まとめ
第IV部 ブロックI/Oシステム
第7章 ブロックデバイスサブシステム
- 7.1 デバイスの基礎
- 7.2 ブロックデバイスサブシステム
- 7.3 バッファの初期化
- 7.4 バッファの取得と解放
- 7.5 読み込み
- 7.6 書き込み
- 7.7 RAW入出力
- 7.8 まとめ
第8章 ブロックデバイスドライバ
- 8.1 ブロックデバイスドライバとは
- 8.2 RK-11ディスクドライバ
- 8.3 まとめ
第V部 ファイルシステム
第9章 ファイルシステム
- 9.1 ファイルシステムとは
- 9.2 ブロックデバイスの領域
- 9.3 マウント
- 9.4 inodeの取得・解放
- 9.5 inodeからストレージ領域へのマッピング
- 9.6 ブロックデバイスのブロック割り当て
- 9.7 パス名からinodeへの変換
- 9.8 初期化と同期
- 9.9 まとめ
第10章 ファイル操作
- 10.1 ユーザプログラムのファイル操作
- 10.2 3つの構造体
- 10.3 ファイルの新規作成とオープン
- 10.4 ファイルの読み込み・書き込み
- 10.5 ファイルのシーク
- 10.6 ファイルのクローズ
- 10.7 ディレクトリの作成
- 10.8 ファイルのリンク
- 10.9 ファイルの削除
- 10.10 まとめ
第11章 パイプ
- 11.1 パイプとは
- 11.2 パイプ通信の開始
- 11.3 データのやりとり
- 11.4 パイプ通信の終了
- 11.5 パイプ通信を確立するまでの流れ
- 11.6 まとめ
第VI部 キャラクタI/Oシステム
第12章 キャラクタデバイス
- 12.1 キャラクタデバイスドライバ
- 12.2 LP11デバイスドライバ
- 12.3 まとめ
第13章 テレタイプ端末
- 13.1 テレタイプ端末とは
- 13.2 端末のオープン・クローズ
- 13.3 端末の設定
- 13.4 端末からの文字入力
- 13.5 入力されたデータの読み込み
- 13.6 端末への出力
- 13.7 まとめ
第VII部 システムの起動
第14章 システムの起動
- 14.1 起動の流れ
- 14.2 まとめ
付録 参考資料など
- A.1 参考文献・サイト
- A.2 pre K&R C
- あとがき
この本に関連する書籍
-
[試して理解]Linuxのしくみ ―実験と図解で学ぶOS、仮想マシン、コンテナの基礎知識【増補改訂版】
ITシステムやソフトウェアの基盤OSとして幅広く使われているLinux。エンジニアとしてLinuxに関する知識はいまや必須とも言えますが,あなたはそのしくみや動作を具体的...
-
作って理解するOS x86系コンピュータを動かす理論と実装
現在広く普及している,x86系CPU搭載のコンピュータ。 本書はOSの機能を実装しながら,その姿を明らかにしていきます。 第1部ではまず,ハードウェア,ソフトウェアの...
-
[試して理解]Linuxのしくみ ~実験と図解で学ぶOSとハードウェアの基礎知識
ITシステムやソフトウェアの開発,運用において,その基盤となるOSやハードウェアのしくみや動作を,具体的にイメージすることができるでしょうか。本書では,サーバ,...
-
Linuxエンジニア養成読本[仕事で使うための必須知識&ノウハウ満載!]
Linuxはいまや,ITシステムの基盤OS や開発環境,また最近ではAndroidのようなスマートフォン用OSとして等,あらゆるコンピュータシステムで用いられていると言っても過...
-
ソースコードリーディングから学ぶJavaの設計と実装 〜オープンデザインのすすめ〜
本書のテーマはオープンソースのすぐれたソースコードから設計パターンや手法を学びとることです。JUnit,Strutsなどのよく使われるオープンソースを題材に,そこに見出...