Machine Morning

機械学習やWebについて学んだことを記録しています。

purgeとは

purgeコマンドはMacのメモリを解放するコマンドである。

buffer cacheとpage cache

page cacheはデータの読み書きを高速化するためにデータをページとして一時的にメインメモリ上に保存することである。 buffer cacheは記憶階層やデータをやり取りする装置や回路ごとのデータの処理速度の違いを緩衝するもので、多くの場合メインメモリ上に保存される。 例えば最も高速にデータを処理できる記憶階層はCPUのレジスタであるが、CPUで処理されたデータをレジスタと同じ速度でROMに書き込むことはできない。それはレジスタの方が読み書きの速度が早く、ROMの方が遅いためである。したがって直接レジスタからROMに書き込みたい場合、ROMに処理されるまでデータをレジスタに溜めておかなければならない。すると、CPUで他の処理を行いたくても記憶階層や装置間の速度の違いによって、レジスタに無駄が生じ、CPUで他の処理が行えなくなってしまう。これを解消するために、処理の終わったデータがレジスタから一時的にbufferに格納され、そのことからI/O装置やROMへとデータが渡される。

レジスタとは

ちなみにCPUで処理されるデータは、処理する際メインメモリからレジスタに格納され、処理が終わると再びメインメモリの値を書き換える。したがって、同じ処理を複数回走らせると、一回目の処理が終わる前に、次の同じ処理が実行され、一回目の処理によってメモリの中身が書き換えられる前に、データをレジスタに読み込んでしまう可能性がある。

例として、 メモリにi=1が格納されているとして、これに i ++という処理をほぼ同時に3回実行すると、 メモリの中身は2, 3, 4のどれに書き換えられるかわからない。 それは、上述したとおり、前の処理によってメインメモリの中身が書き換えられる前に次の処理でメインメモリの中身を読み込んでしまう可能性があるからだ。