質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
OS

OS(オペレーティングシステム)は、システムソフトウェアの一種であり、一般的に、ハードウェアを直接的に管理・操作する最も中心的な機能を有するソフトウェアがオペレーティングシステムとして呼ばれます。

アーキテクチャ

アーキテクチャとは、情報システム(ハードウェア、OS、アプリケーション、ネットワーク等)の設計方法、設計思想、設計思想に基づいて構築されたシステム構造をアーキテクチャと呼びます

Q&A

解決済

1回答

3423閲覧

スワッピング機能を無効にするとオンデマンドページングも無効になりますか?

strike1217

総合スコア651

OS

OS(オペレーティングシステム)は、システムソフトウェアの一種であり、一般的に、ハードウェアを直接的に管理・操作する最も中心的な機能を有するソフトウェアがオペレーティングシステムとして呼ばれます。

アーキテクチャ

アーキテクチャとは、情報システム(ハードウェア、OS、アプリケーション、ネットワーク等)の設計方法、設計思想、設計思想に基づいて構築されたシステム構造をアーキテクチャと呼びます

1グッド

1クリップ

投稿2017/06/08 10:27

編集2017/06/08 10:28

メモリ管理方式として、ページング方式が採用された初期の頃は、プロセスの全ページをメモリにロードしていたようです。
その後オンデマンドページング方式が発案され、現在はこちらが主流のようです。

仮想記憶という言葉には2つの意味があると思います。(ここすごく紛らわしいです。)
1、プロセスが持つ論理アドレス空間
2、スワップなどのHDD内にある記憶領域

スワッピングの機能は、仮想記憶2の方で、メモリ不足になった時に、プロセスが使用していない領域を補助記憶装置に戻しますよね。
(スワップアウト、スワップインの単位はページ単位とプロセス単位があるようです。OSによって異なるそうです。)
ここでは、ページ単位に絞ります。

スワップイン、スワップアウトがページ単位で行われる場合・・・
確認です。
ページインとスワップインは同じような意味ですよね?
ページアウトとスワップアウトは同じ意味ですよね?

よくメインメモリにかなりの容量(32GBなどなど)を搭載している方とかは、windowsでもlinuxでも仮想記憶(スワップ機能)を無効にしていると思います。自分も無効にしています。
(windowsではコントロールパネルから、linuxではスワップパーティションを持たないといことです。)

自分は、長い間、スワップ機能を無効にすると「スワップアウトの方だけが無効になる」と思っていましたが、
スワップイン・・・すなわちオンデマンドページング(ページイン)の方も無効になるのでしょうか?
(実際に、スワップ機能を無効にするとスワップアウトは無効になりますよね。)(こちらの理解は正しいはずです。)

メインメモリが大容量であるなら、オンデマンドページング方式でなくても、昔のプロセスの全ページをロードする方式でも問題ないので、スワップ機能を無効にするとオンデマンドなページインの方が無効になるのか気になりました。

用語が同じなので、前提の部分の理解が間違っているかもしれません。
ページングファイルとスワップファイルは同じでスワップ領域(HDD)のこと

ページ単位でのスワップアウトとスワップインを行う場合は、
ページイン=スワップイン、ページアウト=スワップアウトと考えていますが・・・

現在では、スワップイン、スワップアウトはプロセス単位で行うのが主流なのですか?
スワップ機能がプロセス単位だった場合、スワップインとページイン及びスワップアウトとページアウトはそれぞれ別物ですよね?
となるとページングファイルとスワップファイルも別物ということですよね?

長いのですが、分かる方教えてください。

i50👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ページング方式が採用された初期の頃は、プロセスの全ページをメモリにロードしていたようです。

プログラムの全体を、実行前に、プログラムファイルからメモリにロードしていた。

スワップイン、スワップアウトがページ単位で行われる場合・・・

ページインとスワップインは同じような意味ですよね?
ページアウトとスワップアウトは同じ意味ですよね?

はい。同じ意味です。

自分は、長い間、スワップ機能を無効にすると「スワップアウトの方だけが無効になる」と思っていましたが、

スワップイン・・・すなわちオンデマンドページング(ページイン)の方も無効になるのでしょうか?

ページファイル(スワップファイル)が無い場合、ページイン(スワップイン)は起こりようが無いです。
ページファイルから物理メモリに内容を読み込むのがページインです。

オンデマンドページングというのは、プログラムの未割り当ての論理ページにアクセスがあった時点で物理ページを割り当ててプログラムファイルからロードするということであり、ページインとは別物です。ページファイルの有無とは関係ないです。

現在では、スワップイン、スワップアウトはプロセス単位で行うのが主流なのですか?

ページングが主流だと思います。

スワップ機能がプロセス単位だった場合、スワップインとページイン及びスワップアウトとページアウトはそれぞれ別物ですよね?

別物ですね。

となるとページングファイルとスワップファイルも別物ということですよね?

プロセス単位のスワッピングと、ページ単位のページングの両方を行うOSの場合、共用して1つのファイル(ディスク、パーティション)でしょうね。

投稿2017/06/08 13:55

編集2017/06/08 14:18
otn

総合スコア84499

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2017/06/08 14:22

書いてから思いましたが、ページファイルからの読み込みだけでなく、プログラムファイルからの読み込みもお書きのようにページインと呼ぶということがあるのかもしれません。ページアウトの対義語じゃ無くなりますが。
strike1217

2017/06/08 14:39 編集

あああ~~ やはり、ページインという言葉にも2つの意味が含まれていると考えられる訳ですね! プログラムファイルからのページイン。 スワップファイル(ページファイル)からのページイン。 かなり紛らわしいですね・・・
strike1217

2017/06/08 14:39

プロセス単位のスワッピングと、ページ単位のページングの両方を行うOS・・・ ハイブリッドなものがあるんですか! 初めて知りました。
KSwordOfHaste

2017/06/08 14:46

メモリーマップドファイルなどを考えればページアウトはそのファイルへ、ページインはそのファイルからになると思います。そういう意味では対義語になるといってもよい気がします? executableのtextはreadonlyなのでページアウトは確かにないですけど。 何気なく使っていたswap in/out, page in/outの正確な意味をあらためて聞かれると「うーん」となってしまいました。自分はてっきりswap fileへのin/outがswap in/outだと思い込んでましたが検索するとどうもそうではないような…
otn

2017/06/08 14:53

メモリーマップドファイルファイルの場合はイン・アウト対応しますね。 それもオンデマンドの内か。そうですね。 プログラムファイルからの読み込みをページインと呼ぶのには違和感あるのですが、パフォーマンス監視ツールの表示するページイン回数には含まれていそうな気がします。となると、そっちが主流派か。
otn

2017/06/08 15:05

> ハイブリッドなものがあるんですか! メインフレームのzOSがそうですね。メモリ不足と言うより、システム全体の負荷が上がると、ワークロードマネージャが選択したプロセスがスワップアウトされ、CPU割り当ての待ち行列からも外れます。 スワップアウト時点では、すでに多くのページがページアウト済みのはずで、プロセスの残りのページが全部ページアウトされます。 つまり、この場合のスワップアウト=プロセスの全ページがページアウト&CPU割り当て行列からはずれる スワップインされた場合にも、その瞬間に全ページがページインするわけじゃ無いです。
strike1217

2017/06/09 01:00

んーー 逆に プログラムファイルへページアウトなんて存在するんですか? ページアウトは専用のファイル(ページファイル)を用意しておいて、そこに対する退避ですよね・・・ 元のプログラムファイルに退避するOSなんてあるんですかね・・・
strike1217

2017/06/09 01:09

「スワップアウト=プロセスの全ページがページアウト&CPU割り当て行列からはずれる スワップインされた場合にも、その瞬間に全ページがページインするわけじゃ無いです。」 なるほど! そうですか!!
KSwordOfHaste

2017/06/09 01:19 編集

> プログラムファイルへページアウトなんて存在するんですか? すくなくともLinux/Mac/Windowsではそれはないと思います。プログラムファイルは大抵「実行によって中身が書き換わらない」こと前提で設計すると思います。そうしなければ同一executable fileを複数のプロセスで実行することが不可能になると思います。 「システム内にbashは1プロセスだけ」なんて制限がLinuxについたとしたら破綻しますね・・・
strike1217

2017/06/09 01:27

コメントを見ていて思ったのですが・・・ スワップインとページインの区別は分かりました。 そもそも プログラムファイルからページ単位で物理メモリへの割り当てをページインと言いますよね? プログラムファイルからの読み込みをページインと呼ぶのは本来は違うんですか? ファイル(HDD)から物理メモリへ・・・という意味でページインという言葉は同じ気がするんですが・・・
KSwordOfHaste

2017/06/09 01:48 編集

質問テーマからずれていないとはいえ、コメント欄で長い議論はお勧めできません。質問する内容はなるべく端的にピンポイントで・・・そうすれば回答も端的に行えます。 質問項目が多いのはお勧めできません。議論が発散しがちになりますし。わからないことが多い状態で質問するのではなくそれらをよく調べて不明点のみ尋ねるのがよい質問だと思います。
otn

2017/06/09 04:06

> プログラムファイルからページ単位で物理メモリへの割り当てをページインと言いますよね? > プログラムファイルからの読み込みをページインと呼ぶのは本来は違うんですか? プログラムのオンデマンドロードが生まれる前、つまり、プログラム開始時点でプログラムファイル全体をメモリにロードしていた時は、それをページインとは呼んでないです。 オンデマンドで、かつ、ページ単位での読み込みであれば、ページインと呼ぶのもありでしょう。
strike1217

2017/06/09 06:20

なるほど・・・ わかりました。 では、まとめますと・・・ 結論は、ページインには意味が2つあり、スワップ機能を無効にするとページングファイルにおけるページイン、ページアウトは無効になるが、プログラムファイルからのページインは無効にはならないということでよろしいですかね。
otn

2017/06/09 06:24

そういうことでしょう。
strike1217

2017/06/09 06:48

わかりました。 ありがとうございます。
strike1217

2017/06/09 07:52

すいません。最後に1つ。 「仮想記憶」という言葉を聞いたら、一般的にスワップの方かプロセスが独自にもつ仮想空間かどちらを真っ先に想像しますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問