Explicación sobre los distintos tipos de kernel

hay bastante confusión con respecto a los distintos tipos de kernel
que se pueden instalar en openSUSE, voy a dar algunas explicaciones al
respecto. Lo primero es que, aunque tenga distintos nombres, el kernel
es el mismo; al compilar el kernel se puede elegir qué opciones de las
que ofrece se quieren seleccionar. En función de las que hayan
seleccionado, los empaquetadores de la distribución le dan un nombre u
otro, y así este nombre suele variar también entre distribuciones.
También suelen dividirse los paquetes del kernel en otros más pequeños
que incluyan, por ejemplo, los módulos más básicos, y por tanto
imprescindibles, y otros con módulos opcionales. Además es útil saber
qué significan algunos conceptos:
- PAE o Extensión de Dirección Física (Physical Address Extension): es una característica de los procesadores de 32 bits que les permite acceder a más de 4GB de memoria (2 elevado a 32 bits = 4294967296 bits = 4GB). Está disponible desde los antiguos Pentium Pro. Los procesadores que soportan PAE también soportan el bit NX (No Execute/No Ejecutar), que puede ayudar a evitar ataques de desbordamiento de buffer (bastante frecuentes). Los procesadores de 64 bits pueden acceder a más de 4GB por diseño.
- Desktop: escritorio, es decir, es un equipo de escritorio, el que todos tenemos en casa o los destinados a ofimática.
- Tiempo real (Realtime): en informática se llama aplicación de tiempo real a aquella que debe cumplir con unos límites de tiempo impuestos para funcionar correctamente. En algunas de estas aplicaciones dichos límites son estrictos y no admiten retrasos (como en los controles de un avión) y en otras se permite que se supere el límite en algunas ocasiones. Al contrario de lo que suele decirse normalmente en el lenguaje normal, realtime no quiere decir "ahora mismo"; el pronóstico del tiempo para mañana, por ejemplo, es una aplicación de tiempo real con una cota de tiempo de 24 horas.
- Latencia: es suma de los retrasos desde que se produce una entrada/acción hasta que se obtiene una salida/respuesta.
Si se usa YaST para instalar paquetes, en la pestaña Descripción
aparece una explicación de qué es y para qué sirve un paquete al
seleccionarlo. Ahí se puede ver que:
- kernel-desktop - Kernel optimizado para equipos de escritorio
Este kernel está optimizado para equipos de escritorio. Está configurado para una latencia baja y tiene desactivadas muchas de las características que no son habituales en equipos de escritorio. Este kernel soporta hasta 64GB de memoria principal. Necesita la Extensión de Dirección Física (PAE), que se introdujo con el procesador Pentium Pro. PAE no solo significa más espacio de direcciones físicas sino también es importante por la característica "no ejecutar" que deshabilita la ejecución de código que está marcado como no ejecutable. Por tanto, el kernel PAE debería usarse en cualquier sistema que lo soporte, independientmente de la cantidad de memoria.
- kernel-vanilla - El kernel estándar, sin ninguno de los parches de SUSE.
- kernel-pae - Kernel con PAE habilitado
Este kernel soporta hasta 64GB de memoria principal. Necesita la Extensión de Dirección Física (PAE), que se introdujo con el procesador Pentium Pro. PAE no solo significa más espacio de direcciones físicas sino también es importante por la característica "no ejecutar" que deshabilita la ejecución de código que está marcado como no ejecutable. Por tanto, el kernel PAE debería usarse en cualquier sistema que lo soporte, independientmente de la cantidad de memoria.
- kernel-default - El kernel estándar
El kernel estándar para sistemas monoprocesaror o multiprocesador.
- kernel-xen - El kernel Xen
Es el kernel que se usa con el sistema de paravirtualización Xen. Este kernel puede usarse tanto como domain0 ("xen0") o como un kernel si privilegios ("xenU").
- kernel-trace - El kernel de Linux de Tiempo real
Este kernel está compilado para aplicaciones de tiempo real.
- kernel-rt - El kernel de Linux para Tiempo-real
Este kernel es para aplicaciones de alto rendimiento/baja latencia.
En realidad no hay demasiadas diferencias entre unos y otros.
Tampoco queda claro que las opciones elegidas para cada uno sean las
más óptimas. Por ejemplo, el kernel-desktop está compilado usando el
flag -O2 y kernel-default/PAE con -Os; -Os es el menor nivel de
optimización del compilador gcc, mientras que -O3 es el de mayor
optimización. Al aumentar el nivel de optimización suele aumentar el
tamaño del ejecutable o librería que se obtiene. La pregunta que surge
es ¿qué es mejor, un kernel pequeño que no aproveche todas las
características del procesador pero ocupe pocas páginas de memoria, o un
kernel optimizado para el procesador pero tan grande que haya que
paginar con frecuencia? En las listas de distribución del kernel donde
se habla de estos temas no lo tienen claro, aunque parece que hay algo
de predilección por que sea pequeño.
En fin, en mi opinión da igual usar uno que otro porque ninguno es
óptimo: todos están compilados con muchas más opciones de las que pueda
necesitar un usuario normal para hacerlos más genéricos y que funcionen
con casi cualquier configuración. Además, tienen activadas montones de
opciones de depuración que solo son útiles si se quiere ayudar a
desarrollar el kernel. Como ejemplo, al compilar el kernel por defecto
creo recordar que se generan más de dos mil módulos; cuando compilo el
kernel para mi sistema apenas supera los cuatrocientos. Hay un proyecto,
KernelCheck, que tiene como objetivo hacer un programa que construya
el kernel optimizado para la máquina donde se ejecute. No lo he probado
aún, pero si funciona ahorraría bastante tiempo si se decide uno a
compilar un kernel personalizado.
Fuente:http://www.forosuse.org/forosuse/showthread.php?t=23822
Comentarios
Publicar un comentario