ページアウト
メモリの中身を一時的にハードディスクに移すよ
メモリが足りないときにやるよ
ページング方式における呼び名だと思うけど「スワップアウト」や「ロールアウト」との使い分けはされていないことが多いよ
簡単に書くよ
ページアウト(英:page-out)とは
メモリの中身を一時的にハードディスクに書き出すこと。
あるいは
メモリの中身を一時的にハードディスクに書き出すこと……を指す、ページング方式における呼び名
です。
詳しく書くよ
順番に見ていきましょう。
今回 登場するメモリは「パソコンさんが作業するときに使う机」です。
実はですね。
プログラムから見たメモリの大きさと実際にコンピュータにくっついているメモリの大きさは違います。
メモリ内のどーでもいい内容をハードディスクに一時的にしまうことで(ハードディスクの一部をメモリっぽく使うことで)、プログラムに対して実際のメモリより大きなメモリがあると錯覚させる技があるのです。
例えば、そうですね。
コンピュータにくっついている実際のメモリが10GBだったとしましょう。
普通に考えたら、同時に動かせるプログラムはメモリ10GB分ですよね?
使うメモリが6GBのプログラムと4GBのプログラムは同時に動かせます。
6GBのプログラムと5GBのプログラムは同時に動かせません。
1GB分、足りないからです。
ところがです。
使うメモリが6GBのプログラムと5GBのプログラムを同時に動かす技があるのです。
まず、使うメモリが6GBのプログラム1を起動します。
そうすると、メモリが6GB分、使われます。
次に、6GBのうち、あまり使わない1GB分をハードディスクにしまってしまいます。
最初はメモリを6GB使っていました。
これを、メモリ5GBとハードディスク1GBに分けるのです。
そうすると、メモリの空いている部分は5GBです。
メモリを5GB使うプログラム2を起動できます。
ところで、プログラム1がハードディスクにしまった1GB分を使いたくなったら、どうしましょうね?
使うときはメモリに持ってこなくては いけません。
ですが、メモリは10GB分、全部 使っている状態です。
そんなときは、プログラム2から1GB分、ハードディスクに移します。
プログラム2はメモリを5GB使っていました。
これを、メモリ4GBとハードディスク1GBに移し替えるのです。
そうすると、メモリには1GB分の空きが できます。
この空いた部分にプログラム1で使う1GBを移します。
このような工夫と譲り合いの精神を発揮できれば素敵です。
実際のメモリが10GBでも合計11GBのメモリを使うプログラムを動かせます。
これは もう「メモリが11GBあるのと一緒」ですね。
実際のメモリは10GBです。
ですが、プログラムさんはメモリを11GB分使っています。
「プログラムから見たメモリは11GBある」と言えるでしょう。
このような「ハードディスクの一部をメモリっぽく使うことで、実際のメモリより大きなメモリがあると錯覚させる技」を「スワップ」と言います。
メモリを使い切った状態で「もっと~!もっと使いたいの~!」とプログラムさんに言われました。
でも、メモリの空きは ありません。
仕方がないので、メモリの一部をハードディスクに移して、メモリの空きを作ります。
そんな技です。
ハードディスクを上手く活用することで、メモリの水増しをします。
さて、スワップの仕組みにおいて、メモリの内容をハードディスクに移しました。
この「メモリの内容をハードディスクに移す」ことを、専門用語で「スワップアウト」と言います。
……書くのが疲れました。
少し休憩します。
ここまでで話は一区切りです。
一旦、コーヒーブレイクでもして、頭をリフレッシュしてください。

リフレッシュできましたか?
それでは、続きを見ていきましょう。
先ほど
メモリの内容をハードディスクに移す
と書きました。
このとき、メモリの内容を全部ハードディスクに移すわけでは ありません。
メモリの内容の「一部」を移します。
ということはですよ。
メモリをぶった切るわけです。
メモリをぶった切って、小さくなったものの一部をハードディスクに移します。
実は、このときのぶった切り方には、大きく分けて2つのやり方があります。
それは
・ページング方式
・セグメント方式
の2つです。
例えば、そうですね。
メモリ上にExcelのファイルとWordのファイルが広げられていたとします。
このとき、ExcelのファイルとWordのファイルの大きさが同じとは限りません。
中身がいっぱいであれば大きくなりますし、まだ少ししかなければ小さくなります。
おっと、メモリの空きが足りなくなったようです。
コンピュータさんは、メモリの一部をハードディスクに移すことにしました。
ページング方式とセグメント方式では、ここからが違います。
まずはページング方式から見てみましょう。
コンピュータさんは、メモリの縦横に切れ目を入れて、それぞれが同じ大きさになるように分割します。
これで、同じ大きさの細かい破片がいっぱいできましたね。
この同じ大きさの細かい破片を「ページ」と呼びます。
このページ単位で移動させるのがページング方式です。
ページング方式では、移動させるものは全部同じ大きさです。
あらかじめ同じ大きさにぶった切っていますからね。
それに対して、セグメント方式では、移動を(本当は少し違いますが)ファイル単位でやります。
セグメント方式における、まとめて移動する一塊は「セグメント」と呼びます。
ファイルの大きさは、それぞれ違いますよね?
ですから、セグメントの大きさもそれぞれ異なります。
セグメント方式では、移動させるものの大きさはバラバラなのです。
違いをまとめると
■ページング方式
・メモリの中身を同じ大きさのページ単位で管理する やり方
■セグメント方式
・メモリの中身を大きさの異なる(同じ大きさとは限らない)セグメント単位で管理する やり方
に なります。
ふぃー、長らくお待たせしました。
ここまでを踏まえて
メモリの内容をハードディスクに移す
のが「ページアウト」です。
つまり、スワップアウトの別の表現ですね。
あるいは、メモリの内容をハードディスクに移すことを指す「ページング方式における呼び名」が「ページアウト」です。
つまり、スワップアウトのページング方式における呼び名ですね。
「ページ」を「アウト」するのですから、個人的には、ページング方式におけるスワップアウトっぽい動作を指す用語に思えます。
ですが、実際にはあまり使い分けをされていないのが現実です。
ややこしいですね。
さらに、おまけで説明しておきましょう。
スワップアウトやページアウトと同じような意味の用語で「ロールアウト」という用語もあります。
個人的な理解では
スワップアウト:メモリの中身をハードディスクに書き出すこと
ページアウト:スワップアウトのページング方式における呼び名
ロールアウト:スワップアウトのセグメント方式における呼び名
です。
ただし、一般的には
スワップアウト:メモリの中身をハードディスクに書き出すこと
ページアウト:スワップアウトの別の表現
ロールアウト:スワップアウトの別の表現
と扱われることも少なくありません。
そこら辺の違いは、ゆるく解釈してください。
動作としては、すべて「メモリの内容をハードディスクに移す」です。
一言でまとめるよ
まぁ「ページアウト」って単語が出てきたら「メモリの中身をハードディスクに書き出すんだな~」と お考えください。
おまけ
■訳してみるよ
「page(ページ)」はカタカナで「ページ」で分かりますかね。
「out(アウト)」の意味は「外に」とかです。
何となく くっつけると
ページを外に
となります。






