Le noyau de Mac OS est-il le même que celui de Linux ? Quelle est la différence ?


MacOS/BSD a des swap-outs. Linux a le tueur OOM. D'abord un peu de contexte.

Unix a commencé à fonctionner sur des mini-ordinateurs comme le DEC PDP-11. Il n'y avait pas de mémoire virtuelle, plutôt des processus entiers étaient copiés ("swap") entre la RAM et la zone de swap sur le disque. Le DEC VAX-11 avec le matériel de mémoire virtuelle est arrivé. Bill Joy et ses amis de l'Université de Californie à Berkeley ont écrit les modifications les plus réussies du noyau Unix pour prendre en charge la mémoire virtuelle. Ils ont laissé dans le code la possibilité d'échanger des processus entiers (et pas seulement des pages) lorsque le système s'embourbe. Rappelez-vous, c'était à l'époque où de nombreux étudiants partageaient en temps partagé plusieurs Vaxen qui devenaient très chargés à la fin du semestre.


Bell Labs&apos ; Unix n'était disponible que pour les universités et il était gratuit pour elles. Les étudiants apprenaient à connaître Unix&apos ; la simplicité et la puissance. Il n'y avait pas d'équivalent en dehors de l'université, alors les gens ont écrit des clones, principalement pour les PC. Il y en avait plusieurs, mais Linux est devenu de loin le plus populaire. L'i386 avait un matériel de mémoire virtuelle, donc à peu près tous ces clones d'Unix avaient de la mémoire virtuelle ; cependant, comme il s'agissait surtout de systèmes de bureau, mono-utilisateurs, ils ne se souciaient pas du swapping.


Dans tout OS à mémoire virtuelle (Unix, Linux, Windows, etc.), le noyau peut se retrouver hors de la mémoire lorsqu'il obtient un défaut de page. Le sous-système de mémoire virtuelle travaille dur pour éviter que cela ne se produise, mais cela peut arriver sur un système surchargé. Sous Unix, le noyau décide d'échanger suffisamment de processus pour soulager la pression. En général, un processus échangé n'est pas considéré comme étant en cours d'exécution avant au moins 20 secondes. Ainsi, certains processus deviennent vraiment lents - en espérant qu'il ne s'agisse pas de processus interactifs.

A l'inverse, Linux déclenche l'OOM Killer (Out Of Memory Killer) lorsqu'il manque cruellement de ressources. L'OOM Killer recherche les gros processus "sans importance" et les tue pour récupérer des ressources. Les processus avec des permissions de superutilisateur peuvent se marquer comme immunisés contre l'OOM Killer, mais cela signifie simplement qu'un autre processus va mourir.

Rappellez-vous que ces problèmes de hors-ressources ne se produisent que lorsque le système est très chargé et probablement inutilisable de manière interactive.