Кэширование файлов между процессами

Мне интересно знать, работает ли под Windows и Linux кэширование файлов между процессами? если процесс A читает весь файл, а новый процесс B хочет прочитать его части (или все), имеет ли смысл предполагать, что файл уже находится в памяти? или кэширование происходит только для файлового объекта в каждом процессе?

1 ответ

Решение

И Windows, и Linux кэшируют данные файла в системной памяти отдельно от процессов. Вы не можете делать какие-либо предположения о том, сколько файла, если таковой имеется, все еще находится в кэше в любой момент времени.

На высоком уровне операционная система поддерживает кэш страниц фиксированного размера (обычно 4 КБ в Linux, 256 КБ в Windows). Каждая страница содержит часть файла. Когда ваш процесс выполняет чтение, операционная система ищет в кэше страницы с запрошенными вами данными. Если он не может найти все запрошенные вами данные, он считывает требуемые страницы в кэш с диска, возможно, перезаписывая другие существующие страницы.

Другие вопросы по тегам