問題タブ [hobby-os]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
operating-system - アセンブリOUTB機能はどのようにしてトリプルフォールトを引き起こす可能性がありますか?
私のシステムプログラミングクラスでは、小さくてシンプルな趣味のOSに取り組んでいます。個人的には、ATAハードディスクドライバに取り組んでいます。私は、1行のコードが障害を引き起こし、すぐにシステムを再起動するように見えることを発見しました。問題のコードは、IDE割り込みの割り込みサービスルーチンの最後にあります。IDEチャネルを使用していたので、それらはスレーブPIC(マスターを介してカスケードされます)を介して送信されます。元々、私のコードは割り込み終了バイトをスレーブに送信するだけでしたが、教授はそれをマスターPICにも送信する必要があると言いました。
だからここに私の問題があります。EOIバイトをマスターPICに送信する行のコメントを外すと、システムは3回障害を起こし、その後再起動します。同様に、コメントを残しておくと、システムは実行されたままになります。
システムの残りの部分を見ずに、誰かがここで何が起こっている可能性があるかを説明することは可能ですか?
注:暗闇の中でのショットと同じように、_outb()呼び出しを別の_outb()呼び出しに置き換えました。これにより、IDEコントローラーで割り込みが有効になっていることを確認しましたが、生成されたアセンブリはほぼ同じでした。これは障害を引き起こしませんでした。
* _outb()は、x86OUTB命令のラッパーです。
問題となっているマスターPICにEOIを送信する機能の何が特別なのですか?
コードを見ないと答えられないかもしれませんが、見てくれてありがとう!
x86 - マスター PIC の割り込みが終了すると、トリプル フォールト (再起動) が発生するのはなぜですか?
わかりました、学校ではオペレーティングシステムを開発しています。私のプロジェクトは、ATA ハードディスク ドライバを開発することでした。割り込み終了コマンドをスレーブ PIC に送信しているだけで、マスターにも送信していないことを教授が指摘したとき、割り込みサービス ルーチンは非常にうまく機能していると思いました。
私の問題は、割り込みの終了をマスター PIC に送信するたびに、トリプル フォールトが発生し、システムが再起動することです。これで、一連の行のコメントを外したり、コメントを外したりしましたが、割り込みの終了をマスター PIC に送信する関数がコードに残っていると、トリプル フォールトが発生するようです。
今、私は次のことを確信しています:
- ISR に入ると割り込みが無効になります
- 割り込み終了バイトを適切に送信しています (クラス テスト済み)
- 同じ割り込みを再確認していない
これは大きなフラストレーションを引き起こしているので、私たちのコードを見る必要なく誰かが私に何らかのガイダンスを与えてくれることを願っています.
ありがとう!
filesystems - ext2 ディレクトリ エントリ名は、有効なファイル システムで null で終わることが保証されていますか?
これは簡単な質問だと思ったのですが、答えが見つかりません。私は主にこれらの仕様を読んでいます:
http://www.nongnu.org/ext2-doc/ext2.html
ディレクトリエントリの名前がヌルで終わるはずかどうかについては言及していないようです。未定義だと思います。name_len フィールドがあるので、とにかく名前を簡単に出力できます。
ext2 ディレクトリ名は null で終わることが保証されていますか?
趣味の OS で ext2 ドライバーをテストしているときに、いくつかのディレクトリ名を印刷したときに最後にゴミ文字が出てくることに気付いたので、質問します。単純に name_len 文字を出力すれば問題ありませんが、null で終了していれば問題ありません。
ありがとう!
c - GNU C ライブラリを最小限のホビー OS に移植する
そのため、あまり機能しない最小限のOSを使用しています。基本的な C カーネルを 32 ビット プロテクト モードでロードするブートローダーがあります。次のようなものを使用できるように、C ライブラリを移植するにはどうすればよいprintf
ですか? GNU C Library の使用を検討しています。どこかにチュートリアルはありますか?
assembly - 空の仮想マシン インスタンスでアセンブリを実行していますか?
空の仮想マシン (virtualbox、vmware) インスタンスでアセンブリ コードを実行するにはどうすればよいですか?
簡単なブートローダーを書いてみたい。私の目標は、趣味のオペレーティング システムで働くことです。
c# - Cosmos でプラグを適切に使用するにはどうすればよいですか?
Cosmos を使用して独自のオペレーティング システムを作成中ですが、問題があります。
プラグについて助けが必要です!これまでのところ、プラグを必要としないコードを使用してオペレーティング システムを作成することができました。しかし、これにより私のOSは本当に制限されます。時間を表示させることさえできません!また、Math-Man という私が書いたプログラムでは、ほとんど何もさせることができません。たとえば、Math.Pow... を記述すると、「ネイティブ コードが見つかりました。プラグが必要です。」というビルド エラーが発生します。
Cosmos でプラグを「使用」する方法がよくわかりません。
誰かが Math.Pow を機能させる方法を教えてくれれば、他の壊れたコード (時間などを取得するコード ビットなど) も同様に機能させる方法を理解できると確信しています。