Я знаю, що коли сторінка кеша сторінки змінена, вона позначається брудною і вимагає повернення, але що відбувається, коли:
Сценарій: Файл / програми / EXE, який є виконуваним файлом, повністю заповнено в кеш сторінки (усі його сторінки знаходяться в кеші / пам'яті) і виконується процесом P
Постійний випуск потім замінює / apps / EXE на абсолютно новий виконуваний файл.
Припущення 1: Я припускаю, що процес P (і будь-хто інший з дескриптором файлу, що посилається на старий виконуваний файл), буде продовжувати використовувати старе, в пам'яті / додатках / EXE без проблем, і будь-який новий процес, який намагається виконати цей шлях, отримає новий виконуваний файл.
Припущення 2: Я припускаю, що якщо не всі сторінки файлу будуть зібрані в пам'ять, то все буде добре, поки не з’явиться помилка сторінки, що вимагає заміни сторінок із файлу, і, мабуть, відбудеться сегментація?
Запитання 1: Якщо ви замикаєте всі сторінки файлу чимось на кшталт vmtouch, це взагалі змінює сценарій?
Запитання 2: Якщо / apps / EXE знаходиться на віддаленій NFS, чи має це значення? (Я припускаю, що ні)
Будь ласка, виправте або підтвердіть мої 2 припущення та дайте відповіді на мої 2 запитання.
Припустимо, це вікно CentOS 7.6 з ядром 3.10.0-957.el7
Оновлення: Думаючи про це далі, мені цікаво, чи цей сценарій не відрізняється від будь-якого іншого сценарію брудної сторінки.
Я припускаю, що процес, який записує новий двійковий файл, буде читати і отримувати всі сторінки кешу, оскільки всі вони завантажені на сторінку, і тоді всі ці сторінки будуть позначені брудними. Якщо їх заблокують, вони будуть просто марними сторінками, що займають основну пам'ять після того, як кількість посилань перейде до нуля.
Я підозрюю, що коли закінчуються програми, що виконуються в даний час, все інше використовуватиме новий бінарний файл. Якщо припустити, що це все правильно, я думаю, що це цікаво лише тоді, коли лише деякі файли завантажуються на сторінку.