El Kernel de Linux cambia partes de su código de Assembler a C

Por: Willy Klew

c lenguaje programacion 830x882 El Kernel de Linux cambia partes de su código de Assembler a C

Sabido por todos es que el lenguaje Assembler es el más rápido para algunas cuestiones y por ello es el más utilizado en el kernel de los diferentes sistemas operativos y lo propio ocurre para proyectos de tiempo real en donde se utiliza electrónica avanzada. El problema llega después, cuando ese código necesita ser mantenido y no lo es, y por ello en el caso del kernel de Linux los desarrolladores han optado por traducir ese código Assembler a C.

C es el lenguaje de programación más representativo de Linux (en realidad, de todas las plataformas *nix), fue desarrollado por Dennis Ritchie y Ken Thompson en 1972, fue realizado en un sistema Unix PDP-11 y formó parte de Unix versión 2. Dadas sus altas prestaciones y portabilidad fue comenzando a ser utilizado cada vez más en la implementación de sistemas operativos y por ello Linus Torvalds lo utilizó para su proyecto cuando allá por 1990 buscaba una alternativa libre y abierta a Minix.

Claro que a pesar de tantas fortalezas, Assembler tiene algunas ventajas respecto de C como mencionamos al comienzo, por ello esta decisión ha sorprendido pero de acuerdo a lo que comenta Andy Lutomirsky en las listas de correo del kernel su trabajo ya está bien encaminado y el kernel de Linux 4.1 será el primero en incorporar esta reescritura de código fuente de Assembler a C. En concreto, todo lo referido a las salidas hacia modo de usuario, que en la actualidad está compuesto de una mezcla de código de estos dos lenguajes de programación pero que dado su escaso mantenimiento se ve cada vez más complicado al momento de actualizar.

Es que el código en Assembler lleva mucho tiempo sin ser actualizado y eso redunda en que los nuevos desarrolladores no tengan del todo claro su funcionamiento, y lo que es peor aún, no resultaría fácil actualizarlo. Así las cosas, en lugar de intentar algún cambio parcial han optado por comenzar a cambiar todas esas rutinas de Assembler a C, y en lo personal pienso que aunque se pueda llegar a perder algo de velocidad de ejecución (que puede ser mínima si el código C nuevo es eficiente) siempre es preferible código nuevo y claro a tenerlo desactualizado y con posibilidades casi nulas de actualización debido a que no se entiende bien como fue implementado.