¿Por qué Linux no está construido con un kernel preventivo, aunque sí lo está el Raspberry Pi?

La preferencia del kernel aumenta la capacidad de respuesta del sistema a los programas de espacio de usuario a costa de la eficiencia general. En la configuración de la fuente del núcleo, hay tres configuraciones. “Sin preferencia”, “Prevención voluntaria” y “Núcleo previsible”

El que elijas dependerá de lo que estés haciendo. La aceleración del núcleo ralentiza el rendimiento general de E / S del sistema, entre otras cosas.

Los servidores y similares que necesitan un rendimiento máximo tienden a tener sus núcleos construidos con “No Preemption”.

Los sistemas destinados al uso de escritorio tienden a construirse con “Prevención voluntaria”, ya que esto causa solo una pequeña disminución en la eficiencia, pero elimina el movimiento desigual del mouse y tartamudeos similares en el tiempo de respuesta de la interfaz de usuario.

Los sistemas destinados al uso de “baja latencia” para cosas como la edición de video y audio, donde incluso los pequeños parpadeos en la capacidad de respuesta de la interfaz de usuario bajo “Prevención voluntaria” se crean con la opción “Núcleo preajustable”. Esto puede reducir seriamente el rendimiento total del sistema dependiendo de las circunstancias, pero asegura que cada nota de la canción que está componiendo se reproduzca con una precisión de milisegundos o mejor.

Sospecharía que el Pi está compilado con un núcleo preferente porque a) Es IO a través de interfaces muy lentas de todos modos, y b) No tiene un procesador particularmente rápido para los estándares modernos, por lo que debe prestar más atención a lo que el usuario está haciendo en para no parecer torpe.

Su comprensión de la prevención es defectuosa.

Preemption es una característica de un planificador, y un sistema operativo puede tener diferentes planificadores disponibles. Sin embargo, a excepción de las compilaciones experimentales y especiales, el planificador de Linux es preventivo.


Linux es un kernel preventivo.

Después de que se agota un proceso cuántico, se suspende y luego se ejecuta el elemento de mayor prioridad en la cola lista para ejecutarse.

Esto es, por definición, preferencia.

Además, hay interrupciones del dispositivo. Si un dispositivo tiene datos disponibles, desencadena una interrupción; la CPU detiene lo que sea que esté haciendo para un proceso de usuario y pasa a ejecutar el controlador de interrupciones. Cuando termina, vuelve a cambiar.

Esto es, por definición, preferencia.

Hay temporizadores para eventos periódicos. Si se dispara un temporizador, esto provoca otro tipo de interrupción del dispositivo, llamada interrupción del temporizador; la CPU detiene lo que esté haciendo y, en su lugar, se ejecuta la rutina del temporizador. Cuando termina, vuelve a cambiar. Así es como se maneja la administración de energía a través de SMI ( System Management Interrupt ).

Esto es, por definición, preferencia.

Finalmente, si su programa se ejecuta alegremente y llega a una ubicación de memoria para la que hay una asignación de página, pero para la cual no hay una página física que la respalde con memoria real, el programa atrapa el controlador de trampa en el núcleo. Comienza la operación para colocar una página en su lugar y llenarla con el contenido correcto; Como esto puede llevar mucho tiempo, una vez que se inicia la operación, se apaga y ejecuta algo más que está listo para ejecutarse.

Esto es, por definición, preferencia.


PD: Dado que la mayoría de las personas ejecutan Linux o una variante de Linux en su Raspberry Pi, a menos que estén ejecutando una variante BSD, no hay forma de que el kernel de Raspberry Pi, que es el kernel de Linux, pueda ser preventivo, sin que Linux sea preventivo.

Linux cambió a un kernel preventivo con la serie 2.6. Esta versión salió en diciembre de 2003 (esto es del libro de Conceptos OS de Silberschatz, Galvin y Gagne). Vea abajo

¿Qué kernel de Rasberry Pi estás usando? La mayoría de los núcleos Rasberry Pi están basados ​​en Linux (las versiones de Android usan un núcleo Linux), por lo que me sorprende ver una pregunta de por qué el núcleo Rasberry tiene algo que el núcleo Linux no tiene.

¿Construido por quién? Cada distribución de Linux construye su propio núcleo, no hay un núcleo estándar. Hay una configuración estándar, pero no se usa mucho sin grandes modificaciones en la práctica.

La mayoría de las distribuciones orientadas al escritorio realmente permiten la preferencia parcial o total en sus núcleos, que yo sepa. Algunas distribuciones orientadas al servidor pueden enviar núcleos con preferencia parcial o totalmente deshabilitados, aunque hay pocas razones para la mayoría de las cargas de trabajo, incluso las cargas de trabajo del servidor.

La anticipabilidad del sistema operativo se define principalmente por el planificador, del cual hay varios para Linux. El más común actualmente es el “CFS” Programador completamente justo. Incluso dentro de CFS es posible establecer diferentes reglas de comportamiento, por ejemplo, que algunos programas se ejecuten para finalizar (cuota indefinida) mientras que otros obtienen un intervalo de tiempo en proporción a sus necesidades.

Linux está construido como un núcleo preventivo por defecto. De hecho, no creo que haya otro modo. Puede compilarlo en un modo de proceso único o en una multitarea cooperativa.

Puede seleccionar qué tan receptivo es el kernel, pero eso es todo.

Dime la fuente que te llevó a creer esto. Desde mi experiencia no es cierto.