本当は怖いHPC

HPC屋の趣味&実益ブログ

メモリを「OSに返す」インターフェースって必要だよね。

メモリを「OSに返す」クロスプラットフォームなインターフェースが必要だと切実に思う。

Youtubeとかでメモリ上に動画を読み込むのは普通になってきたし、タブブラウザが主流になってブラウザを何時間(何日)も立ち上げっぱなしっていうのも普通になった。Youtubeを見たり、Gmailだけ開いていたり、その時々によって使用するメモリ量は極端に違うことがままあるけど、プロセスとしては一つのものがずっと走っている。

まぁ、これは違うウィンドウでもプロセスは同じっていう設計に寄るところも大きいのだけれど、やっぱり無視できない問題だと思う。コンピューターに搭載されるメモリが増えるスピードよりも、動画をダウンロード(ストリーミング?)できる環境が充実するほうが早いのは明らか。

知っている人にとっては常識だけど、C言語で言えばメモリをfree()したからと言って、OSにメモリが返却されるわけではない。libcの実装によっても違うけど、基本的にはmallocの管理下で再利用される。賢いmalloc()の実装であれば空いたメモリページをOSに返すと思うけど、そうそう都合よくページ単位で空くケースは発生しないし。フラグメンテーションとかいろいろ(ここら辺はOSが専門の人に譲るけど)。

たぶん、言語処理系の実行系がOS-dependentなlow-levelのシステムコールを呼んでメモリページを取得して返却するコードを明示的に書けば実現可能だと思うのだけど、それをOS毎にやるのは非現実的。ライブラリで持つべき動作だよね。

前回のカーネル読書会の後半の雑談でも出ていたけど、やっぱり言語処理系の仮想マシン向けのサポートをOSがすることは非常に重要だし、あるべき方向性だと思う。

【広告】