En plus des autres réponses, vous pouvez configurer Linux pour exiger le support de toute mémoire allouée, même si les programmes ne l'utilisent pas.
Cependant, surcharger la mémoire et craindre le tueur OOM ne sont pas des éléments nécessaires de l'expérience Linux. Le simple fait de définir le paramètre sysctl vm / overcommit_memory sur 2 désactive le comportement de surcharge et garde le tueur OOM à distance. La plupart des systèmes modernes doivent avoir suffisamment d'espace disque pour fournir un fichier d'échange suffisant pour la plupart des situations. Plutôt que d'essayer d'empêcher les processus d'animaux de compagnie d'être tués lorsque la mémoire surchargée est épuisée, il pourrait être plus facile d'éviter la situation. [ Répit du tueur OOM ]
Si un programme alloue de la mémoire, le noyau peut simplement marquer plus de pages de swap comme validées. Cette indication est stockée dans le gestionnaire de mémoire du noyau, l'espace disque réel n'est pas encore touché. Jusqu'à ce que cette mémoire soit utilisée, rien ne doit en fait être échangé. S'ils ne sont jamais utilisés, l'utilisation du swap fluctuera sans affecter les performances.
Parce que les processus sont présentés avec leur propre espace d'adressage ou "vue" (c'est ainsi que le swap fonctionne en premier lieu), le noyau a beaucoup de latitude pour gérer cela. En utilisant un exemple de fork également de l'article lié ci-dessus, car il est beaucoup plus susceptible d'avoir des pages de mémoire partagée que d'allouer fraîchement une grande quantité de mémoire inutilisée, la mémoire peut être allouée en copie sur écriture, augmentant le nombre d'utilisation de swap. Lorsqu'il est réellement écrit dans (ce qui pourrait ne pas se produire), ce «swap engagé» peut être remplacé par n'importe quelle RAM inutilisée (augmentant ainsi l'utilisation de RAM et diminuant l'utilisation de swap). Imaginez un processus avec 500 Mo alloués qui se bifurque sur une machine avec tout ou presque toute la RAM utilisée. S'il y a 500 Mo disponibles en swap (et que l'espace disque est bon marché, quelle est la taille de 1% des lecteurs TB actuels?: P), aucune mémoire ne doit être copiée (pourtant,
Ainsi, la possibilité du tueur OOM est évitée, et il est beaucoup plus simple de concevoir la plupart des logiciels en supposant que les allocations de mémoire (y compris les allocations "implicites" via quelque chose comme fork) réussissent ou échouent immédiatement, avec la réalisation pratique que si la mémoire doit être échangé, cela pourrait affecter les performances. Cet impact est presque toujours léger, mais dans le pire des cas, il entraîne un swash thrashing (toujours préférable à un crash brutal du noyau ou à un tueur OOM).
Bien que je ne connaisse pas les détails exacts du fonctionnement du gestionnaire de mémoire Linux, cette réponse est ma propre compréhension généralisée et ce que je me souviens avoir lu au fil des ans. J'ai essayé de rééditer cette réponse, donc une compréhension minimale de la conception du système d'exploitation est requise (c'est considérablement complexe et ce n'est pas quelque chose qui m'intéresse énormément), mais cela semble un peu errer; faites-le moi savoir si vous voyez comment il pourrait être amélioré. D'un autre côté, ce n'est peut-être pas une question aussi embarrassante.