Вот правил я вчера boot.wim и с сожалением наблюдал бешеную активность жесткого диска. Пришли мысли о том, что в ОС на функциональном языке не программы, а ядро должно решать, где будут располагаться обрабатываемые данные -- в памяти или на диске.
Файл boot.wim занимает 280 МБ, а в системе свободно порядка 1,5 ГБ ОЗУ. Почему нельзя однократно считать файл, проделать все необходимые изменения в памяти и сохранить? Но нет, инфраструктура DISM выполнена в идеологии файловых систем и не поддается такой настройке.
Вообще, перераспределение памяти между рабочей областью и кэшем -- непростая задача. Сейчас ОС и программы лишь делают некоторые предположения, сколько памяти им может быть доступно и насколько (не)экономно ее можно использовать. Довольно часто эти предположения не совпадают с реальной практикой и ожиданиями пользователей, как случилось у меня.
А вот ОС на функциональном языке, опираясь на предсказуемость программ, сможет точно оценить, сколько памяти потребуется для выполнения той или иной команды, как это делает построитель планов и оптимизатор запросов в СУБД. Соответственно, сами программы должны быть подвержены планированию, то есть не быть "черными ящиками", написанными на Си.
Другая важная задача, которую может решить предсказуемая среда -- совмещение рабочей области и кэша. СУБД ведь считывает с диска не наборы байт, а блоки данных, привязанные к конкретным таблицам. Если блок находится в памяти, повторно он не читается, а обрабатывается в памяти.
Блок данных СУБД -- типичный пример совмещения рабочей области и кэша. Если построить ОС по такому принципу, КПД использования ОЗУ увеличится, и ОС сможет активней считывать и обрабатывать в памяти большие объекты, пропорционально объему ОЗУ. В этих условиях виртуальная память переосмысливается и становится временым хранилищем по запросу.
Если ОС заранее знает, что какие-то данные целиком в память не поместятся, для выполнения конкретной задачи организуется временное хранилище, куда записываются промежуточные результаты. Временное хранилище резервируется по итогам планирования выполнения. По этому принципу работают СУБД, он позволяет им обрабатывать огромные массивы данных за приемлемое время.