• 締切済み

論理・物理アドレスに関する問題。

物理メモリ128Mバイトしかないパソコンで1Gバイトの論理メモリ空間を実現する場合でページサイズ4Kのページング方式を採用したとき、物理メモリページは何ページ格納できるかを求めるという問題なのですが・・・・・・。この問題はどう解けばいいのでしょうか? 128Mバイト=27ビット 4Kバイト=12ビット 1Gバイト=30ビット から 物理アドレス=27ビット? 仮想アドレス=30ビット? ということから求める?にしてもこのあとがとけません。

みんなの回答

  • Donotrely
  • ベストアンサー率41% (537/1280)
回答No.1

>物理メモリページは何ページ格納できるか どこにですか?物理メモリにですか? ディスクにですか?

gramonday
質問者

補足

ごめんなさい。「物理メモリに」ですね。 もしディスクに格納する場合もわかるなら教えていただきたいです。

関連するQ&A

  • 論理・物理アドレスに関する問題(まとめて)

    以前にうpしたのですが、明確な答えが返ってこないので、まとめていきます。 まず、物理メモリ容量128Mバイトしかないパソコンで1Gバイトの論理メモリ空間を実現する場合について、以下の問題について (1)ページサイズ4Kバイトのページング方式を採用した場合、物理メモリページは何ページ格納できるか?(物理メモリに) (2)論理/物理変換用のページテーブルの大きさは何エントリになるのでしょうか?

  • 仮想メモリ

    16ビットの仮想アドレス空間を持つ場合のページング処理について考える。 ページテーブルサイズを8とする。 主記憶の実ページ(物理ページ)の大きさを求めよ。 という問題がわかりません。 仮想メモリについて理解できてきないのだと考え色々調べましたがよくわからなかったです。 仮想アドレス空間と主記憶上の実ページの関係が上手くイメージできないです。 どなたか答えと解説をお願いします。

  • 仮想記憶の問題について教えてください!

    仮想記憶の問題がなかなか解けません。宜しくお願いします。 問題は、 仮想アドレスビット幅:40ビット 物理アドレスビット幅:36ビット ページサイズ :16キロビット (1) 主記憶の容量は何Gバイトか? (2) この仮想記憶システムは主記憶の見かけの容量を実際の何倍に見せているか? (3) ページテーブルのサイズは何Mバイトか?ただし、ページテーブルの各エントリには4バイトを要する。 宜しくお願いします。

  • 仮想記憶システムの問題で…

    主記憶容量-----------------64Kバイト 仮想アドレス空間容量-------8Mバイト ページサイズ---------------8Kバイト ページ追い出しアルゴリズム-LRU (1)ページテーブルの各エントリは物理ページアドレスと9ビットの付加情報から構成されている。ページテーブルのサイズを求めよ。 (2)現在、主記憶上にはどのページも存在していないとする。この状態で、以下に示す仮想ページアドレスに対応する仮想ページが順にアクセスされた。  0, 1, 2, 3, 4, 5, 6, 7, 0, 3, 8, 4, 1, 0, 8 このときのページフォルトが発生する回数を求めよ。 …の2つがどうしてもよく分からないので、解説付きで教えてください。 よろしくお願いします。

  • 仮想アドレス空間

    こんにちは 仮想アドレス空間と仮想メモリはどういう関係ですか? 物理メモリと仮想メモリはわかりますがwindows 2000にある4GBの仮想アドレス空間と仮想メモリはどういうつながりがありますか?

  • 仮想記憶システムの問題です

    ページング方式の仮想記憶システムで、下記のように仮想アドレスを16ビットで表し、ページサイズを4096バイトとする。 4ビット           12ビット ページ番号        ページ内変位 この方式では、16ビットで仮想アドレスを表す。ここで、ページ番号が3で、ページ内変位が32である 仮想アドレスを16進数で表すと(1)となる。 回答群 ア.0000 イ.0010 ウ.0023 エ.3020 答えはエなのですが、途中式などが解りません。 解説をお願いします。

  • 物理メモリだけの使用なら、最適化などの作業はしなくて良い?

    よろしくお願いします。XPホームを使っています。 いま物理メモリが256MBです。近々、512MB増設して、768MBにする予定です。自分のPC使用の範囲なら、768MBあれば、仮想メモリは使わなくても、物理メモリだけで足りる予定です。 そこで質問ですが、ページングファイルを無効にして仮想メモリを無効にすれば、メモリの最適化という作業は、しないで良いのでしょうか? それとも、定期的に、なにかメンテナンスをした方が良いのでしょうか?

  • 物理アドレス拡張(PAE)とは

    私のPCはFUJITSU EX30X です。ビスタです。CPUは インテルCeleronM プロセッサー520 1.600Hz キャッシュメモリ 1次:32KB命令+32KBデータ 2次 1MB(CPU内蔵)チップセット モバイルインテルExpressチップセット です。 あるソフトを入れるのに32ビットなら物理アドレス拡張(PAE)対応してることが条件だそうです。物理アドレス拡張はどこで見ればわかりますか

  • プロセスについて

    アプリを起動するとプロセスが発生すると思うのですが、そのプロセスはまず仮想メモリアドレス空間に待機しその後物理メモリにて処理され、いっぱいだった場合はページングファイルが使われると思います。 その場合、1つのアプリでのプロセスが物理メモリとページングファイルに分かれることはあるのでしょうか?

  • Windowsの仮想メモリシステムについて

    こんにちは。 OSは現在、WindowsVistaと、Windows7を使っています。 こういったWindows系OS全てに共通している、仮想メモリなどのメモリ関係の用語について、かなり詳しく調べたのですが、最近、それらをきちんと理解できていない事に気づきましたので、今回の質問をさせて頂きます。 まず僕は、メモリ関係の各用語について、以下のように解釈しています。 ---------------------------------------------------------------------------------- ●物理メモリ 基本的にはRAM上にあるメモリの事であり、OSによってアクセスされる。 OSは起動後、各物理メモリに、物理アドレス(物理アドレス空間におけるアドレス)を割り当てる。 ●仮想メモリ領域 仮想メモリ領域は、各プロセスが、メモリを使うためにアクセスするアドレス空間の事であり、物理メモリと、次で説明するページファイルで構成されてる。 現在のWindows系OSでは、プロセスが起動すると、そのプロセスとセットになる、4GBの仮想メモリ領域 (仮想アドレス空間とも呼ばれる) が割り当てられ、実行するプログラムコードと、そのコードが参照して操作するデータが、そこにマップされる。 プロセスの持つ仮想メモリ空間4Gバイトの内、ユーザが使用可能なメモリ領域は、下位2Gバイトであり、上位2Gバイトはシステムによって使用される、「カーネルメモリ」となる。 OSと、コンピュータ上の専用のハードウェアコンポーネントは、プロセスが使用している仮想アドレスを、物理アドレスに変換する処理を行っている。 Windowsの場合、仮想メモリの各フラグメントを、「ページ」といい、サイズは通常 4KB である。 ●ページファイル 物理メモリの不足を補うために、HDDに用意されたメモリ領域の事である。 デフォルトではC:\pagefile.sys というファイルが、ページファイルとなっている。 これによって、RAM容量よりも大きなサイズの、仮想メモリ空間を利用することができる。 ページファイル上に置かれたページにアクセスするには、そのページをRAM上に読み込まなければならないため、現在使われていないRAM上のページとの入れ替えが、OSによって行われる。 このとき、RAM上の不要なページをページファイルに書き出し、RAMから消去することを「ページアウト」あるいは「スワップアウト」と呼び、必要なページをページファイルから読み出し、RAM上に配置することを「ページイン」あるいは「スワップイン」という。 ●コミットページ(コミットチャージ) プロセスに割り当てられた、使用可能な仮想メモリページ全てを表す。 これには、RAMからページアウトされたメモリページも含まれまれる。 コミットページの合計サイズと現在使用中のサイズは、タスクマネージャのパフォーマンスタブにある[ページファイル]の部分で確認できる。 この[ページファイル]という部分は、上で説明したページファイルの事ではなく、 RAMとページファイルの両方に存在している、メモリページのサイズを意味する。 ●ワーキングセットページ プロセスから最も頻繁かつ直近にアクセスされる、常にRAM上にあるメモリページの事である。 ワーキングセットページには、そのプロセスしか使えない部分(プライベートワーキングセット)と、他のプロセスと共有可能な部分がある。 共有可能なワーキングセットは、他のユーザープロセスで、物理メモリが不足し始めた場合に使用できる。 ----------------------------------------------------------------------------------- まず、以上の解釈で、おかしいと思う部分がありましたら、どしどし突っ込んで下さい。 次に、以下のようなコードブロックを含む、C++プログラムを作成して実行しました。 ------------------------------------------------------------ char *p; for(int i=1; i<=2000 ; i++) p=new char[1024*1024]; ------------------------------------------------------------ このコードブロックは、pというポインタに対し、1024×1024B = 1MB のメモリの割り当て作業を、2000回行います。 つまり、このプログラムをビルドして作成された、a.exeという実行ファイルを実行すると、 約2000MBのメモリがa.exeに割り当てられるという事が予想できます。 プログラムの実行中に、タスクマネージャのプロセスタブにある、a.exeの行を見ていると、 メモリに関する列項目値は、 コミットサイズ:2012.928KB=1965.75MB ワーキングセット:4616KB=4.51MB プライベートワーキングセット(a.exeしか使えないワーキングセット):2656KB=2.59MB となっていました。 ワーキングセットページのサイズが4.51MBとしかない事から、約2000MBのメモリの割り当ての大半は、RAM上にはないメモリページ、つまりページファイル上のメモリページを使って行われたのだと、僕は思いました。 ところが、ページファイル上のメモリページの使用量を、専用のソフトで調べてみると、 a.exeの実行前から全く変化していなかったので、実際はページファイル上のメモリページを使用しなかったのだという事になります。 では一体、どこにあるメモリページが、a.exeで使用されたのかという事になります。 この件について、皆さんはどう思われるでしょうか? 長くなりましたが以上です。 何か御存じの方がいらっしゃれば、是非、アドバイスして頂きたく思います。 では、よろしくお願い致します。