mcrash

page

書式

usage: page [-a] [address] | -n PFN

説明

Linuxは仮想アドレス方式になっています。 物理メモリはシステムで固定のページサイズごとに物理ページに分けられます。 メモリを管理するため、 すべての物理アドレスにはpage構造体が割り当てられています。 page構造体では、各ページの情報を管理しています。
ページサイズ
CPUやその他システムの制約によって決まっています。 x86のLinuxでは必ず4096バイトです。 その他のCPUではそれ以外のサイズになっていることもありますし、 更にCPUによってはカーネルのconfigで変更可能な場合もあります。

総物理メモリ量はLinuxが立ち上がってから増えたり減ったりしません (メモリは電源を落としている間に増設するものです)。 このため、page構造体の個数もLinuxが起動してから増えたり減ったりしません。 カーネル初期化時に、ポインタmem_mapで表されるアドレスから page構造体の配列が作られます。 -nオプションではmem_mapの配列の添字指定でpageを指定できます。

MAPPINGエントリはaddress_space で表示できます。 BUFFERSエントリはbuffer_head で表示できます。 ZONEエントリはzoneで表示できます。

pageのフリーリストはzoneにあります。

オプション

-a
ハッシュリストをたどって表示します。
-n
アドレスの代りに、ページフレーム番号で指定します。

エイリアス

標準で、mem_pagepageにエイリアスしています。

実行例

> page
    ADDR  MAPPING   INDEX CNT  BUFFERS  VIRTUAL     ZONE FLAGS
c1117040 ca5ee150     2a4   2 c45e3a20 c45c1000 c024f288 uptodate
c1117000 ca5ee150     2a5   2 c45e3a80 c45c0000 c024f288 uptodate
c1116fc0 ca5ee150     2a6   2 c45e3ae0 c45bf000 c024f288 uptodate
c1116f80 ca5ee150     2a7   2 c45e3b40 c45be000 c024f288 uptodate
c1145900 c53f3c70       0   2 c51756c0 c5164000 c024f288 ref uptodate active
c128e600 ca3f3870       0   2 ca3a21a0 ca398000 c024f288 ref uptodate
c11455c0 c53f3e50       0   2 c5175720 c5157000 c024f288 ref uptodate active
c128e3c0 ca3f3a50       0   2 ca3a2380 ca38f000 c024f288 ref uptodate
c1291a00 ca3f3c30       0   2 ca3a2620 ca468000 c024f288 ref uptodate checked
  (略)

> page -n 0
    ADDR  MAPPING   INDEX CNT  BUFFERS  VIRTUAL     ZONE FLAGS
c1000000        0       0   0        0 c0000000 c024f1e0 reserved


mcrash, Copyright (C) 2002,2003 ASANO Masahiro