El kernel preventivo solo significa que no hay Big Kernel Lock .
Linux tenía multitarea preventiva (es decir, el código de usuario era preferente) desde su primer momento (que yo sepa, el primer Linux 0.0.1 subido por Linus al servidor ftp de funet ya era multitarea preventiva). Si ejecutó, por ejemplo, múltiples procesos de compresión o compilación, se ejecutaron en paralelo desde el primer momento.
Contrariamente a la, en ese momento, ampliamente utilizada Win31. En Win31, si una tarea obtuvo la CPU del "núcleo", por defecto era su responsabilidad determinar cuándo devolver el control al sistema operativo (u otras tareas). Si un proceso no tenía soporte especial para esta característica (que requería trabajo de programación adicional), entonces mientras se ejecutaba, todas las demás tareas se suspendían. Incluso la mayoría de las aplicaciones básicas integradas en Win31 funcionaron así.
La multitarea preventiva significa que las tareas no tienen forma de asignar la CPU como desean. En cambio, si su intervalo de tiempo caduca, el kernel les quita la CPU. Por lo tanto, en los sistemas operativos preventivos, un proceso mal escrito o que funciona mal no puede congelar el sistema operativo o evitar que se ejecuten otros procesos. Linux siempre fue preventivo para los procesos de espacio de usuario.
El Big Kernel Lock significa que en algunos casos, dentro del espacio del kernel , todavía podría haber algunos bloqueos, evitando que otros procesos ejecuten el código protegido. Por ejemplo, no podría montar varios sistemas de archivos al mismo tiempo: si daba varios comandos de montaje, aún se ejecutaban consecutivamente, porque era necesario montar los elementos para asignar Big Kernel Lock.
Hacer que el kernel sea preventivo había requerido eliminar este gran bloqueo del kernel, es decir, hacer que el montaje y cualquier otra tarea pudieran ejecutarse simultáneamente. Fue un gran trabajo.
Históricamente, esto se hizo realmente urgente por el creciente soporte de SMP (soporte multi-CPU). En la primera vez, había realmente placas base de múltiples CPU. Más tarde, se integraron múltiples CPU ("núcleos") en un solo chip, hoy las placas base realmente multi-CPU ya son raras (generalmente están en sistemas de servidores costosos). Además, los sistemas realmente de un solo núcleo (donde solo hay una única CPU, con un solo núcleo) son raros.
Por lo tanto, la respuesta a su pregunta no es "cuál fue la razón de la no preferencia", porque siempre fue preventiva. La verdadera pregunta es qué hizo que la ejecución preventiva del núcleo fuera realmente necesaria . La respuesta es para eso: la relación creciente de los sistemas con muchas CPU y muchos núcleos.
Esta no es una respuesta técnica, sino una respuesta histórica a la pregunta específica planteada por el OP: "¿Cuál fue la razón de la no preferencia de los núcleos Linux más antiguos?"
(Supongo, como explica @peterh en su respuesta y comentarios, que por "no preferencia" el OP se refiere a uno o ambos del hecho de que solo un proceso de usuario podría estar dentro del núcleo (en una API) en un tiempo y / o Big Kernel Lock.)
Linus Torvalds estaba interesado en aprender cómo funcionaban los sistemas operativos, y la forma en que aprendió fue escribir uno. Su modelo, base y entorno de desarrollo inicial era Minix, un sistema operativo existente para fines educativos (es decir, no un sistema operativo de producción) que no era gratuito (como en código abierto, en ese momento, no era gratis como en cerveza, ya sea).
Así que escribió un kernel sin preferencia (el Big Kernel Lock mencionado en otras respuestas) porque esa es la forma en que lo hace si desea que su nuevo sistema operativo funcione rápidamente con fines educativos: es mucho, mucho, mucho más simple de esa manera. Un núcleo para admitir la multiprogramación simultánea de programas y dispositivos de usuario es bastante difícil: es extremadamente difícil hacer que el núcleo mismo sea concurrente.
Si hubiera sabido qué tan popular / útil / importante sería Linux ... probablemente lo habría hecho de la misma manera. (Solo en mi opinión, no tengo idea de lo que realmente piensa). Porque tienes que caminar antes de poder correr.
Y se mantuvo así durante mucho tiempo porque a) había mucho trabajo por hacer para hacer de Linux lo que es hoy (o incluso lo que era entonces) yb) cambiarlo sería una tarea muy difícil (como se explica en otras respuestas).
fuente