Wiem, że gdy strona pamięci podręcznej jest modyfikowana, jest oznaczona jako brudna i wymaga zapisu zwrotnego, ale co się dzieje, gdy:
Scenariusz: plik / aplikacje / EXE, który jest plikiem wykonywalnym, jest całkowicie umieszczany w pamięci podręcznej stron (wszystkie strony znajdują się w pamięci podręcznej / pamięci) i jest wykonywany przez proces P
Wydanie ciągłe zastępuje następnie / apps / EXE nowym plikiem wykonywalnym.
Założenie 1: Zakładam, że proces P (i każdy inny posiadający deskryptor pliku odnoszący się do starego pliku wykonywalnego) będzie nadal używał starego, w pamięci / aplikacjach / EXE bez problemu, i każdy nowy proces, który próbuje wykonać tę ścieżkę, otrzyma nowy plik wykonywalny.
Założenie 2: Zakładam, że jeśli nie wszystkie strony pliku zostaną zmapowane w pamięci, wszystko będzie w porządku, dopóki nie wystąpi błąd strony wymagający stron z pliku, który został zastąpiony, i prawdopodobnie wystąpi awaria?
Pytanie 1: Jeśli zablokujesz wszystkie strony pliku za pomocą czegoś takiego jak vmtouch, czy w ogóle zmieni to scenariusz?
Pytanie 2: Jeśli / apps / EXE znajduje się na zdalnym NFS, czy to coś zmieni? (Zakładam, że nie)
Popraw lub zweryfikuj moje 2 założenia i odpowiedz na 2 moje pytania.
Załóżmy, że jest to okno CentOS 7.6 z jakimś rodzajem jądra 3.10.0-957.el7
Aktualizacja: Zastanawiając się nad tym, zastanawiam się, czy ten scenariusz nie różni się od żadnego innego scenariusza z brudną stroną.
Podejrzewam, że proces, który zapisuje nowy plik binarny, wykona odczyt i pobierze wszystkie strony pamięci podręcznej, ponieważ są one stronicowane, a następnie wszystkie te strony zostaną oznaczone jako brudne. Jeśli zostaną zablokowane, będą po prostu bezużytecznymi stronami zajmującymi pamięć podstawową, gdy liczba odniesień spadnie do zera.
Podejrzewam, że po zakończeniu aktualnie wykonywanych programów wszystko inne wykorzysta nowy plik binarny. Zakładając, że wszystko jest w porządku, myślę, że jest to interesujące tylko wtedy, gdy tylko część pliku jest stronicowana.