2007-01-01から1年間の記事一覧
最近忙しいです。まぁ完全に僕の能力不足により忙しいのでそれはそれでいいのですがNICドライバの開発が全く進みません。なんかremote DMAの転送がうまくいってません。DMAバッファに書き込まれている様子がない。。あと水曜までに書かなければならないある…
帰りの電車で30代と思しきサラリーマン二人組みの会話 「おれ経営学と法学を勉強しなおしたいんだよね、でも余裕ないしな」 「おれは文学かな。あと民俗学の授業とかちゃんと聞いときゃ良かった」 今からやれよ。 勉学に年齢制限なんて無いし大学行かなきゃ…
ne2000 NICドライバ実装中。 qemuはne2000に対応してるけどやっぱ実機でテストしたい。今度互換NIC探してこようかな。
わからない!!! s-m-n定理の証明に使われているゲーデル数の最初の(2の)冪数に1と3が使われている理由が全く分からない。必然性がないような気がする。2でも4でも5でもいいんじゃ。頭痛いお... 続き わかっちった。 著者が正規化されたNプログラムPをゲー…
さて、いよいよNIC編をスタートさせました。TCP/IPの実装(または移殖)はsodex開発当初からの最上位課題で、その土台であるNICドライバの開発に取り掛かります。対象のNICは有名なNE2000とします。 NE2000ではDP8390という制御コントローラを使用しており、…
面白い定理。 述語 を とおくと、 は帰納的述語ではない。 ※とは簡単にいうとプログラムと入力列が与えられた時、計算結果を出すかいなかの述語。これから導かれる事柄として以下がある。 あるプログラムに対して、どんな入力に対しても必ず何らかの解答(エ…
帰納的関数の主要定理は大体理解したので一つ問題を解いてみる。 問題 1.4.9 問題 述語 の特徴関数 が帰納的関数のときpを帰納的述語という。 帰納的述語の最小関数 は (定義域が)の帰納的関数である事を示せ。 証明 帰納的述語の最小解関数 に最小値が存在…
悩む
NE2000の仕様読んでます。 初期化送受信自体はそれほどむずかしくなさそう。
24シーズン6は異常。先々週くらいの土日に2日で一気に見てしまった。今はLOSTシーズン1を見てるけどこれも結構おもしろす。
でも今日非通知の電話あったからそれかな。どちらにしろそれの開発に携わった人が会社に居るので気にしてないですが 1chipMSXはFPGAでCPUが書かれていてVHDLで色々出来るらしいのでついつい衝動買いしてしまったのですが、VHDLの勉強をしようか悩み中。さく…
mallocにややこしいバグが。。。カーネルからユーザランドにポインタ経由で渡した構造体の要素がおかしな値になってる。と思ったらユーザランド用のヘッダーファイル更新ミスでした(カーネルと共有しないとまずいよなぁ常識的に考えて。。)
が原始的関数である事を示すのに以下の補題が必要なんだけどその証明が4行しかなくて一読しただけでは分からなかったので論理的に細かく追ってみた。 前提 真偽の定まる関数pを述語と呼ぶ。 述語pに対してを特徴関数とよび、その定義は 述語pが真の時0、偽の…
計算機科学の数学的背景に興味があるので以下の本を購入。計算論 計算可能性とラムダ計算 (コンピュータサイエンス大学講座)高橋 正子 近代科学社 1991-08売り上げランキング : 135427Amazonで詳しく見る by G-Toolsとりあえず問をちょこちょこやっていく形…
またしてもカーネルサイズに依存して起動できない問題が発生。しかし今回はbochsでは起動出来るのでどうやらqemuが怪しい気がしてきました。qemu本体というよりint 0x13のBIOSシステムコール(FDCからの読み込み)が失敗してるのでqemuが使ってるBIOSの方く…
signalとkillを実装しました。とりあえず問題なく動いてそうです。 下の画像は何もしない「test」コマンドでプロセスを生成してそのプロセスをkillでSIGKILLシグナル送って殺しているところです。 さて、次何やるかなー
signal実装中。例によってpage faultが発生しまくります。とりあえずkillとsignalを実装して後は放置予定です。
Parallels Desktop for Mac上で動くwindowsを見てたらMac欲しくなってきた。。すごいさくさくなのれす。これ見るとWin上のエミュレータはゴミ。これにWinとLinux乗っけてメイン開発機にしたいです安西先生。 ※今は開発がノートPCに入れたLinuxでその他がデス…
waitpid実装。昨日のpage faultは_exit()の中でprocessのstateをzombieにした後そのまま返ってしまっていてそのまま何のコードもない0x8048000付近を突っ走ったために起きた現象でした。eshellでwaitpidを使ってコマンドの終了を待たせるようにしたので余計…
waitpid実装中。スケジューラ回りをcontext保存部、スケジューリング部に分離し、また親、子、兄弟プロセス関連を整備。exitするとプロセスはZOMBIE状態になるようにしwaitpidをした時、子プロセスにZOMBIE状態のプロセスがあればSTOPPED状態にして次回その…
私の知る限り唯一64bit自作カーネル書いてるMEG-OSの中の人(id:megosさん)が64bitOS作成日記書いてるYO! ハァハァしながら読ませていただきますw
PIT(8254チップ)でどうやってタイマとスケジュール割り込みを共有しているのか謎だったけどコード見て謎が解けた。以下Linux-0.12の該当コード。(このバージョンはいい教材です。僕はLinux 2.6.xxを読んでいて理解不能でつらいときはminixと共にこのバージ…
PITを実装(といってもPITレジスタにカウンタ値設定するだけの3行コード)
メモリ上のダンプを見たいけどqemu、bochsだとアドレス指定して一覧表示させて見るという方法があるにはあるけど面倒だという事でメモリダンプシステムコールを実装。これで特定プロセスのリニアアドレス上のメモリダンプをserial経由で以下のようにファイル…
ユーザランドmallocのコード中にmuse_list(使ったメモリ構造体を連結しておくリストのhead)の操作中にpage fault起こすので調べてました。最初は.bss領域を初期化したのがまずいと思ったのですが。特に0で初期化されてまずい領域もなく、次にリストが空の時…
カーネルは様々なパーツの一部だけど極めて重要なパーツだと思う。人間に例えれば心臓+静脈動脈+神経系だよ。数学で言えば公理系。物理学で言えば法則。そんじゃコンパイラは何かっつーと言語で書かれた定理を公理系に変換する機械。
来週の月曜に行こうと思ったのですが、なんと開発部長の指令により今日emacs(elisp)のエロい人と一緒にご本尊を拝みに行ってきました。いい会社です。公演はGPLv3に関する事やFree Software に関する思想的な事のみでしたので正直面白くはなかったのですが、…
malloc。.bss領域が初期化出来ていない問題はelfloader時にelf program headerのflagsにexecuteのbitが立っていないときに0でmemsetする事で解消。 と思ったけど globalに確保した領域(ここも.bss)まで0に初期化されてしまってうまくいかない。
http://www.senshu-u.ac.jp/School/network/news/event/rms.html 会社で話題になっていたので調べてみたらなんと近所ですた。拝みに行って来ようかな。。
なんとなく64bitCPUのブートシーケンスが気になったのでx86_64(AMD64)のブートを調べてみました。 AMD64アーキテクチャ互換のCPUが無いため実行環境はエミュレータのqemu-system-x86_64で。 開発環境も32bitしか無いため32bitホスト上に以下のようなクロスコ…