Поскольку у меня есть только первое издание книги: Понимая ядро Linux, я прочитал некоторый исходный код Linux 2.2.14, который очень старый.Являются ли страницы памяти, принадлежащие открытому файлу, управляемым как vm_area_struct?
Из исходного кода, я думаю, что страницы памяти, принадлежащие файлам, открытым процессом через системный вызов open(), не управляются списком vm_area_struct процесса. Кроме того, кажется, что ядро только заменяет страницы в списке vm_area_struct выбранного процесса, когда это необходимо.
Я знаю, что подкачка означает, что ядро помещает некоторые страницы в область подкачки, а файлы не могут быть заменены. Тем не менее, ядро все равно может записать любые грязные данные и отсоединить страницы файлов, чтобы получить некоторые бесплатные страницы. Поэтому мой вопрос: почему ядро не пытается освободить некоторые страницы, принадлежащие открывшимся файлам?
Или мое понимание, например, страницы файлов не управляются списком vm_area_struct процесса, это совершенно неправильно?