2009-10-12 10 views
5

Sí, lo sé ... Algunas personas a veces son difíciles de convencer de lo que suena natural para el resto de nosotros, y necesito su ayuda ahora SO comunidad (o voy a enviar postales pronto ...)¿Cómo convencer a mi compañero de trabajo de que el código del kernel de Linux es reentrante?

One de mi compañero de trabajo está convencido de que el código del kernel de Linux es no reincorporado a, ya que lo lee en algún lugar la última vez que se interesó en él, probablemente hace 7 años. Probablemente su lectura fue correcta en ese momento, recuerde que la arquitectura multinúcleo no estaba muy difundida hace algún tiempo y que el proyecto de Linux en sus comienzos no estaba del todo bien escrito y completamente desarrollado con todas las características sofisticadas.

Hoy es diferente. Es obvio que llamar a la misma llamada al sistema desde diferentes procesos que se ejecutan en paralelo en la misma arquitectura no conducirá a un comportamiento indefinido. El kernel de Linux ahora está muy extendido y es conocido por su capacidad de recuperación aunque se ejecute en arquitecturas multinúcleo. Ese es mi argumento por ahora. ¿Pero cuál sería el suyo al probar objetivamente?

Estaba pensando en mostrarle alguna función en el kernel de Linux (en lxr website) como la llamada al sistema mutex_lock(). Todo está ajustado para que funcione en un entorno concurrente. Pero el código podría no ser tan obvio para un novato (como yo).

por favor me ayude .. ;-)

+4

Me recuerda esto: http://xkcd.com/386/ En serio, ¿por qué gastar energía en tontos? –

+1

Porque estoy interesado en conocer el punto de vista de los demás, y la discusión trae más conocimiento a todos, en lugar de adivinar qué es verdadero –

Respuesta

5

buscar en el archivo lista de correo del kernel para "BKL". Eso significa "Big Kernel Lock", que es lo que solía usarse para evitar problemas. Se ha dedicado mucho trabajo a dividirlo en partes, para permitir la reinserción a medida que diferentes procesos utilizan diferentes partes del kernel. Las menciones más recientes de "BKL" (al menos eso lo he notado) se han referido básicamente a alguien que intentaba facilitar su propia vida bloqueando más de lo que alguien más aprobaba, en ese momento con frecuencia dicen algo sobre "volver a los días". del BKL ", o algo de ese orden.

2

La forma más fácil de probar que múltiples CPUs pueden ejecutarse simultáneamente en el kernel sería escribir un programa que trabaje mucho en el kernel (por ejemplo, busque nombres de rutas largos en un bucle cerrado), luego ejecute dos copias al mismo tiempo en una máquina de doble núcleo y muestran que el porcentaje de "sistema" en top supera el 50%.

+0

+1 para proponer una prueba real. – mikera

1

A riesgo de ser sarcástica: ¿por qué no leer el código? Si ninguno de los dos es lo suficientemente experto para seguir el código a través de un manejador de interrupciones y en algún subsistema u otro en el que pueda leer el código de sincronización, entonces ... ¿para qué molestarse? ¿No es esto solo un baile en la cabeza de una discusión pin? Es como un creacionista que exige una "prueba" de evolución cuando no está interesado en aprender ninguna biología.

0

Quizás deba hacer que su amigo pruebe que Linux es no reentrante. Burden no debería estar contigo para probar esto.

Cuestiones relacionadas