ウォンツテック

そでやまのーと

2007-01-01から1年間の記事一覧

OS作成 - シェル編

malloc実装中。どうやら.bssセクション領域が変。きっちりpagingされてないのかな。

id:higepon氏がhatenaを退職し、引き篭もってMonaOSのコードを書きまくるらしい。誰かが言ってた「higeponがこのまま勉強し続けたら数年で天下取る」と。どうやら精神と時の部屋に入ってそれを短縮するようです。一先ずは英気を養って更なる飛躍に期待してま…

六十六億の苦悩が在り、苦悩の客観化は出来ないがゆえ己の苦悩は自意識において他のそれを上回る。二十代の苦悩を生き抜いた僕は新しい苦悩を手に、そしてただ生きていく。

OS作成 - シェル編

ユーザライブラリ用のmalloc実装中。Antosのmallocなどを参考。AntosではLinuxと同様にmalloc中にheap領域が足りなくなったらsbrk(brk)を呼んでいるけど、その初期値が固定値となっていた。別に固定値でも何の問題も無いけど、Linuxではtextセクション、data…

OS作成 - シェル編

exitシステムコールを実装中にBOUND範囲超過例外(0x05)なるものに初めて遭遇しました。IA-32デベロパーズマニュアルを参照すると BOUND 命令が実行された時点でBOUND 範囲超過フォルトが発生したことを示す。 BOUND 命令は、符号付きの配列インデックスを…

OpenCV

最近カーネル以外の事やりたいと思っていて色々何やろうか考えていたのですが、とりあえず画像解析系に手を出してみようかと思い以下の本を購入。OpenCV プログラミングブック奈良先端科学技術大学院大学 OpenCVプログラミングブック制作チーム 毎日コミュニ…

Sodex 0.0.1リリース

Sodexカーネルのリリース第一弾、Sodex version 0.0.1をリリースしました。一応プリエンプティブなマルチタスクカーネルになってます。DLしたらsodex-start.batで起動してください。qemuはwindows用です。Linuxで動かす場合はfsboot.binをLinux用のqemuで起…

OSC2007 tokyo/fall

OSC2007 fallに行って来ました。ほとんど終了時間に行ったので目的のMonaOSのAudioServerは間近では見れませんでした。higeponさんともちらっと会った*1のですが、ライトニングトーク前ということで少ししか話せず(残念。。)。 でもライトニングトークでhi…

OS作成 - シェル編

今日もシェル回りを弄る。ps、pwdコマンドを追加実装しました。cdも実装中ですがcurrent processのcurrent dentry構造体を書き換えるとその後シェルのループが固まってしまいます。cdコマンドが実装出来たら一旦リリースかな。 sodex rev.48

OS作成 - シェル編

色々とカーネル内部を整備しつつcatコマンドを実装。catというよりほとんどシェルの引数argvをどうやって新規プロセスに渡すかという部分をやってました。また、execveといいつつどちらかというとforkのような動きになっているためコマンドを打った直後に先…

OS作成 - シェル編

シェルで引数を渡せるようにしようと思い、ユーザライブラリを整備していたのですが、どうもprintfやらputsを呼ぼうとするとpage faultになってしまう。色々原因を探っていたのですが、最終的に呼ばれるwrite(..)をcallした所でpage faultが発生している模様…

OS作成 - シェル編

永き悠久の時が流れ、ついにsodexカーネルが産声をあげました。今まではカーネル内部をひたすら書いていたのですが、さきほどようやく人類の叡智であるCUIを得ました。まぁlsが動いただけなんですが、、感動度は「OSを作ろう part2」でid:higepon氏がやって…

OS作成 - シェル編

やっちまった。。execve.Sのint 0x80の直後に「1: jmp 1b」入れたの忘れてずっとプロセスの反応が無い事に悩んでた。。。。。しかもわざわざqemuのin_asmログとobjdumpまでやってからやっと気付くという間抜けっぷり 笑うしかないOTL ※現状のsodexのexecveは…

OS作成 - シェル編

1回だけコマンドの入力が可能なシェルを書きました。lsコマンドのみ実装してあります。以前、ファイルシステム実装時に用意してあったext3_ls()をシステムコール経由で実行しているのですが、以前とは違いinitプロセスから簡易シェルプロセス/usr/bin/eshell…

OS作成

カーネル内部からのスイッチを許可するマルチプロセス化についに成功しました。細かいデバッグを毎日少しずつ行い1ヶ月くらい掛かりましたorz。とりあえず4プロセスくらいをinit_process時に登録し、それらをPIC timerでswitchingさせていき、数分間放置して…

OS作成

1プロセスのkernel to kernelスイッチはほぼ正常に動作中。複数プロセスの方もなんとなく原因はつかめた。各プロセスにkernel内部用のstackを持たせてそれらをスケジューリングの初っ端かiretする直前に切り替えないといけない。でもkernel to kernelかuser …

あれの開発ちょっと進行&帰宅 東野圭吾「幻夜」読了。 白夜行に続いて自分的ベスト5入り。 これは雪穂(美冬)の白夜行第三部完結編を期待してしまう。

下の層

僕は基本的に下の層に興味がある。カーネルを書こうと思ったのも下の層に興味があったからだ。nchaosを書いていた2年前は下の層に興味が出すぎて「CPUの創り方」という簡単な本を読んだ後に電子回路、電気回路の教科書を買いに行き読み始めてしまったくらい…

emacs lisp

emacsで編集中で、バッファに存在するファイルをsvn commitするemacs lispを書きました。 exclusion-listに登録した文字列以外のバッファをcommit対象のファイルとし、さらにファイル一つずつcommitするかどうか尋ねます。まぁ、elispの勉強を兼ねて自分用に…

BSマンガ夜話復活

岡田さんのブログによると11/27(火)から11/29(木)までの3夜、BSマンガ夜話が復活するらしい。もうねヌルイコメンテーターが出るアニメ夜話とかどうでもいいから、いしかわじゅんと夏目さんと岡田と司会の大月さんの4人で24時間トークして締めくくって欲し…

OS作成

一般保護例外地獄から脱出したと思ったらページフォルトが発生。 でもなんとか1プロセスならkernel内部からでもプロセススイッチが出来るようになったっぽい(ただしespの戻しが不完全なせいか、数回のスイッチでページフォルトになるけどorz)

夕食抜きdiet二日目。腹減った。。。

OS作成

混乱してきたからメモ スケジューリング用割り込み(timer割り込み)を禁止しているはずなのにfdcの読み込み時に(スケジューリング)割り込みが発生している PICの特定bitをマスクするだけで特定の割り込み禁止出来なかったっけかなー 割り込み時のcsの値判…

Aしゃ

いろんな意味で濃い会社だ。技術系が濃いのはわかってたけど営業陣、マネージャ陣も濃い。商社系のノリ以上かもしれない

OS作成

スケジューリング割り込み回りとkernel ⇔ user mode変更回りを大幅変更。しかしうまく動かず。 追記 そうかそうか。最初にスケジューラを起動した時にiret用のstackに埋め込んだeflagsが0だった(次回以降はnextプロセスのeflagsが埋め込める)ので割り込み…

RoRといえば

やっぱRise of Romeだよね。 最近では「RoR」でググるとRuby on Railsとかしかでないし悲しい限り。 きっとLimeChat作者のPsychsさんならわかってくれる。

OS作成

qemuが原因なのか、512バイトのfirstboot時にBIOSのFD読み込み機能を使ってfloppyから最初のセクタを読み込むところでエラーになる。最初はqemuのBIOS実装が原因かと疑い以下のようにbochsのBIOSバイナリをコピーして起動してみたけど再現したのでqemuの本体…

OS作成 - シェル編

Privilege Levelの異なる場合での割り込みを検知しようと思いIntel manualの以下のようなCPUの擬似コードを熟読していたけど、どうやらeflagsなどでの検知はできないみたい。期待としてはRETURN-TO-OUTER-PRIVILGE-LEVELのところでCPUがeflagsのなんらかのビ…

OS作成 - シェル編

read(0, .., ..)でキーボード割り込みをカーネル内部でwaitする事になるのだけど、その場合いつまでも待てないので当然その他の割り込み特にスケジューリング用の割り込みは許可する。現状の実装ではカーネル内部から内部へのスイッチ(Privilege Level 0か…

OS作成 - シェル編

sodexファイルシステム上に/usr/bin/helloで中身hello worldなテキストファイルを設置し、open, read, writeする事が出来たので次は標準入力のシステムコールを書こうと思ったのですが、割り込みのwaitを書かなくてはいけない事に気づきました。これは今まで…