ノーローンのサイトです。
言わ 債権 広島 苦しい 申込 受け 使いこなす 実際 探す 暴力 かかり 受け入れ 表現 負担 診断 期日 さっそく 指針 仕事 近づき ページビューランキング 一部 街角 小さい 阪神 従って 日賦 ページ いただけ いっさい

試しとは?/ ノーローン

[ 189] 本当に30日でOSが出来上がるのかを試してみるBlog
[引用サイト]  http://d.hatena.ne.jp/hariboteOS/

30日目は、最終的にどんなアプリケーションが作れるのかをとことん追求した内容となっている。まずは、コマンドライン上で動作する計算機、次にテキストビューアー、そして音楽プレーヤー、画像ビューアー、と続く。テキストエディタやお絵かきソフトではなく、あくまで「ビューアー」となっているのは、はりぼてOSにファイル書き込みのAPIが存在しないからだ。ここは、しょうがない。そして、最後に、IPLの改良と、CD-ROMからの起動に対応するためのツールが紹介されており、本書は無事、終了となる。
そんなこんなで、長かったような短かったような1ヶ月が過ぎ去りました。ついに本書を読み終えることができました。はりぼてOSにはまだまだ不十分な機能が山のようにあります。だから31日目では、それらの機能を今度はあなたたち自身で改良していってください、といった感じになっています。また、これからOS作りをやろうと考えている人への助言や、オープンソースの話などが盛り込まれています。
また、あとがきには「中学生でも読めるようにしようと全力をつくした」とあります。実際、本当に中学生が読めるかどうかは分かりませんが、少なくとも内容がとても分かりやすいことは事実です。
さて、それで結局「この本で本当に30日でOSが作れるか?」だが、最初は、「作れるわけねーだろー、このやろ〜」という感じだったが、いまでは、もしかしたら、いけるかも分からんですたい、と思っている。まぁ、残念ながら、学生じゃないならば、30日では厳しい。ちなみに俺は1日だいたい3時間〜4時間くらい本書を理解するのに使っていたが、多分実質40日くらいかかっている気がする。でも、学生ならば(特に大学生なら)1日4時間くらい余裕で取れるはずなので、モウマンタイだ! 学生諸君は30日使って大いにOS作成を楽しんでくれ!! 最近の中高生は妙に賢い気がするので、その能力をこっちに使っちゃえば、OS作りで一躍有名人の仲間入りだ(ホントか?)。社会人は残念だ。30日じゃ困難を極めるから、40日とか50日とか100日とか、そのくらいを目安に読み進めた方が良いと思う。
さて、というわけで、0日目〜31日目までの全32日分をすべて読み終えたこととなったが、実は本音を言うと、途中何度かあきらめそうにもなったし、全然わからねーと投げやりにもなった。楽しかったけど、同時に辛かったことも事実だ。しかし、なんとかかんとか、ここまでこぎつけることができた。本当に充実した時間だった。
だから、俺は今後もOSを作っていきます。ただ、もうこれまでのように詳細に更新、報告することはないです。多分本当に30日でOSが出来上がるのかを試してみるページの一番下のところにひっそりと公開していくだろうと思う。
まずは、一番最初に、この本の著者である川合秀実氏に感謝したい! ありがとう。あなたが書いたこの本で、少なからず、俺のこの1ヶ月は充実したものとなった。そして、この本をきっかけにOS作りの楽しさってのがほんの少しでも分かったことがよかった。心から、本当に心からありがとうと言いたい。
次に、出版社、毎日コミュニケーションズに感謝! こんなナイスな本を出版するなんて、本当に良い仕事してますぜ、ダンナ。あんまり出版社とか知らないんだけど、これからもこういうナイスな本をどんどん出してください。期待〜。
そして、最後に、このBlogを今日まで読んでくださった皆様に感謝! ありがとう。最初は1日数十人くらい見てもらえればいいかな、という感じで始めたこのBlogですが、終わってみれば、5万ヒット。たくさんの応援もいただきました。たくさんのサイトで紹介もしていただきました。本当にありがとうございました。
さて、というわけで、いよいよを持って終わりです。俺がこのBlogを更新することも、多分もうないです。もともと本書を読むためだけに作ったBlogだから読み終えた今、もう役割は終わっています。ただ、今後、この本を買おうと思っている人や、まだ読み進めている人のために、このBlogはずっと残しておこうと思います。少なからず、参考になると思うから。
今日のメインディッシュは間違いなくインベーダーゲームだ。これ、間違いないです。というのも、実は、本屋でこの本を買った時の一番の決め手となったのが、実はこれなんです。「30日でOS? 最後には、いったいどんなものができるんだろ〜」と、なんとなく本書をパラパラとめくっていると、な、な、な、なんと、インベーダーゲームが動いているじゃーあーりませんかー。うっそーーん。マジ? これマジ? ということで、少なくともインベーダーゲームが動くほどのOSを本書によって作ることが可能であるというイメージを植えつけさせる、ある種の商業戦略! そして、それに見事ハマってしまった俺(ぉぃ)。出版社、毎日コミュニケーションズ、恐るべし。
が、しかし、俺のようなシロウトはこれでまんまと騙せても、ある程度の玄人ともなると「インベーダー? そんなものでは俺が動かん!!」となるわけだ。が、しかし、そんな彼らに用意されたのが、OS圧縮技術tek! 玄人には圧縮という高レベルな話題を提供しつつ、素人にはインベーダーでポップなアピール! このあらゆる読者層に購買意欲を沸き立たせるための戦略。神! 出版社、毎日コミュニケーションズ、恐るべし。
そして、今日は29日目。えっと、俺はというと…、終始インベーダーいじってました(ハマってんじゃん!!)。だって、圧縮とか全然分からんし、そういうムツカシイことはあとですよ。とりあえず、俺はインベーダーで遊ぶ!! ということで、インベーダーのソースコードをいろいろといじりながら、今日は実に充実した一日を過ごしました(OS作ってないじゃーん)。
それにしても、これだけのものが作れれば、もう結構なアプリケーションは作れる気がする。なんか、あんまり気が付かないんだけど、はりぼてOSもそれなりのものになったなぁ…と最近少し感傷にひたり気味。と、まぁ、思い出話などなどは明日のエンディングにとっておいて。とりあえず今日はここまで。
明日はついに30日目。内容としては、基本的にアプリを作るだけなので、そんな込み入った内容にはならないと予想。そして、その後エピローグにて、31日目を読み、このBlogの実質的なまとめとして、その役割を終えたいと思う。
スタートしてから28日目にして、ついにファイルの操作APIを追加した。そして、ついに日本語表示を実現した。ただ、日本語表示はいいとしてもファイルに関してはもう少し突っ込んだ内容が欲しかった。本書を読み始めて、こういう風に思ったことは一度も無いから、多分最初で最後だと思うんだが、俺としては、ぜひともファイルの書き込みについてもやってほしかったのだ。
それで、このはりぼてOSではディスクへの書き込みを実装していないから、つまりはファイル書き込みのAPIを用意することができない。だから、今回もそのAPIを用意してはいない。だが、これはぜひとも用意したかった。そのために紙面を割いて欲しかった。かといって、じゃあ変わりにどの章を省くのだ? といわれると、どの章も重要そうでなかなか省けないのだが、でも、やっぱ、ファイル読み込みがあるなら、ファイル書き込みが欲しいじゃん。これら2つがそろって初めてファイルAPIって感じがするじゃん(俺はするんだ)。
というわけで、残念ながら、はりぼてOSではファイル読み込みAPIのみの実装となった。あっ、もちろんファイルオープン、ファイルクローズ、そしてファイルポインタ移動辺りのAPIは実装しているぞ。ただ、この辺りはどうしても悔しいから誰か28日目の続きを書いてくれ。「ファイル書き込みも実装する方法」って感じでよろしくだ(他力本願〜)。
それで、ファイル操作がアプリでできるようになれば、アプリとしてtypeコマンドが作れるようになるわけだ。なので、これまでOS内部に実装していたtypeコマンドは排除だ! 変わりにアプリとしてのtypeコマンドを作成し、これを今後使っていくことでモウマンタイなのだ。ささいなことだが、確実な進歩だ。
そして、今日2番目のメインディッシュ、日本語表示となる。これは、申し訳ないんだけども、予想以上にメンドクサイ(笑)。漢字多っ。第○水準とかややこしっ。区画とか意味分からん。なんかあんまりOSとは関係のないところで戦っている気がするし、この辺り実はあんまり興味ないしで、モ、モチベーションが…。こ、こんなところで日本語の壁が〜(ニホンゴ、ムツカシイデス)。
というわけで、最近は特に周りがFF12の話をするたびに、このやろ〜、となる俺ですが、俺が守っているのはダルマスカではなく、はりぼてアプリなのです(ダルマスカなんて滅びてしまえ!!)。それで、LDTというアプリを守るシステムがどうやらあるらしい。それでGDT(グローバルディスクリプターテーブル)はグローバルなので、全部のタスクから使えるセグメント設定であったわけだが、このLDT(ローカルディスクリプターテーブル)はローカル、つまりある特定のタスクでしか使用できないセグメント設定であるわけだ。そして、これをアプリに適応させることで、アプリを守ることができるのだ。そして、グローバルとローカルという違いしかないので、基本的な設定方法は同じなのだ。
さらに、今日は、ライブラリやmake環境の整理などもやっている。読み進めている分には、ふむふむ、という感じなのだが、この内容をこの27日目で扱うところが本書の特徴だ。「必要になったら説明する」という著者の熱い想いがこめられている。また、明日の28日目まではOSとしての機能強化をあてるらしいが、29日目と30日目はアプリケーションの作成に終始するらしい。つまり純粋なOS作りという意味では明日が最後なのだろう。本当に、本書も、そしてこのBlogも、終わりへと近づいている…(うれしいような切ないような)。
ちなみに、まだ全然最初のほう(本書でいうと6日目くらい?)だからあまり期待はしないように(しないか(笑))。ただ、はりぼてOSとはメモリマップ自体からして違うし、ソースコードもほとんど書き換えているので、まぁオリジナルOSといってもいいかもしれない。実は30日目終了までにこれをある程度カタチにしたいとは思っているのだが、まぁいろいろあって、微妙なとこだ。ただ、本書を読み終えて、「OSができたー」となっても、CD-ROMに付属しているOSをコンパイルしただけじゃ、ちょとかっこ悪いかなぁと思って、自分で1から作り始めたのだ。
次に複数のコンソールを出したり、また、コンソール自体を消したりする処理などを追加したのだが、個人的にはこれはもっと早くに扱って欲しかった内容だった。だって、たくさんの真っ黒い画面があって、それらに読みきれないほどの文字が、だーーーーって流れているのが、なんかハッカーって感じでカッコイイ。俺の中では「真っ黒い画面=ハッカー」だから、もう真っ黒い画面がいっぱいあったらスーパーハッカー。dirばっかり入力しててもスーパーハッカー。そもそもハッカーって悪い人って意味じゃないみたいだけど、そんなんどうでもよくて、真っ黒い画面はスーパーハッカー(って、技術者のかざかみにも置けんヤツだなぁ)。何はともあれたくさんの真っ黒い画面が俺は欲しいんだ。それで、たくさんの真っ黒い画面を出すんなら、当然消すこともできたい。だからそれらも実装!
この辺りになってくると、もう完全にOSとしての機能を強化することに集中している感じだ。もうCPUだのPICだの16ビットだの32ビットだのというワケワカラン世界とは別世界だ。ある意味、普通にプログラミングを楽しむことができる期間だといえる。
実は風邪をおもいっきりぶり返してしまいまして、金曜日の夜に39.5度という限界値の熱が出てしまって、昨日はちょっとあまりの辛さに更新を休ませてもらいました。今は薬でなんとか熱は抑えているのですが、万全を期して今日は寝ます。もう終盤というのに、ここに来て、思わぬ敵にやられてしまいました(ぐふっ)。
というわけで、このアドレスのページを見てみると、なんかわけわからんことがいろいろと書いてあって、こんなん分かるかー、このやろ〜。という感じなのだが、よーく見ていくと、「ものぐさなひとのために」という、ナイスなテキストがあるじゃないか。そういうことは早く言ってくれよな〜。そうさ、俺はものぐささ、ものぐさ太郎さ。今日もひとりでものぐさ太郎さ。
というわけで、次は色に関することなんだけども、申し訳ないけど、俺、色数とか興味ないんす。ごめん。だから、飛ばしました(ぉぃ)。いやいや、ちゃんとあとから読みます。きっと。だってなぁ、色とか難しそうなんやもん。なんか滑らかに色の変化をみせる方法とか、そんなん無理やもん。分からんもん。俺には理解できないこと山の如しやもん。
というわけで、続いて、青コーナー、コンソールゥー。赤コーナー、コンソールゥー(って同じじゃーん)。コンソール大好きっす。大好きっ子っす。さっそく、コンソールをもうひとつ作っちゃいます。と思ったのも、つかの間。ちょと今日の内容むずくね? だって、これまであったコンソールの2つにするだけやん。簡単やん。余裕やん。と思ってたけど、実は結構難易度高かったです。それに、なんか著者もインベーダーまでラストスパート走ったるで〜という感じで、俺もインベーダーまでラストスパート走ってて、「おおー、奇遇だねー、目的地同じじゃーん」ってそれ違いますから〜!! これOS作る本ですから〜!! 残念〜〜〜〜!! ものぐさ太郎ぎり〜!!
というのも、これまで書いてきたプログラムを改めて、書き直さなければならないので、微妙に忘れている箇所とかあって、ちょっとここ難しかったっす。というわけで、ラスト1週間。そろそろ、OSとしてある程度、カタチにする段階にきているのかもしれない。要するにまとめということなのか。
というわけで、今回はわざわざOSまで自作して何をしたかといえば、ラーメンタイマを作ったのだ〜。ラーメンタイマってのは、要するに3分間をはかってくれるというすぐれものツールで、な、なんと、ラーメンを作るのにうってつけのツールだ。これはすごいぞ!! このツールさえあれば、もうラーメンで悩む必要はまったくない、お好みに合わせた絶妙のめん固さを選ぶことが可能だ! 有名店にも負けないめんの固さを実現できる! これでカタめんにもやわめんにも対応だ、このやろ〜。
というわけで、さっそくはりぼてOSにタイマAPIをふんだんに追加するのだ。基本的にタイマに関しては13日目辺りでもう嫌というほどやっているため、今回はそれをちょこちょこと変更するだけでOKだ。もう、この時期になると、以前作ったものをさらに改良してOSとしての機能を強化するところにチカラが入ってくるのだ。あの苦労の日々もまんざら無駄ではなかったのだ。すべてはうまいラーメンを作るためだったのだ(ラーメン王の称号は、俺のもんだーい、やっほーい)。
あの良く分からんシートという概念を、うがー、うがー、全然分からーーん、なんじゃこりゃ〜、といいながら、なんとか覚えた日々も、タイマだのマルチタスクだのの、ワケワカラン用語を一生懸命覚えた日々も、いまでは良い思い出だ。
そして、なんか一番最後の日(31日目)には、なつかしのインベーダーゲームのアプリが動いているではあーりませんか。これは、もう、はりぼてOSでインベーダーを遊ぶしかない!! 名古屋撃ちをするしかない。俺のテクを見せるしかないだぎゃー(名古屋?)。
衝撃の23日目が始まった! 今日はグラフィックAPIをふんだんに、あふれんばかりに追加した。しかし、今日のみどころはそこではない! 今日は、実は著者の知られざる過去があきらかになるのだ。もし、このBlogを今読んでる方で、本書を持っている方がおられたら、ぜひとも477ページを開いてもらいたい。するとちょうどページの真ん中に「make run」をしたサンプル画像がある。夜空を描いた画像だ。ウィンドウに点を表示するAPIを追加したので、それを利用したサンプルプログラムなのだが、問題はその画像から下へ2行目を読んで欲しい。よ〜く読んで欲しい。
と、まぁ、もちろんこのテキストは完全な冗談なので、本当にいるわけじゃ決してないし(当たり前か)、著者も冗談として書いているんだが、でもだ。でもでもだよ。ハウエバーだよ。この本って、技術書なわけだよ。技術書なんだよ。OS作っちゃう本なんだよ。OSっていったら、もうなんかすごそうじゃん。エライ学者さんが書いてそうじゃん。そんな本に冗談とはいえ「ペポ星」という単語を出してくる著者の川合氏。絶対、おかしい(笑)。でも本書はエライ学者さんが書いてる本よりも断然分かりやすいし、本当に初心者に向けて書いてある。本当に理解してもらおうという熱意が伝わってくる感じ。そんな本を書かれた著者の川合氏、エライ学者さんよりもよっぽど尊敬できると思うのだ(これはお世辞じゃないよ。ボクは悪いスライムじゃないよ)。
今日は最初から最後までAPIの追加で終始した。もうホント、OSっぽくなってしまって…、このやろ〜。でも、この辺りになってくると、本書自体が、新しく学ぶというより、これまでやってきたことを駆使して新しい機能を追加するという感じになってくるので、なんかBlogに書くことがなくなるぞ、このやろ〜(汗)。
そして今日の本題であるC言語でアプリを作成に入るのだが、今日はウィンドウを表示するAPIを作った。そして、それをC言語アプリから利用するのだ。さて、数日前からアプリを実行するようになったはりぼてOSだが、アプリケーションを実行させるには予想以上に大変であることが最近分かった。例えば一言でアプリを実行させるといっても、アプリが実行するコードを入れておく場所と、アプリが利用するデータを入れておく場所などをメモリ上で適切に分ける必要があるし、悪用目的でアプリを実行しようとする輩もいるだろうからだ。本当に細かい部分、普通にPCを使っている人には見えない部分にすごい気を使うのだ。
俺はWindowsやLinuxといった、あんなすごいOSを作る気なんてさらさらない(というか、そもそも作る技術がない)が、でも、この本を読んでいて思うのは、「ははー、OSの内部ってこうなってるんやなぁー」ということだ。このご時世、ただの一般市民な俺がOSを作るなんて、ぞくに言う「車輪の再開発」なわけで、ぶっちゃけ無意味なんだが(仕事じゃないし、1円の価値にもなんないし(笑))、でも、OS内部の仕組みを知ることがこれほど楽しいことだとは思わなかった。車輪の再開発だって? 大いに結構! 例えどんなにオンボロで、どんなに遅い自動車だったとしても、それが、自分ひとりで作った自動車だったなら、俺は乗ってみたい!!
はりぼるーぜ「どのみち私の勝ちだ。もはや止める術はない。メモリは書き換えられ、上書きされたコードは新たなるクラックののろしとなる。人があまた持つセキュリティホールのひとつだ。その程度のOS、作ってきたのは誰だ!! 君とて、その1人だろう」
それで、問題は「メモリアクセス違反っていったい何?」ってことなのだ。あれはぶっちゃけて言えば「アプリケーションが、OSしか使っちゃいけないはずのメモリを使おうとしましたよ」ということなのだ。いや、もしかしたら、微妙に違うかもしれんけど、そんな些細なことなんてどうでもいいんだ。要は、だいたいの感じをつかむことが大切なんだ。んで、つまりは、アプリケーションが勝手にいろいろな場所のメモリを書きかえることができたら、それはもう一撃でOSを粉砕することができるわけで、そんなことはOS的には、おいおいちょっと待てよ、というわけで、ここで、じゃあOSを守っちゃう仕組みを作っちゃおうという話になるわけですよ。
だが、そのOSを守る仕組み(メモリ保護)は、またもやCPU様のお力を借りなければなし得ないことなわけなのだ。それで、どうやらCPUに、「ここから、ここまでのメモリはOSしか使えないからよろしく〜」といっておけば、そのメモリ領域にアプリケーションがアクセスした瞬間に、ちょい待ちよ〜だんな〜、そっから先はとうせんぽ、というわけで例外の割り込みを発生させてくれるというわけだ。そして、その例外割り込みは、具体的には「INT 0x0d」なんだ。つま〜り、マウスやキーボード割り込みを扱ったときと同じようにすれば、例外時の処理をさせることもなんなく可能なわけだ。うーん、簡単やん。
だから、やたらめったら難しい言葉を使うと分かりにくいが、要するにCPUに「ここから、ここまでのメモリはOSしか使えないからよろしく〜」といっておけば、アプリケーションがそこにアクセスしたときに、おい待てよ〜、となって、なんかアプリケーションが悪いことしてまっせ、とOSに通知してきて、OSがアプリに波動拳〜、アプリはあえなく撃沈! という筋書きだ。
ついに20日目に突入だ。残りもあと10日。さて、実はこの辺りまで読み進めてきて、ふと思うことがある。それは、「俺も1からOS作ってみたい」ってことだ。もちろん、はりぼてOSを作ってる最中なんだけど、これはあくまでも本書の付録というか題材というか、本書の内容を理解するためのもので、自分が作りたいものではないわけだ。だから、著者の川合氏が書いたソースコードを読みつつ、うーんなるほど、と唸りつつ、そのコードを少し変更しては、「なるほど、なるほど。」と理解してればOKな代物なのだ。
が、それじゃあ、なんか物足りない。いや、物足りなくなってしまった。本書を読み始めた最初の頃はOSのだいたいの仕組みを理解するだけで満足だと思った。そもそも、自作のOSを作る時間なんて俺にはねーよ! と思ってた。だが、ここまで来て、ここまで読んで、多少なりともOSについて知ってしまったら、もはや、そうはいられない。最近では、本書を読んでるだけで「俺だったらこういう仕組みにするけどなぁ…」とか思ってしまって、読書に集中できなくなる。申し訳ないけど、マジで作りたくなってきた。
というわけで、俺は作る! もう誰がなんと言おうと、作ったる! で、ちょうど明日は土曜日、明後日は日曜日じゃないか。ふっ、ふっ、ふははははははははは…、休日が全て見えるぞ…、氷の世界!(跡部様〜)。というわけで、本書を読み終える31日目までには普通に無理かもしれないが、とりあえず作ってみることにする。それに、本書についているサンプルコード(はりぼてOS)を少し変更しただけで、30日でOSを作ったといっても、なんか説得力ない気がするし。やっぱり31日目にはどんなに低機能でも自分が作ったものがあった方が良いはずだ! というわけで、気持ちあらたに頑張ります!
昨日は休んでしまってすみません。まだ風邪が直ってなく、とりあえず休養をとらせていただきました。今日はもう万全完璧モードなのでモウマンタイです。熱もありません(界王拳10倍です)。というわけで、今日はtypeコマンドを作りました。
まず、大前提として、どうやらharibote.imgには「はりぼてOS」のすべてが集約されているという事実。これ、結構重要! というのも、この本ってあまりに準備がよすぎて、著者がコンパイラからmakeファイルまですべて自前で用意してくれている。この著者の技術力の高さに驚きで胸がいっぱいだが、それはさておき、準備がよすぎるからこそ、小さなことを理解しなくても先に進めてしまうという「もろはのつるぎ」…シロウトにはお勧めでき…じゃなくて、落とし穴があるわけだ(もう、なんか言いたいことがよく分からんようになってるぞ)。
そういえば、この本にはファイル管理という章(?)がないけど、ファイル管理ってOS作るのに結構重要な知識ではないのかな? 正直こんな適当な理解でいいのかなぁという感じなのだが、一応、今日でアプリケーション的なものは実行できるようになったし、明日はAPIを作るらしいし、なんか本当にこの本は難しい理論を完全に抜きにして、プログラミング重視で突き進んでるなと思う。あんまり本書の評価を見たこと無いけど、意外と賛否両論かもしれない。個人的には、理論ばかりのOS解説本はすでに結構あるから、こういう解説本も必要だと思うんだけど。
すみません、突然で申し訳ないんですが、風邪ひきました(ぉぃ)。鼻水はじゅるじゅるだし、ノドはガラガラだし、少し熱っぽいですが、セキはでないので、症状自体はそんなに重くないです。
memコマンドは以前から表示しているメモリの残量などなどをmemコマンド実行時に表示させるように変更しただけだ。clsコマンドは画面を消去するだけなので、まぁそんなに難しくない。それで、問題のdirコマンドなんだけど、これはなんかファイルフォーマットとかいう小難しいことを学ばないといけないらしいのだが、それはよく分からんからパス!(ぉぃ)。いや、あとでちゃんとやります。今日はちょっとマジで体調が悪いので、そういう難しいものは勘弁してください。
というわけで、今日はちょっともう寝ます。なんか中途半端ですみません。とりあえず明日までに風邪を治さなきゃだ!! ちゃんと俺の風邪は治るのか? 乞うご期待! じゃなくて、明日はtypeコマンドを作るようだ。
久しぶりに仲のよい友人がうちの家にきたので、俺はさっそくいま作っているOSを彼に見せたのだが、どうやらはりぼてOSの「良さ」がよく分かっていないようだ。
それに、せっかくドラゴンボールのノリで俺のはりぼてOSを紹介してやったのに…。まったく冗談の分からんやつだ。まぁ文系のお前に見せたのがそもそも間違いだったよ(ってか俺も文系だけど)。少しずつカタチになってくるこのOSを見ていると心なしか感動するんだぞ。いやー振り返れば、遠いところまで来たものだ…(まだ17日目だけど)。
さて、今日から、本格的にコンソールを作ることにあいなった。まず今日やるべきことは、真っ黒い画面を作ることと、その画面に真っ白い文字を入力できるようにすることだ。簡単に文字を入力するといっても、文字にはアルファベットの大文字小文字の他に記号もあるし、CapsLockやNumLockなんてのもあるわけだ。シフト押しながらだと大文字だけど、普通は小文字とかだ。つまり、一言でいってしまえば、キーボードとの対決なわけだ。ただ、真っ黒い画面に文字が入力できるだけでも、なんかすごいOSっぽくなっていて、マジで感動するぞ。
それに今日はかなり簡単だった。基本的にbootpack.cしかいじるところはないし、やったことといったら、キーボードの入力データを加工するだけだ。それに、この本はだいたい難しい内容のあとはなぜか簡単なのだ。なので苦労したあとはさくさく進む…ような気がする。これも意図的にそういう作りにしてるのかも…。まさに川合マジックなのだ(ホイミ!)。
そんなこんなで作ったのが、→本当に30日でOSが出来上がるのかを試してみるページ(17日目)だ。なんかコマンドプロンプトっぽい画面がでているが、あれがコンソールだ。でもEnterとか押しても反応ないから、ただのテキストを入力できる真っ黒い画面なだけなんだが、まぁそれでもこの雰囲気はナイスだ。グッジョブだ。最高だ。俺は今日のためにここまでやってきたみたいなとこがあったから、マジでこれには嬉しい思いだった。うーん、感動。
なんか、ここ最近、加速度的に面白くなっていくぞ。マジでOSを作るのって楽しいのかもしれん。そして、それと同時に、なんか自分でも独自のOSを作りたくなってきた。本書のサンプルを元に作るのもいいのだが、自分で一から作ってみたいと思うようになってきた。ただでさえ時間ないのに、そんなもん作ってたらさらに時間なくなるぞ、と思うんだが、仕方がない。やりたいものはしょうがない。というわけで、今日からこつこつと、自分のOSを作ることに決めた。このBlogとは直接は関係ないかもしれないけれど、とりあえずやってみることにする。
なんとか分かったぞ。なんとか、なんとかな。もうこれ以上理解するのは無理! 不可能! すでに俺の頭脳の許容量の120%を使用しているからもう無理。無理。ホント勘弁してください(ピキーッ、ぼくはわるいスライムじゃないよ)。
というかですよ。16日目は個人的に、かなり難易度高いよ。正直6日目の悪夢を思い出しましたよ。ただ、あれは著者が「6日目はむずいよ?」といっていたので、心の準備といいますか、まぁ心の準備ができたわけですけどね(だから心の準備だね?)。ただ、今回はなんの予告もないですから。いきなりですから。いきなり後ろから殴られた感じですから。スライムを倒してレベル上げようとフィールドを歩いていたら、いきなりドラキーが出てきたようなもんですから。
ちくしょー、ゴールド半分かよー(ってそれはドラクエだけだから、ドラクエの世界だけだからーー)。
って、話がそれたけど。今回、俺が本当に難しいと思ったところは、タスク管理の優先順位というところだ。例えば音楽を鳴らすタスクや、マウスを動かす処理を受け持っているタスクというのは、一般的に、ほとんど途切れてはいけない処理。んで、逆に一定時間毎に数値をカウントする処理なんかは、ある特定の時間以外は別に何もしてなくてもよいわけで。つまり、タスクの種類によって、どのくらいCPUに働かせようかを決めなければならないわけだ。そして、それが優先順位という仕組み(少なくとも本書ではそう読んでいる)で実現するのだが、ホント、もうややこしいったらありゃしない。なんかこれまで学んできたこと総動員で、しかもタスク管理自体も難しくて、マジでこれは難易度高いと思う。ホッホッホッ、私の難易度は…53万です(フリーザ様〜〜)。
それで、例えばもっとも処理を必要とするタスクをレベル0とし、もっとも処理を必要としないタスクをレベル10とする。そして、すべてのタスクをこのレベル0〜10までの範囲で振り分けて、なるべくレベル0の方から順にCPUに処理させるような仕組みを作る必要がある。前にも学んだとおり、CPUは一個しかないので、一瞬(1クロック?)で処理できる命令は必ず1つなのだ。つまり、1つのタスクしか処理をしていないため、ものすごい、本当にものすんごいスピードでタスクの間を行ったりきたりして処理していかなければならない。
ここで、どのタスクをどれくらい優先させて処理させるか? ということが重要になってくる。すべてのタスクを均一に同じ期間だけ処理させるというのなら、さほど難しくはない。難しいのは、タスク別にどれだけ優先させるかという仕組みを作ることだ。
それで、まさに分からんかったのはこれです。優先順位! 本当に完璧なまでのアルゴリズムな話なんですよ。本当に壁だと思うんだけど、俺だけなのかなー。
というわけで、一応、ある程度理解したので、セイカブツを残します→本当に30日でOSが出来上がるのかを試してみるページ。マウスの動きとかウィンドウを移動したときの動きとかが微妙にあやしいのは、優先順位処理を最後までちゃんとやってないから。でも、なんとか理解はできたと思うから、明日のコンソールを作るついでにやったります。それに、この本は、そのときは分からなくても、読み進めていくと分かってくる場合もあるのだ(6日目同様)。だからとりあえず、この本を読んで楽しむことが重要なんじゃないのかな(多分)。
あと、この辺りになると著者がちょっとノリにノッっているのが分かる。最初の方よりもOSっぽくなってきて、書く側としても面白く感じるのかもしれんです。テキストも内容もどんどんさくさく進んでいくし(速すぎてついていくのがやっとだけど(汗))。

 

戻る

ノーローンのサイトです。

ノーローンのサイトです。