OSを作ってみよう (534レス)
上下前次1-新
133(2): 03/03/07 14:36 AAS
NoName Mar 7 2003 14:31:47 (32768kb)
/init 13b000 13ca5c
/shell 13d000 13e8e8
これでおわっちゃうけど、問題ない?
grub0.92 under Bochs2.0.2 on Vine Linux 2.6で、
fd0をnoname.imgに切替えて、
root (fd0)
kernel /kernel
module /init
module /shell
省2
134(1): 03/03/07 14:44 AAS
>132
少なくとも動作波形はあんまり関係ないような。
まあジッタとかには注意せにゃならんかも。
つーか、トラ技のバックナンバになんかいい情報ってあったっけか。
KBCとかUSBとかNICの情報とかならあったかな?
でもC級出版の本、特にトラ技については
細かい数値やらに致命的な間違いもあったりするからして、
参考程度に留めておいてデータシートなりなんなり落としてきた方が
よさげだと思われ。
英語圏のサイト探せば負けず劣らずな資料もイパーイあるし。
135: 03/03/07 14:49 AAS
外部リンク[html]:www.pink-angel.jp
★いらっしゃいませ!!ようこそココへ★
136(2): 03/03/07 15:00 AAS
Shellってなまえだけで、実際にははたらかないのかよをーゐ。
137: 03/03/07 15:15 AAS
ソース読め >>136
138: ( ´ -`) 03/03/07 19:32 AAS
>>133
initやshellのパスはfd0にハードコーディングされてるので、
それ以外の場所に置く時はソースを修正する必要があります。
kernel/main.cとinit/main.cの該当部分を修正してください。
もっともinitとshellは起動メッセージを表示するだけなので
動かしたところであんまり面白くないですが。
>>134
データシートと英語・・・道は遠い。
デバドラ書ける人ってどうやって勉強したんだろ。
まぁ、いざとなれば他のOSからコピペすれば良い
省4
139: ( ´ -`) 03/03/07 23:06 AAS
今気付いたんだけど>>133みたいにGRUBでrootコマンドを使
えばソース中にデバイス名をハードコーディングしないで済
むんですね。もっとちゃんとマニュアル読んどくべきだった。
撃つ出汁脳。
140: ( ´ -`) 03/03/08 08:18 AAS
外部リンク[gz]:www.geocities.co.jp
偽signalを実装。実装の簡単のために仕様はかなり変えています。
シグナルのマスクは出来ない。ネストは出来ない。シグナルハン
ドラの終りで明示的にsigreturnを呼ぶ必要がある、などなど。
UNIXのsignalというより某BTRON3のメッセージハンドラに近い
仕様となっています。というか、BTRON3仕様書見て作りました(w
今後徐々にPOSIX準拠にしていく予定。
141: ◆g2j80BX5do 03/03/08 11:41 AAS
030308age
142: LightCone ◆sSJBc30S5w 03/03/08 19:43 AAS
面白いなと思ったのは、signalハンドラに下りる時に、カーネルスタックを
積み重ねずに、前のスタックフレームの内容をTask構造体内部にコピーし、
sigreturn()で、復帰しているところです。
私だったら、カーネルスタックに積み重ねてしまいそうですが(高速そう
なので)、この方法だと、スタック容量がパンクしないかチェックしなく
てもいいですし、TSSのESP0も固定のままでいけるので簡単になりますね。
TSS-ESP0を変更するのは色々と煩雑になりますし。
143: LightCone ◆sSJBc30S5w 03/03/08 20:14 AAS
0000 0000 - 7fff ffff あたりは、線形アドレス = 物理アドレスの
恒等写像にしてるのですか? そして、カーネルもそこに置いている?
もしそうなら、面白い実装だと思いました。
ああ、でもこれだと、V8086モードは複数独立して持つ事は出来ないかも
しれませんね。
144(1): 03/03/08 22:21 AAS
がんばれ!>>1完成したら使用します!
145(2): ( ´ -`) 03/03/08 22:53 AAS
> 面白いなと思ったのは、signalハンドラに下りる時に、カーネルスタックを
>積み重ねずに、前のスタックフレームの内容をTask構造体内部にコピーし、
>sigreturn()で、復帰しているところです。
単純さでは良い方法じゃないかなと思っています。
でも、これではハンドラのネストがやりにくく、UNIXとの互換
性が取れませんので、今日の作業でスタックフレームをユーザ
スタックに保存するように改め、sigreturnもハンドラからのリ
ターンで自動的に呼ばれるようにしました。個人的にはシグナル
ハンドラは時代遅れだと思うので、あんまり乗り気では無かった
ですけど。
省16
146(1): ひげぽん 03/03/09 00:34 AAS
こんばんは、ひげぽんと申します。
1さんのOS大変参考にさせていただいておりますm(__)m
それにしても1さんはすごいです。
すべてにおいて、見習うところばかりです。
OSの知識、実際のコーディング等々。。。
これからも是非がんばってください。
147(1): わたもち 03/03/09 00:38 AAS
わたもちです。
開発スピードも速いし、どんどん実装が進んでゆく...
ソースも拝借して、勉強しています。
MacOSX並みのビジュアルなGUIの作成期待しています!
私も、早くGUI実装までいけるように頑張っていきたいと思います。
148: ( ´ -`) 03/03/09 11:08 AAS
外部リンク[gz]:www.geocities.co.jp
>>145で述べた改良とexit&waitシステムコールの実装をしま
した。これでプロセス・メモリ関係のシステムコールはだい
たいそろったかな。今日はユーザアプリ用ライブラリの整備
をする予定です。
>>146
こんにちは。
カーネルのC++記述やFDD制御などMonaからは色々と学ば
せていただいております。カーネルをC++で書くなんて
カッコ良すぎです。
省4
149: わたもち 03/03/09 22:18 AAS
失礼しました。寝ぼけていたようです。これだけのソースを書ける方なら
以前作成されていたOSもかなり作りこまれてあったのだろうなと思います。
貴方のOSは驚くほどのスピードで製作が進まれているようで、うらやましい限りです。
日々忙しいと思いますが、OS製作頑張ってください。
150: LightCone ◆sSJBc30S5w 03/03/10 01:18 AAS
>>145
>> もしそうなら、面白い実装だと思いました。
>そうでしょうか。
>どの辺がそう感じられたのでしょう?
二つ理由があります。
一つ目は、#143の最後にも書きましたが、独立したV8086モードタスクを
複数走らせるためには、0000 0000 - 0001 FFEF の部分を必ずタスク毎に
分離する必要があるから。
二つ目は、共通空間無いでもDISKと連携した仮想記憶メモリを置くためには、
「恒等写像」ではない真の意味でのページングも行う必要があるだろうから。
省3
151(1): ( ´ -`) 03/03/10 10:15 AAS
ソースが5000行超えた。
こんな長いプログラム書いたのは初めてだな。
>一つ目は、#143の最後にも書きましたが、独立したV8086モードタスクを
>複数走らせるためには、0000 0000 - 0001 FFEF の部分を必ずタスク毎に
>分離する必要があるから。
う〜む、そうですか。
ちょっとだけ調べてみたのですが、V8086モードをまともに
やろうとするとかなり難しそうなので、BIOSドライバは当分
諦めようかと思います。
>二つ目は、共通空間無いでもDISKと連携した仮想記憶メモリを置くためには、
省9
152: LightCone ◆sSJBc30S5w 03/03/10 12:01 AAS
>>151
>共通空間が必要になった場合は、タスク固有空間を3G〜4Gにして、
>空いた2G〜3Gを共通空間に割り当てようと考えています。
ご承知のとおり、線形アドレス「空間」自体は、どう頑張っても4GBまで
なので、もしタスク固有空間を4GBにしてしまうと、共通空間用には何も
残らなくなってしまうと思うのですが、その辺、どういうことなのか良く
分からないので、詳しくご説明頂ければと思います。
PAE,PSEを用いると物理アドレスが36BITに拡張され、実メモリを64GBまで
扱えるようになりますが、相変わらず線形アドレスは32BITで4GBのままです。
つまり、CR3を固定した場合、同時に扱える物理メモリは4GBより多くは
省1
上下前次1-新書関写板覧索設栞歴
あと 382 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.008s