問題タブ [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.

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

c - 数字の後に大文字の L

とは512Lどういう意味ですか? (または、大文字の L が後に続く任意の数字)

例:

uint sec そして、次の式のコード: sec * 512L

( XV6コードから抜粋 - mkfs.c)

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

linux - ヒープとスタックの間にガードページを配置するには?

xv6 で上向きのスタック (下向きのスタックがあった) を定義しましたが、スタックとヒープの間にガード ページを配置する方法を知りたいです。利用できる特定のシステムコールはありますか? また、その 1 ページのアドレス空間を常にスタックとヒープの間に配置するにはどうすればよいですか?

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

c - バックスペース = 0x100 の場合の Ascii またはスキャンコード、またはある種のキーボード入力

XV6 MIT のオープン ソース OS を使用しています。

BACKSPACE = 0x100 ができる地球上で把握しようとしていますか? 右矢印や左矢印などの機能を追加してコンソールを制御したいのですが、それらをキャプチャするための正しい数字が見つかりません。元:

それで、私の Q はどのテーブルにあり、 BACKSPACE = 0x100 ですか? ASCII ではありません ... スキャンコードで見つかりませんでした。Ubuntuでshowkeysコマンドを試しましたが、うまくいきませんでした。

もう少し経験のある人、またはたまたまオペレーティングシステムのMITコースを受講した人:)

どうもありがとう !

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

c - xv6 スケジューラ - proc never != 0

基本的に、マルチレベルのプライオリティ キューを実装する xv6 カーネル用のスケジューラを実装しています。私は理解できない深刻な問題を抱えており、私のコースの TA は理解していません。また、このプロジェクトの締め切りに間に合わなかったので、今私を助けても追加ポイントは得られませんが、知りたいです。なぜ私は次のような行動をとっています...

まず、これは私がxv6 用に変更している元のスケジューラです(比較のために - これは私の実装ではありません)。

新しいスケジューラのアイデアは次のとおりです。ptable 内に proc 構造体で満たされた配列があります。この proc 配列でこれらの各要素を 'p' と呼び、基本情報 (持っている「チケット」の数や状態など) を保持します。1 つのタイム スライスですべての優先度の高い (HP) p を実行してから、それらの優先度を低に変更する必要があります。HP proc がない場合、「ランダムに」LP proc を選択し、それを 2 つのタイム スライスで実行します。私のアルゴリズムは次のとおりです。

ここに問題があります... 私の proc は常に 0 に等しいように見えます。p に入れられた情報を見たことがない、p から proc 情報を収集していないなどです。理由はわかりません。

私は大量の出力ステートメントでテストしました。その出力を最初にここに投稿します。

繰り返しますが、なぜこれが機能しないのかわかりません...複数のエラーがあると確信しており、どこで問題が発生しているかを確認するためだけに大量のステートメントを出力しています。これにはかなりのデバッグ作業も必要なので、誰かが答えを持っているかどうかについて私はあまり楽観的ではありません...その目的のために、これらの警告とともに、ここに私のスケジューラ関数全体を示します。長々とすみません…

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

c - xv6 の cgaputc(int c) / uartputc(int c) / constputc( int c) の違いは何ですか?

xv6 MIT オペレーティング システムでは、/xv6 /console.cのいくつかの putc 関数の違いを理解しようとしています。

  1. static void cgaputc(int c)。
  2. void uartputc (int c)。
  3. static void constputc(int c)。

ありがとう!

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

pwd - xv6 で iget() が隠されている理由

Unix バージョン 6 の最新の実装であるxv6で少し遊んでいます。

私の最初のハックでは、単純な syscall を実装したかったのgetcwdですが、どのレベルの抽象化を使用すればよいかについて少し迷っています。

  • struct fileインターフェイスを使用する必要がありますか?
  • それともstruct inodeインターフェイス?
  • 重要なのは、純粋にユーザーランドに実装することさえできるようです。

struct inode私は操作でそれを実装し始めました。私の素朴な考えは、 を取得しproc->cwd、次にreadi()その 2 番目のエントリ ( ..) を取得し、それをスキャンして前inumの を取得する、というように、ルートに到達するまで再帰的に繰り返すというものでした。

パフォーマンスはあまり高くないようですが、最初のハックには適しています。

私の問題は、 s で取得した sからfs.c:iget()a を取得する必要があることです。私はそれが static で宣言されていないことに気付きましたが、これは私を少し悩ませますが、その理由を見つけることができません。struct inodeinumdirentiget()fs.cdefs.h

これが私の質問です。iget()カーネルの残りの部分から故意に隠されているのはなぜですか?