問題タブ [pintos]

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.

0 投票する
1 に答える
1659 参照

operating-system - メインシステムコールにぶら下がっているQemu

私はPintosプロジェクトに取り組んでいました。そして、適切な優先順位スケジューリングのために優先順位寄付メカニズムを実装しているときに、QEMUエミュレーターがハングアップしました(画像を添付しました。ピントのダンプは次のとおりです)。printfステートメントをデバッグして挿入しようとしましたが、リモートホストを介してqemuをデバッグしているときに、mainに入るとすぐに再びハングアップしました。誰かが私にこれらすべてのトラブルシューティングを行う方法を教えてもらえますか?それ以外の場合は、コード全体とqemu、およびその間のすべてを再インストールする必要があります。

ピントからのダンプ:

QEMUでエミュレートされたピントスQEMUでエミュレートされたピントス

0 投票する
1 に答える
14208 参照

operating-system - Pintos でのシステム コールの実装

PintOS で既に定義されているシステム コール ( halt()、create()... で定義されている pintos/src/lib/user/syscall.c など) を実装したいと考えています。pintos/src/userprog/syscall.c の現在のシステム コール ハンドラは何もしません。システム コールを行うプロセスを作成するにはどうすればよいですか。さらに、いくつかのシステム コールを自分で追加する必要があります。どうすればそれを進めることができますか。しかし、まず既存のシステム コールを実装する必要があります。

0 投票する
3 に答える
6499 参照

operating-system - PintOS、-vオプションによるカーネルパニック、ubuntuでbochs

.../build/ で "pintos -- run alarm-multiple" を実行すると、すべて問題ないようです。

しかし、.../build/ で "make check" を実行すると、7 つのテストすべてが同じ "Run did not start up successfully: no "pintos booting" message" で失敗しました。

pintos -v -k -T 60 --bochs -- -q run alarm-single < /dev/null 2> tests/threads/alarm-single.errors > tests/threads/alarm-single.output perl -I../.. ../../tests/threads/alarm-single.ck tests/threads/alarm-single tests/threads/alarm-single.result FAIL tests/threads/alarm-single Run didn't start up properly: no "Pintos booting" message

次に、.../build で「pintos -v -k -T 60 --bochs -- -q run alarm-single」を発見しました。

Bochs は次のメッセージで終了しています: [ ] bochsrc.txt:12: 表示ライブラリ 'nogui' が利用できません

「-v」を取り除けば問題ありません。

この表示ライブラリ「nogui」が利用できない問題を修正する方法

0 投票する
1 に答える
1387 参照

linux - ピントスの例

私は Linux の新しいユーザーで、Pintos Project #02 - ユーザー プログラムを試みています。Pintos のみをインストールし、"make" でサンプルをビルドしようとしたところ、次のエラーが発生しました。

誰が何が起こっているのか説明してもらえますか?

参照用の Makefile.userprog は次のとおりです。

0 投票する
2 に答える
3882 参照

linux - Pintos プログラミング プロジェクト 2

Pintos は、2 番目のプロジェクト (ユーザー プログラム) に対して別の方法でインストールする必要がありますか? 自分のインストールで実行しようとするとpintos -f -q、Pintos が引数 "-f" を認識しないというエラーが表示されます。

これはすべての引数が Pintos によって処理される場所です: http://www.cse.iitd.ernet.in/~sbansal/csl373/pintos/doc/pintos_html/init_8c-source.html FILESYS の定義が見つかりませんどこでも。誰かがここで私を助けてくれますか?

0 投票する
0 に答える
1367 参照

linux - bochs を使用した printf() の呼び出し時の Pintos カーネル トリプル フォールト

Ubuntu を実行している自宅のコンピューターで作業している Pintos プロジェクトを始めたばかりです。

ディレクトリからプロジェクトをコンパイルできsrc/threads/、最初のテストpintos run alarm-multipleは問題なく動作しているようです (デフォルトで qemu が実行されることに注意してください)。

しかし、bochsエミュレーターでこのテストを実行すると、printf()から最初に呼び出されたように見える をヒットするとすぐにパニックになりread_command_line()ます。

ピント:

ピントス-gdb:

ご覧のとおり、gdb で (continue) コマンドを実行するとすぐに、 の呼び出し時にcpintos がクラッシュします。read_command_line()printf()

ベースラインの Pintos コードに大幅な変更を加えたとは思いません。この関数呼び出しで bochs をパニックに陥れている可能性があるのは何ですか? この同じテストを qemu で実行しても、この問題はないようです。

0 投票する
1 に答える
3201 参照

kernel - pintos インストール中の「__stack_chk_fail」への未定義の参照

Ubuntu 13.10 に pintos をインストールしようとしていますが、スレッド フォルダーで「make」コマンドを実行中にエラーが発生しました

"`__stack_chk_fail' への未定義の参照は、make[1] に従っています: * [kernel.o] エラー 1 "

初めてこのエラーに遭遇したので、これを理解できません。

0 投票する
1 に答える
510 参照

64-bit - IA32 EFER.LME 設定時のトリプルフォルト

私たちは Pintos と呼ばれる教育用オペレーティング システムに取り組んでおり、仮想化をサポートするようにセットアップしようとしています。32 ビットで実行されているバージョンから開始し、最初のステップは 64 ビット モードに切り替えて、そこから続行することです。Bochs 経由で Pintos を実行しています。

Intel Programmer's Manual (第 9.8.5 巻、第 3 巻) でこれを行う手順を調べました。IA32e モードを有効にするために IA32 EFER.LME ビットを 1 に設定する場合、システムはトリプル フォールトを生成します。もう一度最初から作業を開始します。

これが私たちが取り組んできたコードです。

トリプルフォールトを生成する可能性がある Intel によって提案されたすべての可能なケースの中で、これが唯一の合理的な原因であると思われたため、独自の TSS をセットアップしようとしました。

トリプルフォールトが生成されている理由は何ですか? すべてが明確で、手順に従っているように見えますが、それでもカーネル パニック攻撃が発生します。

0 投票する
1 に答える
1488 参照

memory-management - カーネルがユーザーページ用に別の仮想アドレスを持っているのはなぜですか?

私はこの声明について混乱しています:

http://web.stanford.edu/class/cs140/projects/pintos/pintos_4.html#SEC63から:

Pintos では、すべてのユーザー仮想ページがそのカーネル仮想ページにエイリアスされます。

カーネルはユーザー仮想アドレスを使用してユーザーページを参照でき、その上にカーネル仮想アドレスがあると思いました。たとえば、下の画像では、VAS 全体が 0 ~ 4GB であり、ユーザーの仮想アドレス空間は PHYS_BASE より下のアドレスに制限され、カーネルはそれより上のアドレスにもアクセスできるのではないでしょうか?

仮想メモリ マップ
( http://web.stanford.edu/class/cs140/cgi-bin/section/10sp-proj3.pdfより)

ただし、PintOS のドキュメントが続いているため、これはどのように機能するようには見えません。

これらのエイリアスは何らかの方法で管理する必要があります。たとえば、コードで両方のアドレスのアクセス ビットとダーティ ビットをチェックして更新できます。別の方法として、カーネルは、ユーザー仮想アドレスを介してのみユーザー データにアクセスすることで、問題を回避することができます。

これは、カーネルが別のカーネル仮想アドレスを介してユーザー データにアクセスできることを意味します。2 つのアドレスが異なる理由はわかりません。

明確にしていただきありがとうございます。