Реализация баз данных не зависит от буферов и кешей ОС при доступе к файлам. Они предпочитают реализовывать собственную кеш-систему и получают прямой доступ к файлу на физическом диске , из-за проблем с надежностью: данные ДОЛЖНЫ быть сброшены на физический диск. (Они используют опцию O_DIRECT для прямого доступа к физическому диску.)
Три функции, которые вы нам показываете, заставляют меня думать об асинхронной обработке данных, поступающих с диска. (StartBufferIO (), TerminationBufferIO () и т. Д.). Честно говоря, я не уверен, какова их цель, но основываясь на том, что я знаю о реализации баз данных и этих именах функций, я бы сказал, что содержимое буфера может быть изменено самим "диском" с данными из файла на диске. (или какое-либо другое устройство), и поэтому должно быть помечено как volatile .
Эта гипотеза дополняет вашу обычную интерпретацию того, для чего обычно используется ключевое слово volatile : драйверы устройств.