¿Es el núcleo de Mac OS el mismo que el de Linux? ¿Cuál es la diferencia?

MacOS/BSD tiene swap-outs. Linux tiene el OOM Killer. Primero algunos antecedentes.

Unix comenzó funcionando en minicomputadoras como la DEC PDP-11. No había memoria virtual, sino que los procesos completos se copiaban («swap») entre la RAM y el área de intercambio del disco. Llegó el DEC VAX-11 con hardware de memoria virtual. Bill Joy y sus amigos de la Universidad de California en Berkeley escribieron las modificaciones más exitosas del kernel de Unix para soportar la memoria virtual. Dejaron en el código la posibilidad de intercambiar procesos enteros (y no sólo páginas) cuando el sistema se quedaba realmente atascado. Recuerde, esto fue en los días en que muchos estudiantes compartían varios Vaxen que se cargaban mucho al final del semestre.

Bell Labs’ Unix estaba disponible sólo para las universidades y era gratis para ellas. Los estudiantes aprendieron sobre Unix’ simplicidad y poder. No había un equivalente fuera de la universidad, así que la gente escribió clones, sobre todo para PC. Hubo varios, pero Linux se convirtió, con diferencia, en el más popular. El i386 tenía hardware de memoria virtual, por lo que casi todos estos clones de Unix tenían memoria virtual; sin embargo, dado que estos eran en su mayoría sistemas de escritorio, de un solo usuario, no se preocupaban por el swapping.

En cualquier sistema operativo de memoria virtual (Unix, Linux, Windows, etc.) el núcleo puede encontrarse sin memoria cuando obtiene un fallo de página. El subsistema de memoria virtual trabaja duro para evitar que esto ocurra, pero puede suceder en un sistema sobrecargado. En Unix, decide intercambiar suficientes procesos para aliviar la presión. Normalmente, un proceso intercambiado no se considera en funcionamiento durante al menos 20 segundos. Así que algunos procesos se vuelven realmente lentos – esperemos que no sean interactivos.

Por el contrario, Linux dispara el OOM Killer (Out Of Memory Killer) cuando está críticamente corto de recursos. El OOM Killer busca procesos grandes «sin importancia» y los mata para recuperar recursos. Los procesos con permisos de superusuario pueden marcarse a sí mismos como inmunes al OOM Killer, pero eso sólo significa que algún otro proceso va a morir.

Recuerde, estos problemas de falta de recursos ocurren sólo cuando el sistema está muy cargado y probablemente inutilizable interactivamente.