Wozu erzählst du das? Die Pagetables sind doch in der Regel, sofern kein memory leak vorliegt nicht das Problem.
Hmm. Nein. Das habe ich auch nicht gemeint.
macOS basiert auf BSD. Wenn man da ein PageTable Mapping erzeugt muss es dafür eine Paging Möglichkeit geben.
Bei Dateien, Frameworks und anderen Binaries ist das ja die SSD.
Bei Anonymen Mappings ist das aber das Swapfile.
Also muss das Swapfile so groß sein, wie die in den PageTable Einträgen anonymen Regionen.
Jetzt wirst Du sagen "Nee, stimmt doch gar nicht!!"
Richtig, die Geschichte ist komplizierter.
Natürlich können sich mehrere Prozesse mit den PageTable Einträgen nicht in die Quere kommen weil sie gar nicht so viel Speicher belegen (mappings haben, nicht unbedingt belegen).
Bei diesen Context Switches werden die PageTable Einträge eben nicht weggeworfen und müssen deshalb auch nicht Swap Möglichkeiten haben.
Nur wenn man mehrere Prozesse hat, die große anonyme Regionen gemaped haben, braucht man dafür auch das Equivalent an Swap.
Übrigens unabhängig davon ob tatsächlich ausgelagert wird oder nicht.
Kurz:
- Es geht nur um anonyme mappings
- Es geht nur um große Regionen die beim Context Switch vielleicht weggeworfen werden müssen (die Mappings)
- Das passiert nur wenn ein als "Dirty" getaggtes mapping auch tatsächlich angefasst wird (im pagetable)