Pregunta

Explicado en sus propias palabras, ¿qué es la preferencia y qué significa para un núcleo (linux)?

¿Cuáles son las ventajas y desventajas de tener un núcleo preferente?

¿Fue útil?

Solución

Multitarea preventiva: ejecutar varios procesos / subprocesos en un solo procesador, creando la ilusión de que se ejecutan simultáneamente cuando en realidad cada uno tiene asignados pequeños intervalos de tiempo multiplexados para ejecutarse. Un proceso está "adelantado" cuando está programado fuera de ejecución y espera la próxima vez que se ejecute el segmento.

Un kernel preventivo es aquel que se puede interrumpir en medio de la ejecución del código, por ejemplo en respuesta a una llamada del sistema, para hacer otras cosas y ejecutar otros hilos, posiblemente aquellos que no están en el kernel.

La principal ventaja de un kernel preventivo es que las llamadas al sistema no bloquean todo el sistema. Si una llamada sys tarda mucho tiempo en finalizar, no significa que el núcleo no pueda hacer nada más en este momento. La principal desventaja es que esto introduce más complejidad al código del núcleo, ya que tiene que manejar más casos finales, realizar un bloqueo más detallado o utilizar estructuras y algoritmos sin bloqueo.

Otros consejos

Deberías usar el término "preferente". " Hay diferentes tipos de prevención. Esencialmente, es muy simple y probablemente lo entiendas por otro nombre. Un sistema operativo preventivo puede cambiar los contextos entre los hilos de modo de usuario sin ninguna programación especial en la aplicación anticipada. Esto permite la multitarea. Un sistema operativo puede cambiar y volver a un proceso, y este cambio es esencialmente transparente. También existe el kernel preventivo, que permite que los subprocesos del modo kernel se reemplacen (la mayoría de los sistemas operativos no lo permiten, pero es necesario para ciertas aplicaciones, como en sistemas de tiempo real). Tenga en cuenta que esta es una explicación muy simplificada.

Otros han explicado adecuadamente qué es un kernel preferible.

¿Para qué sirve?

La mayoría de los beneficios son:

  • Baja latencia en sistemas que no son SMP: generalmente se usa en sistemas en tiempo real o para otras cosas donde la latencia es importante (quizás aplicaciones de audio y video)
  • Enseñar a los desarrolladores de kernel que no tienen sistemas SMP cómo escribir el código correcto para SMP

Con un kernel no preferente, en un sistema de procesador único es posible que los desarrolladores de kernel sean flojos y se salgan sin ningún bloqueo la mayor parte del tiempo; por supuesto, esto es un gran FALLO en SMP. Los núcleos preferibles les permiten obtener este dolor sin más núcleos.

Creo que esta publicación explica sus preguntas:

  

¿Qué es la preferencia?

La capacidad del sistema operativo para evitar o detener una tarea programada actualmente en favor de una tarea de mayor prioridad. La programación puede ser uno de, entre otros, procesos o programación de E / S, etc.

  

¿Qué es un núcleo de preferencia?

En Linux, los programas de espacio de usuario siempre han sido preferentes: el kernel interrumpe los programas de espacio de usuario para cambiar a otros subprocesos, utilizando la marca de reloj normal. Entonces, el núcleo no espera a que los programas de espacio de usuario liberen explícitamente el procesador (que es el caso en la multitarea cooperativa). Esto significa que un bucle infinito en un programa de espacio de usuario no puede bloquear el sistema.

Sin embargo, hasta 2.6 kernels, el kernel en sí mismo no era preemtible: tan pronto como un hilo ha entrado en el kernel, no se puede evitar que ejecute otro hilo. El procesador podría usarse para ejecutar otro subproceso cuando finalizó una llamada al sistema, o cuando el subproceso actual solicitó explícitamente al planificador que ejecute otro subproceso utilizando la función schedule (). Esto significa que un bucle infinito en el código del kernel bloqueó todo el sistema, pero esto no es realmente un problema: el código del kernel está diseñado para que no haya bucles infinitos.

La preferencia de kernel se ha introducido en 2.6 kernels, y se puede habilitar o deshabilitar usando la opción CONFIG_PREEMPT. Si CONFIG_PREEMPT está habilitado, entonces el código del núcleo puede ser reemplazado en todas partes, excepto cuando el código ha deshabilitado las interrupciones locales. Un bucle infinito en el código ya no puede bloquear todo el sistema. Si CONFIG_PREEMPT está deshabilitado, se restaura el comportamiento 2.4.

  

¿Pros y contras?

Pros: El núcleo de preferencia puede mejorar la latencia y la escalabilidad, y puede hacer que la tarea de alta prioridad se ejecute y responda a tiempo.

Contras: dificulta la escritura de código en el kernel de preferencia, especialmente en SMP, y debe tener en cuenta muchos factores.

Preemption significa que el sistema operativo admite múltiples tareas (un fragmento de código independiente y separado) y cambiará entre tareas en un horario. Cuando se interrumpe una tarea, se llama "preferencia". El sistema operativo moderno admite esto, pero no es necesario para sistemas integrados simples, por ejemplo. La sobrecarga de soportar el cambio de tareas no siempre vale la pena.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top