「Androidを支える技術<II>」の3章を読みました。
Androidは通常2次記憶がフラッシュメモリなので書き込みが遅く書き込み回数にも制限があるためスワップがない。そのため通常のLinuxよりもメモリ不足に陥りやすい。
Linuxはメモリに比較的余裕がある時にメモリの空きを作るためにファイルシステム独自のディスクキャッシュの開放を行うドライバを登録できるがここにlowmemorykillerを用いる。さらにメモリが不足する異常事態でメモリの空きを作るOOM Killerにおいて重要度の低いプロセスから削除されるようにActivityManagerServiceがlmkdに依頼してスコアを管理する。このスコアはlowmemorykillerでも共通に使用する。
Androidはどの位普通のLinuxと違うのか疑問に思っていたので大分すっきりしました。