書籍をつつく45−30日でできる! OS自作入門。最高のOS実装本。2008-11-07 Fri 14:02
今日はOS本を紹介することに決めたピヨ♪OS関係の本で一番ボクが好きなのは・・・
30日でできる! OS自作入門 ピヨ♪もう惚れちゃったピヨね♪逸る気持ちを抑えて、いつもどおり目次から詳解するピヨ。 【目次】 30日でできる! OS自作入門 Chapter0 [ゼロ日目] 開発を始める前に 1 はじめに 2 OSってなんだろう? 3 OSの作り方のいろいろ 4 無知なら無知でいいじゃないか 5 OSを作るにはどうしたらいいの? 6 OSを作るときの苦労 7 1章以降を読むにあたって(重要!) 8 今後の話の流れ Chapter1 [一日目] PCの仕組みからアセンブラ入門まで 1 とにかくやるのだぁ 2 結局何をやったのだろうか? 3 アセンブラ初体験 4 もうちょっと書き直してみる Chapter2 [二日目] アセンブラ学習とMakefile入門 1 まずはテキストエディタの紹介 2 さて開発再開 3 ブートセクタだけを作るように整理 4 今後のためにMakefile導入 Chapter3 [三日目] 32ビットモード突入とC言語導入 1 さあ本当のIPLを作ろう 2 エラーになったらやり直そう 3 18セクタまで読んでみる 4 10シリンダ分を読み込んでみる 5 OS本体を書き始めてみる 6 ブートセクタからOS本体を実行させてみる 7 OS本体の動作を確認してみる 8 32ビットモードへの準備 9 ついにC言語導入へ 10 とにかくHLTしたい (hairb00) Chapter4 [四日目] C言語と画面表示の練習 1 C言語からメモリに書き込みたい (hairb01a) 2 しましま模様 (hairb01b) 3 ポインタに挑戦 (hairb01c) 4 ポインタの応用(1) (hairb01d) 5 ポインタの応用(2) (hairb01e) 6 色番号設定 (hairb01f) 7 四角形を描く (hairb01g) 8 今日の仕上げ (hairb01h) Chapter5 [五日目] 構造体と文字表示とGDT/IDT初期化 1 起動情報の受け取り (hairb02a) 2 構造体を使ってみる (hairb02b) 3 矢印表記を使ってみる (hairb02c) 4 とにかく文字を出したい (hairb02d) 5 フォントを増やしたい (hairb02e) 6 文字列を書きたい (hairb02f) 7 変数の値の表示 (hairb02g) 8 マウスカーソルも描いてみよう (hairb02h) 9 GDTとIDTを初期化しよう (hairb02i) Chapter6 [六日目] 分割コンパイルと割り込み処理 1 ソースファイル分割 (hairb03a) 2 Makefile整理 (hairb03b) 3 ヘッダファイル整備 (hairb03c) 4 やり残した説明 5 PIC初期化 (hairb03d) 6 割り込みハンドラ作成 (hairb03e) Chapter7 [七日目] FIFOとマウス制御 1 キーコードを取得しよう (hairb04a) 2 割り込み処理は手早く (hairb04b) 3 FIFOバッファを作る (hairb04c) 4 FIFOバッファを改良する (hairb04d) 5 FIFOバッファを整理する (hairb04e) 6 さあマウスだ (hairb04f) 7 マウスからのデータ受信 (hairb04g) Chapter8 [八日目] マウス制御と32ビットモード切り替え 1 マウスの解読(1) (hairb05a) 2 ちょっと整理 (hairb05b) 3 マウスの解読(2) (hairb05c) 4 動けマウス (hairb05d) 5 32ビットモードへの道 Chapter9 [九日目] メモリ管理 1 ソースの整理 (hairb06a) 2 メモリ容量チェック(1) (hairb06b) 3 メモリ容量チェック(2) (hairb06c) 4 メモリ管理に挑戦 (hairb06d) Chapter10 [十日目] 重ね合わせ処理 1 メモリ管理の続き (hairb07a) 2 重ね合わせ処理 (hairb07b) 3 重ね合わせ処理の高速化(1) (hairb07c) 4 重ね合わせ処理の高速化(2) (hairb07d) Chapter11 [十一日目] ついにウィンドウ 1 もっとマウス (hairb08a) 2 画面外サポート (hairb08b) 3 shtctlの指定省略 (hairb08c) 4 ウィンドウを出してみよう (hairb08d) 5 少し遊んでみる (hairb08e) 6 高速カウンタだぁ (hairb08f) 7 チラチラ解消(1) (hairb08g) 8 チラチラ解消(2) (hairb08h) Chapter12 [十二日目] タイマ-1 1 タイマを使おう (hairb09a) 2 時間をはかってみよう (hairb09b) 3 タイムアウト機能 (hairb09c) 4 複数のタイマを (hairb09d) 5 割り込み処理は短く(1) (hairb09e) 6 割り込み処理は短く(2) (hairb09f) 7 割り込み処理は短く(3) (hairb09g) Chapter13 [十三日目] タイマ-2 1 文字列表示を簡単に (hairb10a) 2 FIFOバッファを見直す(1) (hairb10b) 3 性能を測定してみる (hairb10c〜hairb10f) 4 FIFOバッファを見直す(2) (hairb10g) 5 割り込み処理は短く(4) (hairb10h) 6 番兵を使ってプログラムを短くしてみる (hairb10i) Chapter14 [十四日目] 高解像度・キー入力 1 また性能を測定してみる (hairb11a〜hairb11c) 2 高解像度にしよう(1) (hairb11d) 3 高解像度にしよう(2) (hairb11e) 4 キー入力(1) (hairb11f) 5 キー入力(2) (hairb11g) 6 おまけ(1) (hairb11h) 7 おまけ(2) (hairb11i) Chapter15 [十五日目] マルチタスク-1 1 タスクスイッチに挑戦 (hairb12a) 2 もっとタスクスイッチ (hairb12b) 3 簡単なマルチタスクをやってみる(1) (hairb12c) 4 簡単なマルチタスクをやってみる(2) (hairb12d) 5 スピードアップ (hairb12e) 6 スピード測定 (hairb12f) 7 もっとマルチタスク (hairb12g) Chapter16 [十六日目] マルチタスク-2 1 タスク管理の自動化 (hairb13a) 2 スリープしてみる (hairb13b) 3 ウィンドウを増やそう (hairb13c) 4 優先順位をつけよう(1) (hairb13d) 5 優先順位をつけよう(2) (hairb13e) Chapter17 [十七日目] コンソール 1 アイドルタスク (hairb14a) 2 コンソールを作ろう (hairb14b) 3 入力切り替えをやってみる (hairb14c) 4 文字入力をできるようにしてみる (hairb14d) 5 記号入力 (hairb14e) 6 大文字と小文字 (hairb14f) 7 Lockキー対応 (hairb14g) Chapter18 [十八日目] dirコマンド 1 カーソル点滅制御(1) (hairb15a) 2 カーソル点滅制御(2) (hairb15b) 3 Enterキーに対応 (hairb15c) 4 スクロールにも対応 (hairb15d) 5 memコマンド (hairb15e) 6 clsコマンド (hairb15f) 7 dirコマンド (hairb15g) Chapter19 [十九日目] アプリケーション 1 typeコマンド (hairb16a) 2 typeコマンド改良 (hairb16b) 3 FATに対応 (hairb16c) 4 ソースの整理 (hairb16d) 5 ついに初アプリ (hairb16e) Chapter20 [二十日目] API 1 プログラムの整理 (hairb17a) 2 一文字表示API(1) (hairb17b) 3 一文字表示API(2) (hairb17c) 4 アプリケーションの終了 (hairb17d) 5 OSのバージョンが変わっても変わらないAPI (hairb17e) 6 アプリケーション名を自由に (hairb17f) 7 レジスタに気をつけよう (hairb17g) 8 文字列表示API (hairb17h) Chapter21 [二十一日目] OSを守ろう 1 文字列表示APIを今度こそ (hairb18a) 2 アプリケーションをC言語で作ってみたい (hairb18b) 3 OSを守ろう(1) (hairb18c) 4 OSを守ろう(2) (hairb18d) 5 例外をサポートしよう (hairb18e) 6 OSを守ろう(3) (hairb18f) 7 OSを守ろう(4) (hairb18g) Chapter22 [二十二日目] C言語でアプリケーションを作ろう 1 OSを守ろう(5) (hairb19a) 2 バグ発見を手伝おう (hairb19b) 3 アプリの強制終了 (hairb19c) 4 C言語で文字列表示(1) (hairb19d) 5 C言語で文字列表示(2) (hairb19e) 6 ウィンドウを出そう (hairb19f) 7 ウィンドウに文字や四角を描こう (hairb19g) Chapter23 [二十三日目] グラフィックいろいろ 1 mallocを作ろう (hairb20a) 2 点を描く (hairb20b) 3 ウィンドウのリフレッシュ (hairb20c) 4 線を引く (hairb20d) 5 ウィンドウのクローズ (hairb20e) 6 キー入力のAPI (hairb20f) 7 キー入力で遊ぶ (hairb20g) 8 強制終了でウィンドウを閉じる (hairb20h) Chapter24 [二十四日目] ウィンドウ操作 1 ウィンドウの切り替え(1) (hairb21a) 2 ウィンドウの切り替え(2) (hairb21b) 3 ウィンドウの移動 (hairb21c) 4 ウィンドウをマウスで閉じる (hairb21d) 5 アプリケーションウィンドウも入力切り替え (hairb21e) 6 入力ウィンドウをマウスで切り替える (hairb21f) 7 タイマAPI (hairb21g) 8 タイマのキャンセル (hairb21h) Chapter25 [二十五日目] コンソールを増やそう 1 BEEPサウンド (hairb22a) 2 色を増やそう(1) (hairb22b) 3 色を増やそう(2) (hairb22c) 4 ウィンドウの初期位置 (hairb22d) 5 コンソールを増やそう(1) (hairb22e) 6 コンソールを増やそう(2) (hairb22f) 7 コンソールを増やそう(3) (hairb22g) 8 コンソールを増やそう(4) (hairb22h) 9 もっとOSらしく(1) (hairb22i) 10 もっとOSらしく(2) (hairb22j) Chapter26 [二十六日目] ウィンドウ移動の高速化 1 ウィンドウ移動を速く(1) (hairb23a) 2 ウィンドウ移動を速く(2) (hairb23b) 3 ウィンドウ移動を速く(3) (hairb23c) 4 ウィンドウ移動を速く(4) (hairb23d) 5 最初のコンソールを1つに (hairb23e) 6 コンソールをもっとたくさん (hairb23f) 7 コンソールを閉じる(1) (hairb23g) 8 コンソールを閉じる(2) (hairb23h) 9 startコマンド (hairb23i) 10 ncstコマンド (hairb23j) Chapter27 [二十七日目] LDTとライブラリ 1 まずはバグを直そう (hairb24a) 2 アプリ実行中でもコンソールを閉じたい (hairb24b) 3 アプリケーションを守ろう(1) (hairb24c) 4 アプリケーションを守ろう(2) (hairb24d) 5 アプリケーションのサイズ改善 (hairb24e) 6 ライブラリ (hairb24f) 7 make環境の整理 (hairb24g) Chapter28 [二十八日目] ファイルと日本語表示 1 alloca(1) (hairb25a) 2 alloca(2) (hairb25b) 3 ファイルAPI (hairb25c) 4 コマンドラインAPI (hairb25d) 5 日本語表示(1) (hairb25e) 6 日本語表示(2) (hairb25f) 7 日本語表示(3) (hairb25g) Chapter29 [二十九日目] 圧縮と簡単なアプリケーション 1 バグ修正 (hairb26a) 2 ファイル圧縮 (hairb26b) 3 標準関数 4 非矩形ウィンドウ (hairb26c) 5 bball (hairb26d) 6 インベーダゲーム (hairb26e) Chapter30 [三十日目] 高度なアプリケーション 1 コマンドライン計算機 (hairb27a) 2 テキストビューア (hairb27b) 3 MMLプレイヤ (hairb27c) 4 画像ビューア (hairb27d) 5 IPLの改良 (hairb27e) 6 CD-ROM起動 (hairb27f) Chapter31 [三十一日目] 開発を終えた後で 1 この先を作るのはみなさんです 2 OSの大きさについて 3 OS作りがうまくなるコツ 4 他の人に使ってもらうのなら 5 CD-ROM内のソフトウェアについて 6 オープンソースのすすめ 7 あとがき 8 お別れ(卒業式) 9 付録 コラム 1 データも「実行」できる? 機械語も「表示」できる 2 キャストを使えばpなんて使わなくてもいい? 3 やっぱりポインタが分からないよ〜 4 p[i]って配列? 5 構造体の簡単な説明 6 10進数での切り捨ては? 7 起動3秒後にcountを0にするわけ 8 こんな小さな改善に意味があるの? 9 returnしてはいけない? 10 キーボードの仕様? 11 FATの圧縮 12 これでOS自作入門だなんてケシカラン! 目次を見ても派手さが無くて、この本の凄さが伝わりにくいと思うけど、この本は 最高のOS実装本ピヨッ♪OSの本は何冊もあって、ボクも結構買いそろえているけど、 この本ほど自分で実装という点に特化した本はないピヨ。なんと、ウィンドウシステムを有する32bitマルチタスクOSの実装法を書いているピヨ♪技術レベル的に言えば、他の本の方が高いけども、それらの本は自分で作るという点が抜けているピヨ。Linuxカーネルを読む手助けとなる本や、OSのアルゴリズムなどを書いてある本は数あれど、それらの本を読んで自分の手で実装できる人は稀だと思うピヨ。一例を挙げると、ブートローダをフルスクラッチできるようになる本があるだろうか?実際にその場で動かして試せる方法を書いてある本があるだろうか・・・それらの条件を全てかねそろえているのがこの本なんだ。もう最高ー♪ でも一つだけ気になる点があったピヨ。それはファイルシステムの実装が書いていなかった点ピヨ。これほどいい書籍なのに、ファイルを書き込む術を書いていないのはいただけないなー。続編を強く希望するピヨ♪とはいえ、安くてなおかついい本はこの本だけだからまだ買っていない人は買うべし♪この本のOSを実装すれば、プログラミング技術の地力が上がること間違いなしピヨ。 |
この記事のコメント モナー本読みました?
個人的にはこちらよりもモナー本の方がプライオリティ高いのでインドリさんが既に読んでらしたら比較のために感想を聞いてみたいなと。 >モナー本読みました?
しまった!まだ読んでいないピヨ。 あおいたんが気に入っているみたいだから、期待できそうだね。 今度買うピヨ。
2008-11-07 Fri 15:22 | URL | インドリ #-[ 内容変更]
いえ、読んで気に入ってるわけではなくて、どちらも未読なのでどちらを先に読むかの判断材料が欲しかったのです。
モナー本は今古本屋さんに注文したところ♪
来月になったら感想をブログにUPしようと思っているピヨ♪ だけど、今モナー本手に入りにくいから要注意。 目次から判断するに、モナー本はMonaOSの内部構造の解説だと思うピヨ。 一方OS自作入門の方は書籍専用のGUIOSを作るというものピヨ。 どっちがいいかは、モナー本読んでいないからなんともいえないけど、 どちらかというと入門の方が実装よりで、モナーの方は詳解Linuxみたいなタイプだと思うピヨ♪
2008-11-08 Sat 17:12 | URL | インドリ #-[ 内容変更]
入手難易度から言えばモナー本買った方がいいかも。
ただ、OS自作入門の方も何時廃刊になるか分からないから注意してね♪
2008-11-08 Sat 17:16 | URL | インドリ #-[ 内容変更]
|
コメントの投稿 |
||
|
|
||
| 管理者だけに閲覧 | ||
|
|
||
この記事のトラックバック |
|
| 無差別に技術をついばむ鳥 |
|