Лично я не вижу тут особой проблемы и темы для дискуссий. По идее, всю работу с файлами надо организовать через мапирование файлов в адресное пространство - если сама программа работает через read/write, то мапированием должна заниматься файловая система. А дальше вытеснение из памятьи происходит на общих основаниях.Хотя, конечно, есть некоторая разница:
- первыми на диск должны вытесняться данные, записанные в файл (их всё равно придётся записывать на диск, так лучше сделать это в момент, когда память понадобилась кому-то другому);
- затем из памяти следует выкидывать неизменные данные, уже записанные на диск (в первую очередь, код программ) - тут память можно освободить без обращения к диску;
- и наконец, в последнюю очередь следует записывать в swap данные работающих процессов.
Маленькое уточнение: кесли код программы используется несколькими процессами, то надо крепко подумать, прежде чем выкидывать его из памяти.