問題タブ [xv6]
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.
c - シェルはコマンドを認識しているようですが、実行しません
unix ライクな xv6 OS のシェル プログラムで基本的なコマンド実行を実装しようとしています。私が編集しているシェル コードの一部は、ターミナルで使用されるコマンドを実行するために execvp コマンドを使用している runcmd 関数です。プログラムをコンパイルするとエラーは発生しませんが、コマンド ラインでコマンドを入力しようとしても何も起こりません。exec コマンドのman ページを読みましたが、これらの引数を exec() コマンドで渡す必要がある適切な方法や、どのバージョンの exec() をいつ使用するかについてはまだよくわかりません。 OSプログラミングにはまだ非常に慣れていません。
コマンドを実行するために追加する必要がある、ここで実装していないものは何ですか? 以下の runcmd 関数のコードがあります。
編集:
各コマンドのバイナリへのパスを含む exec ステートメントを追加しました。ただし、最初の exec コマンド (この場合は cd) のみが機能します。他のコマンドを使用すると、コマンド ラインはそれを CD のように実行します。複数のコマンドで動作させるにはどうすればよいですか?
xv6 - xv6 で現在実行中のプロセスにアクセスしますか?
そのため、xv6 で現在実行中のプロセスのリストにアクセスする方法を考えています。私が考えたプロセスは、ptable にアクセスできるようにすることです。そのため、ptable をループして、実行中のすべてのカウンターをインクリメントできます。ただし、システムコールを作成している場合(sysproc.cに書き込む場合)、proc専用であるように見えるため(私にはまだ突っついています)、ptableにアクセスできません。 c
ループして実行中のプロセスを見つけるためにテーブルにアクセスできる方法はありますか、それとも検討すべき別のアプローチがありますか?
編集:ヘッダーファイル内にカウンター変数を作成し、プロセスが作成されるたびにインクリメントし、プロセスが終了するとデクリメントする方が簡単でしょうか?
linux-kernel - xv6 ブートローダーのメモリ範囲
book-rev8 (2014 年 9 月 3 日時点のドラフト 95 ページ) から、次のように述べられています。
「ブートローダー自体は0x7c00 through 0x7d00
」にあります0x7d00 - 0x7c00
が256 bytes
、そうではありません512 byes
(BIOS はディスクから読み取ります512 bytes
)。
なので、ブートローダー自体は にあると思いますが、それが0x7c00 through 0x7e00
正しいかどうかはわかりません。
c - xv6 オペレーティング システムで ac プログラムを実行する方法
xv6 OS は初めてです。xv6 で C プログラムを実行したかったのですが、C プログラムをコンパイルして実行するためのコマンドまたは何かが含まれていますか?
c - XV6 で停止したプロセスを実行する
2 つの新しいシステム コールを作成し、xv6 OS カーネルに追加しました。したがって、1 つのシステム コールを使用してプロセスの状態を保存し、別のシステム コールを使用して以前の状態をリロードして続行することができます。問題はリロードセクションにあります。
プロセスのコンテキストだけをリロードするだけで十分ですか? (struct context
つまり、CPUレジスタが含まれていることを意味します)