「30日でできる!OS自作入門」
■ このスレッドは過去ログ倉庫に格納されています
プログラミングの基礎からはじめて、
30日後にはウィンドウシステムを有する32bitマルチタスクOSを
フルスクラッチで作り上げるという入門書。
ビギナーでも無理なく作成できるようPCの仕組み・アセンブラ・Cの解説から始まり、
試行錯誤を繰り返しながらアルゴリズムを学びつつ、
たのしく自由な雰囲気でOSをゼロから構築していくという、
他に類を見ない手法による、
趣味と実用と学習を兼ね備えたOS作成の入門書です。 >>673
それこそ、30日でできる応用編とかもあってもいいような気がするけど、
重版出たというのが本当なら、続編みたいな話ってなかったのかな? >>676
そういうのは各自でやれという方針だったような気がするでよ
>>677
「入門」ってタイトルなんだから実践とか応用本があるのがセオリーじゃない?
まあ>>673の内容こそがむしろ実践本じゃないかって気がしなくはないけど。 挫折者向けにして、「あなたでもできる!OS自作(再)入門」
とかどうだろうか? この本の内容からさらに応用ってなったらもうほとんど
ソフトウェアのお話じゃん。
ルールなんか無いんだ。自由に作れよ。 USB!USB!
…まあDVDでもいいけど今更だろうし。 本気でOS作りたい奴は自分で勉強する。これ大前提。
それでもいざ実際に作ろうと実践的な事となると色々詰まるところが出てくる。
むしろそういう時のための本でしょこれ。
本当の初心者ならどう筋道つけて勉強していけばいいかもわからない
OS入門は最低限どういう物が必要か書いてあるからそこから自分で勉強するとっかかりになる。
右も左もわからない状態だとそこから進むのは難しいが
不明な点がクリアになっていれば勉強もはかどるというもの。
そもそも一冊の本を読んだだけで全く新しい設計の自作OSが一から完璧に出来上がるなんてのは無理。
それはこのOS入門に限った話なんかでは無くてモダンオペレーティングだろうが何だろうが同じ話。
あくまで実装例というレシピを見せる事で何が必要なのか自分で考えられるようにするための本でしょ。
この本の画期的なところは、理論の説明は最低限必要なものにとどめているけれど
とりあえずこういう動く実装例があるから参考にしてくれ。と提示している事と
初心者でも扱えるツールの整備と使い方の解説までやっているところ。
gccとかgasとかだけ手にしてOSを作るための使い方がわからず(OSアプリしか作れず)途方に暮れた人は
実際にOSを作ってみようと思ったような人なら山ほど居るのではないか?
実際にOSを作ろうと思ってみた事のある人ならわかるだろうが、そういう途方にくれそうなところが
ことごとく整備されてる(実際のOSの設計はあくまで自分でやるもの。自作OSなんだから当然。それ以外の部分。)
というのがいかにありがたく、またその領域に踏み込んだ本が今まで無かったか痛感するはず。
逆に言えば、OSの仕組みを理解したい「だけ」ならこの本は向かない。あくまで「自作の実践」を解説した本だから。 自分で勉強できる人が読むような本には見えないけどなぁ >そういう途方にくれそうなところがことごとく整備されてる
ことごとくは言い過ぎなんじゃない?
たとえば、設計はとりあえず既存OSのまま、つまりクローンとか別CPUへの移植を考える場合だと、
この本読んだだけじゃ見てくれの模倣程度しかできないんじゃない?
誰かちゃんと作り込めた人居るのかな?
中身はまさにはりぼてそのものなら、BASICでつくったなんちゃってOSの方が全然凄いわけで。 >>685
だから自分で勉強できるようにとっかかりを得る本ってこと。 >>686
とりあえずでも一通り全部お膳立てを揃えたっていう入門書自体が今までに無かったからね。 一通りというか最低限でレガシーなので、VM用イメージ自作入門って感じ? OS側のソースコードは最低限だけど
開発環境のお膳立てという意味では一応一通りちゃんとそろってるよ。
アセンブラとCで作る限りにおいてはもっと本格的な物だって同じツールで作れる。
(そりゃどんなマシンでも開発できるとかそういう万能性は無いけどね) >>690
「はじめて読む486」ってタイトルであれば、むしろ本物より評価できそうだね。
逆に言えば、独自ツール故にそのサンプル解説から抜けきらなかったということだろうか? えー、だって本物は初心者がみたって途方にくれるだけだと思うんだけどなぁ。 プログラムのプの字も知らないような奴を対象にした本じゃないし。
何らかのCPUのアセンブリ言語が扱える人間が対象と前書きに明記されてる。 >>694
だからこそ、ど素人に曲がりなりにも特権命令使わせてるのが評価できるってことさ。 はじめて読む486は、はじめて読む8086を読んだ事が前提となってるっぽいからなあ
帯なり表紙なりにその事をちゃんと買いとけよ!とは言いたくなるが。
でも8086と486を上下巻のつもりで買い揃えさえすれば入門者にも無問題だとは思う。
486のサンプルコードをCでなくアセンブラでかけよ!とは言いたいが。 ていうか『はじめて読む486』は、他の『はじめて読む(型番)』と全く違う内容なのに、
まぎらわしいのが問題。 >>696
>486のサンプルコードをCでなくアセンブラでかけよ!
いや、C でかけるところは C で記述し、どうしても難しいところは、アセンブラで書く、という王道をいっているとおもうのですが。 それは「普通のアプリケーションプログラム」の時の話でしょ。
CPUの内部を直接いじるのに、それには向かない言語で説明されても困る。 OSの場合も同じ。
本当にCPUの内部を直接いじる必要がある所がどこかわからないのは三流。 一流の人間が入門書なんか読むかよ!
まだ一流になれないから入門書を読む訳で。
入門者に分かりやすく書かんでどうする。 だから、『はじめて読む486』は、コンピュータの入門書でも、486を教材として、
マイクロプロセッサに入門する本でもなくて、リアルモードでの機械語プログラミングや
C言語や、OSの基本をマスターしてる人に向けた、486のプロテクトモードを
解説する本なんだって。
だから、ただ一つ欠点があるとすれば >>697 にある通り。 >>703
リアルモードに熟達していない人には読めない、という意味で「入門書ではない。」
いや、「プロテクトモードの入門書」であることは否定しませんが。
あと蛇足ですがアラインメントを para にしないと動かなかった経験があります。 >>703 もしかして他の「はじめて読む」を知らんのか? タイトルからしてこれ以上分かりやすいのは無いくらい
入門書だーーー!!!って書いてあるのに
どうやったら入門書では無いという解釈が出てくるのやら
もしかしてCPU知識以外OS作りのスキルを全部備えた人しか
決してこの本を手に取る事が無い、なんて思ってる?
一言言わせてもらうと「そんな訳ないだろ。」 >>707
「はじめて読む486」のことだったら、あー、>>704。
いや実際俺も昔々i8086のコードが何とか読める程度の知識しかない状態で
はじめて読む486を読みふけってたんだが
どう見ても入門書でしょ。 >>709
そうですねえ。どういう点が入門書だ、と感じましたか? どういう点がも何も
i80486の(実質i80386の)新機能について当時の自分程度のスキルの人間にも分かりやすく噛み砕いて解説されてた点
としか言いようがない
サンプルコードがCなのはともかくとして
機能の概念説明みたいなのは間違いなく初心者向けの良く噛み砕かれた説明なのだが… 日本語の問題でしょ?
はじめて読む○○だから、読者のはじめて読むCPUが486の場合に対応できなければ看板倒れ。
はじめて「の」○○だったら、x86はおろか386まで既知の場合だけが対象でもおk。 そもそも「はじめて読む486」ってのは
それを読んだ人がみんなこぞってOSを作り始めるっていう趣旨の本って訳じゃないでしょ。
単に新CPU(出版当時)の新機能を理解したいだけって人だって大勢居たわけで。
さらに言うと、386や486が出てきた当時はまだDOSが全盛期で
386の機能をフルに使ったOSなんか全く普及していなかった。
むしろMS-DOSにおけるEMM386みたいな「386/486の機能を部分的につまみ食いする」
使い方の方が 圧 倒 的 に 主流だった。
仮想86機構「だけ」使いたいとかページング「だけ」使いたいとか
そういう人が大勢居た時代にあの本は発行されている。
決して「本格OSを今から作る!人のみを対象にした本」では無かった。 DOSが全盛期だったから、保護機能以外のことはたいていわかってる、という
人が主な対象の本だったよね、という話だと思うのだけど。 >>713
出版当時(1994年) の状況を思い起こすと、プロテクトモードの解説を意図した内容に食らいつく層は、
>本格OSを今から作る!人
にかなり近似していると考えざるを得ない。
ちなみに Windows3.1 は 1993年、Windows95 は 1995年もおわり近くだったか。
当時はいろんな意味で熱かった‥‥‥。
何の根拠も示さずに「考えざるを得ない」とか言われても >>716
昔話だ。根拠を求めるなんて野暮というもの。
それともまだ生まれてなかったのか? 当時は仮想86使って市販ゲームのCG抜いたり
一部ハードをエミュレーションしたり
そういう野望を持ってた人の方が多かったと思うがね
そんなに早くから386の機能を活かしたOSをフルスクラッチで作る運動があったら
自作OS界隈がこんなに細々としたものである訳が無いだろうに
そもそも自作OSが一定の盛り上がりを見せる様になったきっかけは
世の中がWindows一色になった事に危機感や反感を持った人が多く現れた事だって理解してる?
386登場から世の中がWindows一色に染まるまで何年かかったと思ってる?
DOS全盛時代はまだTownsOSとかHuman68Kとかがそれなりに身近にあったし
DOS環境自体PC-98/Towns/PC-ATと複数存在したので
Wintelマシン(PC-98/Townsも含むか)上でWindows以外のOSを作らないとパソコン環境が画一化されるという
切羽詰まった危機感なんてまだ(あまり)無かったんだよ? 思えばFreeBSD/LinuxにはじまるPC-Unix環境が盛んになったのも
そういう種類のWindowsへの危機感や反感と決して無縁では無かったように思う
もちろんパソコンがUnix系OSを実用するに足る性能を備えてきたという要素もあるが >>720
FreeBSD が最初に日本でひろまったのは、1.1.5.1 のときだ。その頃は Windows 3.1 がメインであった。
wintel 体制が固まった、とはいえなかったが、windows3.1 はそれなりに市場に受け入れられていた気もする。
私も Programing Windows を買ったようで、手元に残っている。 いわゆるWindowsブームはWindows 3.1の頃からだったな。
Windows 95は更に爆発的に売れたが、Windows 3.1が世間に知られていたからこそという感じだった。 >>715
情報ハイウェイとか叫ばれて、BSDが完全フリー化して、
UNIX陣営も東西統一で終わりが始まった頃だったのか。
今考えると国内(アマチュア)のブームってちょうど10年遅れてたんだな。 なんかDOSみたいなデバイスドライバ拡張用の規格ってないの? どんなOSでもデバドラフレームワークはあるわけだけど?
ただDOSと違って、普通のプログラムは保護モードで動くのに対して、
デバドラは特権モードで動くという違いがあるので、その差を意識して
プログラミングをしなきゃならない。 規格をサポートしているどのOSでも使えるドライバはできないか?って事でしょ。 MS-DOS にそんなオープンな規格があったっけ? MS-DOS用のドライバが使えないと、そもそもDOSとして認めてもらえないんじゃないか? DOS用ドライバっていわゆるMS-DOSのデファクトスタンダードって奴でしょ。
他のDOS系OSはそれに倣ってるということで。
OSの歴史的にはDR-DOSの方が本家だったりするけど、そこはそれ。 >>732
本家つーてもパクられたのをパクリ返しただけだからなあ
中日電工さんの連載見てると、CP/Mの移植だけで30回以上費やしてるよな。
マイコン黎明期にMZ互換機を本当に作って売っちゃったプロでさえああなんだから
(まあ結果見たらすぐ理由思い出して実際には大した時間は掛かってないんだろうけど)
30日でもうネタ切れというのはなんか不思議だな。 そりゃ「一から新しいOSを新規に」「最低限必要な技能を学ぶ為だけに」「実用性や問題点の考慮をせずに」作るのと
「既にある物に合わせて」「実用になるための全ての機能を」作るのじゃ
それ自体かなり状況が異なる話だからね
細かい問題点・改良すべき点を全部挙げ出したらそれこそ幾らでもきりなく出てくるだろうけど
それは「OS自作入門」のテーマに合致したもので無ければ面白い話題でも無い
だからそれらは本の内容をマスターした上で別途個々人で学んで欲しいという事で入門本には書かなかったのでは。 その「個々人で学ぶ」ための取っ掛かりが全く書いてない罠
>それは「OS自作入門」のテーマに合致したもので無ければ面白い話題でも無い
結局この考えに縛られてしまう事こそが、作られたOSがまさにハリボテで完成品化してしまって
どれもあまり発展しない原因になってないかなあ?
でも、PCでの自作とは何かと考えれば、そう切り捨てたものでもないと思うんだよな。
まだまだ使える!OS自作入門 みたいな。 とりあえずファイルシステムを何とかするってのは
あの本読み終えたらまず誰でも考えそうなテーマだと思うけど?
ディスクドライブのデバイスドライバ周りを(その仕組み自体の設計も含めて)整備して
ファイルシステムから利用できるようにし、実用的なファイルシステムにするという目標がね。 そもそもOSを作りたいなんて人は、その多くが
「こんなOSを作りたい」っていうイメージが(漠然としたものでも)何かしらあるんだろうから
最低限必要な技能を楽しく学ぼうという趣旨の本でそこまでやる必要は無いのかもしれない。
本当にOS作りたくて本読んだような人ならきっと何かしら自分のOSに盛り込みたい事を既に持ってるでしょ。 ログハウスを作る本としては、一夜城の工期を動かせない以上、大幅な設備強化は難しいとは思う。
でも、ビューアフター的な添削であれば、別に30日にこだわらなくて別工事でいい訳だし、
あくまで読者の目的OSでなくその実現への取っ掛かりのヒントにすぎないので、
そういうのも(大工の)入門書や手引きの類といえるんじゃないだろうか?
コンセプト別に紹介して、主にここがいいけどちょっと惜しいなと思うような部分について、
自分ならこうするみたいな検討解説が実用パッチ付きでふんだんに盛り込まれれば
買う人結構居ないかな? アセンブラが全然わからん
2月までには完成させたい 「はじめて読む8086」と「はじめて読む486」は必読書。
まず8086の方から読むべし。 Kの説明が下手すぎるだろ
検索しまくってなんとかようやく理解できるけど、もう少しわかりやすくしてほしいぜ だから漬物石の代わりくらいにしかならんと
最初から言っとるでないかい 逆に考えると不親切な説明だから調べまくらざるを得んので知識はつく 説明下手って言うけどさあ
あれ以上うまく説明してる本ってあったっけ? 「はじめて読む486」の、文章で足りないところはコードを示すことできっちり説明できているところを買います。 >>749
そりゃどんな良書でも読みこなす努力をしないあんたにとっちゃそうだろうな。
でも皆にとってそうじゃないんだ、押し付けんな。 自分で作った気になれるだけの本なんだよな 惜しい
実用に向けていろいろ拡張していく上で嵌りそうな注意点とかまとめてくれればいいのにな
まあこのハリボテを実用で使わない事が一番か
まだopendosやfreedosのほうがしっかりしてるしなあ
試験管の中で家が造れたよ
でも人が住むサイズを作るにはまだまだ課題が山積で厳しいよ
って感じ 16bitのDOSと
32bitのOSの解説本を比べても仕方あんめぇ。 32ビットってプログラムしづらいんだなー
まぁ中身の勉強にはなった 誰も使ってなくてx86_64で廃止されたような機能までべたべたに依存してるせいじゃないか?
(セグメント機構、タスク機能とか)
しかもオレオレツールチェインまで持ち出してるからさらに使いづらい
本自体見たことなくて派生OSのソースを見ただけの印象だけど ちゃんとmmu付いてるんだしプロテクトモードで動かせばいいのにね
組み込み本のほうがブートローダとか作って面白い オレ今10日目で行き詰まってるけど、ググ先生に聞いたり自分なりの解釈で閃いたり、わりと楽しみながらゆーっくり進めてるよ
プログラム初心者だから自分で組んだり出来ないけど、C言語読むための勉強って割り切って読んでるからそれなりに楽しい これでc言語は病めといたほうが
アセンブラでcpuやデバイスを直接制御すべき
あとアプリケーションレベルとosレベルをごっちゃにしない様にな
ぶっちゃけ普通のプログラマならjavaアプリの本で十分だったりするよ 説明が下手すぎていらいらする
特に10日目の重ねあわせのところ
図で洗わせてくれてるけど的外れな図で余計わからんくなる 画面まわりはゲーム開発系の方がわかりやすいと思う
やっとることは同じだ そうなんですか…
自分で図を書いたりしてなんとか理解しようとしてるんですけど、難しすぎて…
画面周りでオススメの書籍とかありますか? 駄目だ…10日目の高速化(2)が全くわからん…
bx0〜by1までの値がマイナス値になる状況が全然わかんねーよ! ゲームはdirectx周りのクセを掴むのがなあ
直接ハード叩く所は、保護機能のないぽんこつosと同じなんだけど
逆に言うと保護機能付いてるosでもgpu乗っ取りぐらいは楽勝で出来たりするんだけどねw >>754
そこまででも手取り足取り教えてくれる本自体が、この本以前には無かったからな。
紙面には限りがあるんだから一冊の本に全てを望むのは酷というものだろう。
という事で、その辺りの事を書いた続きの本をあんたが書けば、大層喜ばれると思うよ。 手取り足取りで飛びついてみたけど、欲しいものはこれじゃないんだなって寂しいものを感じた読者は多いと思うよ
dosぐらいを組み込むのが手軽だなunixはめんどい そんな貴方に技術評論社「はじめてのOSコードリーディング」。
UNIX V6のソース解説本。
UNIX V6なんでちゃんとUnix系で、基本的な機能も大体は揃ってるし、それでもコード規模も一万行程度とお手頃。
難点は、古いコードなんでC言語の書式が古い(K&Rよりさらに前)という事だが
一応その点についての説明もされている。 pdpが無いと楽しめないレベルなんじゃ
最近achiのハードディスクからの起動に嵌っている
bios経由の割り込み19のアクセスでも良いけど抜き差しまでは面倒見てくれん
つーかユニックスなんて何年前だよ
骨董すぎるわ エミュでも当時の何倍もの速度で走るぞw
当時のメインメモリは今のCPUキャッシュ、
当時のディスクが今のメモリぐらいの容量だしなw ■ このスレッドは過去ログ倉庫に格納されています