{"id":570,"date":"2009-06-02T14:18:06","date_gmt":"2009-06-02T19:18:06","guid":{"rendered":"http:\/\/alexceli.org\/blog\/?p=570"},"modified":"2009-06-02T14:18:06","modified_gmt":"2009-06-02T19:18:06","slug":"%c2%bfcomo-esta-programado-linux","status":"publish","type":"post","link":"https:\/\/alexceli.org\/blog\/2009\/06\/02\/%c2%bfcomo-esta-programado-linux-570.php","title":{"rendered":"\u00bfC\u00f3mo est\u00e1 programado Linux?"},"content":{"rendered":"\n<td>\n<div class=\"contenido\">\n<p><strong>El sistema operativo GNU\/Linux -a menudo denominado tan s\u00f3lo como Linux, que es el nombre del n\u00facleo del SO- hace uso de un buen n\u00famero de lenguajes de programaci\u00f3n en sus distintos componentes. \u00bfCu\u00e1les son esos lenguajes? Cada tipo de recurso parece tener ciertas preferencias, y es que hay lenguajes m\u00e1s adecuados para unas cosas. Obviamente el lenguaje de programaci\u00f3n C sigue siendo la base, pero hay mucho m\u00e1s implicados. <br \/>\n<\/strong><\/p>\n<\/p>\n<p>Para comenzar es conveniente aclarar el apartado de la nomenclatura que muchos medios utilizan (y utilizamos, probablemente por comodidad) a la hora de hablar de este sistema operativo. <a target=\"_blank\" href=\"http:\/\/www.brighthub.com\/computing\/linux\/articles\/37223.aspx\">Linux es realmente es kernel<\/a> del <strong>sistema operativo GNU\/Linux<\/strong>, del cual existen literalmente cientos de versiones en forma de distribuciones, cada una con un kernel Linux y una serie de componentes adicionales que las caracterizan.<\/p>\n<\/p>\n<p style=\"text-align: center;\"> <img loading=\"lazy\" decoding=\"async\" height=\"307\" width=\"430\" alt=\"\" src=\"http:\/\/muycomputer.com\/files\/264-14664-FOTO\/linux_leng.JPG\" \/><\/p>\n<\/p>\n<p><strong>Linux<\/strong> es realmente el <strong>componente principal del sistema operativo<\/strong>, es el verdadero encargado de administrar los recursos del sistema, <strong>el n\u00facleo<\/strong>. Este componente se encarga de ir planificando la ejecuci\u00f3n de las distintas tareas y les concede cierto tiempo de procesador, memoria, acceso al disco duro y otros subsistemas, etc.<\/p>\n<\/p>\n<p style=\"text-align: center;\"> <img loading=\"lazy\" decoding=\"async\" height=\"600\" width=\"401\" alt=\"\" src=\"http:\/\/muycomputer.com\/files\/264-14665-FOTO\/401px-Linux-kernel.png\" \/><\/p>\n<\/p>\n<p>A <strong>modo comparativo<\/strong> el kernel de Windows es kernel32.dll, pero el sistema operativo integra el Panel de Control, el bloc de notas, defragmentador, Internet Explorer, etc\u00e9tera. Decir &#8220;<strong>estoy usando Linux<\/strong>&#8221; viene a ser lo mismo que &#8220;<strong>estoy usando kernel32.dll<\/strong>&#8221; en lugar de &#8220;estoy usando Windows&#8221;, de ah\u00ed que los m\u00e1s puristas hagan hincapi\u00e9 en el error.<\/p>\n<\/p>\n<p style=\"text-align: center;\"><img decoding=\"async\" src=\"http:\/\/muycomputer.com\/files\/264-8534-FOTO\/Kernel%202.6.28%201.jpg\" alt=\"\" \/><\/p>\n<\/p>\n<p>Habiendo aprendido de qu\u00e9 vamos a hablar ahora toca entrar en materia, \u00bfqu\u00e9<strong> lenguaje de programaci\u00f3n es usado en el kernel de Linux y en GNU\/Linux<\/strong>? Vayamos por partes:<\/p>\n<\/p>\n<p><strong>1. Kernel y drivers de dispositivos<\/strong>: Tanto los drivers como el kernel funcionan en un <strong>nivel realmente bajo <\/strong>de operaciones en el ordenador. Para escribir el kernel del sistema operativo y acceder a las propiedades del hardware tales como los ciclos de la memoria, buses de entrada\/salida, etc., se necesita un lenguaje que pueda <strong>comunicarse con el hardware<\/strong> con potencia. El kernel Linux hace uso del <strong>lenguaje C<\/strong> (aunque en realidad no se trate de un lenguaje de bajo nivel) con una peque\u00f1a parte en <strong>lenguaje ensamblador<\/strong>.<\/p>\n<\/p>\n<p><strong>2. Librer\u00edas y utilidades<\/strong>: Las librer\u00edas y utilidades b\u00e1sicas del sistema tales como <em>mkdir, chmod, chown, head, tail, chroot, uptime, users <\/em>tambi\u00e9n est\u00e1n escritas en <strong>lenguaje C<\/strong>.<\/p>\n<\/p>\n<p><strong>3. Gestores de paquetes y programas de configuraci\u00f3n<\/strong>: Los gestores de paquetes tales como <em>yum, apt, dpkg<\/em>, etc\u00e9tera, tambi\u00e9n est\u00e1n escritos en <strong>C<\/strong>, que como veis es la estrella absoluta de los componentes &#8220;base&#8221; de un sistema GNU\/Linux.<\/p>\n<\/p>\n<p><strong>4. Entornos de Escritorio y gestores de ventanas<\/strong>: La mayor\u00eda de gente usa un entorno de escritorio, y es que a d\u00eda de hoy poco queda s\u00f3lo en interfaz de l\u00ednea de comandos. Los <strong>gestores de ventanas<\/strong> tales como metacity, kwin est\u00e1n desarrollados en <strong>C <\/strong>y requieren <strong>gcc para ser compilados<\/strong>. El <strong>entorno de escritorio<\/strong>, iconos, ventalas, barras de herramientas, etc, est\u00e1n basados en librer\u00edas espec\u00edficas (Qt para KDE, GTK+ para GNOME) y hacen uso del lenguaje mayoritario, <strong>C<\/strong>.<\/p>\n<\/p>\n<p><strong>5. Aplicaciones gr\u00e1ficas de usuario<\/strong>: Este es el punto donde entran en juego una gran cantidad de lenguajes de programaci\u00f3n, dado que b\u00e1sicamente es la capa m\u00e1s alta. Tenemos una gran variedad:  <strong>C, Python, Java, Perl y otros.<\/strong> Hay librer\u00edas GTK+, Tcl\/Tk, Qt que son un <em>frontend<\/em> gr\u00e1fico a tareas que corren por detr\u00e1s en l\u00ednea de comando.<\/p>\n<\/div>\n<\/td>\n<p>Fuente: <a href=\"http:\/\/muycomputer.com\/FrontOffice\/ZonaPractica\/Especiales\/especialDet\/_wE9ERk2XxDDnIxQBg6LFuEig9EOuESzUfsvijVg-LObRiFYDLmAZTqaZY5C2LXMi\">muycomputer.com<\/a><\/p>\n<p>Alex Celi<\/p>\n","protected":false},"excerpt":{"rendered":"<p>El sistema operativo GNU\/Linux -a menudo denominado tan s\u00f3lo como Linux, que es el nombre del n\u00facleo del SO- hace uso de un buen n\u00famero de lenguajes de programaci\u00f3n en sus distintos componentes. \u00bfCu\u00e1les son esos lenguajes? Cada tipo de recurso parece tener ciertas preferencias, y es que hay lenguajes m\u00e1s adecuados para unas cosas. [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[15,17,3],"tags":[],"class_list":["post-570","post","type-post","status-publish","format-standard","hentry","category-computo","category-hacking","category-linux"],"_links":{"self":[{"href":"https:\/\/alexceli.org\/blog\/wp-json\/wp\/v2\/posts\/570","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alexceli.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/alexceli.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/alexceli.org\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/alexceli.org\/blog\/wp-json\/wp\/v2\/comments?post=570"}],"version-history":[{"count":4,"href":"https:\/\/alexceli.org\/blog\/wp-json\/wp\/v2\/posts\/570\/revisions"}],"predecessor-version":[{"id":574,"href":"https:\/\/alexceli.org\/blog\/wp-json\/wp\/v2\/posts\/570\/revisions\/574"}],"wp:attachment":[{"href":"https:\/\/alexceli.org\/blog\/wp-json\/wp\/v2\/media?parent=570"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/alexceli.org\/blog\/wp-json\/wp\/v2\/categories?post=570"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/alexceli.org\/blog\/wp-json\/wp\/v2\/tags?post=570"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}