page-tables

    0

    1答えて

    アドレスがプロセスに属していないアドレス空間にマップされる可能性があるため、セキュリティ上の理由から同じものを許可しないと意味があります。しかし、それがアクセスできるアドレスのページテーブルエントリを変更するために変更することはできますか?

    2

    1答えて

    ページサイズがISAの一部として指定されている理由を理解しようとしています。 具体的には、ハードウェアモジュール(MMU、TLB)(オペレーティングシステムを除く)がページサイズ情報を使用して特定の機能を提供する詳細を探しています。 ページサイズがOSによって決定されるのではなく、ISAの一部でなければならない理由を教えてください。 ありがとうございました。

    2

    1答えて

    、page-sizeの4KBとpage-entryサイズの4B 32ビットマシンがあれば今、私は、階層ページテーブル構造ではOS にメモリ管理を勉強しています。 アドレスは私が20 - 12を知っ10-10-12 に分けビットである理由、12ビットは4Kバイトでoffset値です - > 2^12しかし、20ビットは10-10 がそれであるになる理由11-9または12-8に不可能ですか?

    1

    1答えて

    私は、各プロセスが別々のページテーブルを持つことができ、TTBR0/1_EL1を更新することによってコンテキスト切り替え中にポイントできることを理解します。各プロセスのページテーブルの内側には、プロセス固有のエントリ(nG = 1)と、他のエントリが共通リソース(nG = 0)を指すエントリがあります。 ページテーブルエントリ(PTE)が1つのプロセスのページテーブルでグローバルとしてマークされて

    0

    2答えて

    現在、私は研究関連のプログラムをいくつか開発しており、特定のアドレスのpteが必要です。私の開発環境はJuno r1ボード(CPUはA53とA57)であり、arm64 Linuxカーネルを実行しています。私はこのようないくつかの典型的なページ・テーブル・ウォーク・コード使用 : int find_physical_pte(void *addr) { pgd_t *pgd; p

    1

    1答えて

    私は、メモリのページ構造について読み、いくつかのポイントを取得することはできません。 ページテーブルを:私は(インテルi5のような)プロセスを理解できるようにページを持っていますテーブルとその結晶に統合されたTLB、それはありませんか?しかし、このテーブルには仮想ページのアドレスが含まれていないので、OSは動作可能なメモリ内にまだ1つのページテーブルを持っていなければなりません。そう? 反転テーブ

    0

    1答えて

    4 GiBのRAMがあり、ページテーブルのサイズが4 kiBで、32ビットアドレスが使用されているとします。 は私の計算の後、私が得た: 我々は唯一の2^32個のアドレスの最大に対処することができます。 各ページテーブルには合計2^20エントリがあります。 合計で4 GiB/4 kiB = 1048576ページあります。 私は理解できませんが、ページテーブルに2^20のエントリがある場合、このペー

    0

    2答えて

    私の知る限り、CPUのメモリアクセスには、CPUキャッシュとMMUが関係しています。 CPUはキャッシュ内のターゲットを見つけようとします。キャッシュミスが発生すると、CPUはMMUに変わります。 MMUによるアクセス中に、対応するページテーブルエントリのアクセス/ダーティビットがハードウェアによって設定されます。 私が知っている限り、ほとんどのCPU設計では、キャッシュミスがないかぎりMMUがト

    0

    1答えて

    アドレスバスと24ビットデータバスを備えたプロセッサXYZがあるとします。 XYZは仮想メモリとデマンドページングをサポートしています。論理アドレスから物理アドレスへの変換では、最初の12個の最上位アドレスビットがページ番号に対応し、最後の12ビットがオフセットとして使用されます。 a)XYZでサポートできる物理メモリページの最大数はいくつですか? b)そして、メモリページのサイズは何バイトですか

    3

    1答えて

    Rustのメモリ割り当てメカニズム(nightly alloc_apiを含む)を使用して大きなメモリを割り当てると、ページテーブルを事前に設定することができない、つまりmmapのMAP_POPULATEオプションを再作成することができません。代わりに、大きな領域のメモリを割り当てる必要があるときは、libc::mmapを使用します。 Vec<usize>またはをループしてページフォールトをトリガー