La dura vida de los procesos

Ya adelanté hace mucho tiempo que la vida de los programas no es nada agradable a pesar de las apariencias, y de hecho puede llegar a ser bastante surrealista. Hoy aprenderemos a solidarizarnos con estas pobres criaturas. Para seguir leyendo interesa que recuerde qué es un proceso: básicamente, es la forma en que nos referiemos un programa que esté ejecutándose en el sistema. Las diferencias son sutiles pero importantes.

Y por favor, sea prudente: esta entrada puede herir su sensibilidad… ;-)

Dando a luz

¿Cómo empieza la vida de un proceso? Pues como la de (casi) todo el mundo: con un parto. En efecto, los procesos nacen de otros procesos. No me estoy riendo de ustedes, es la pura verdad: muchos programas crean subprocesos para que éstos se encarguen de ciertas tareas auxiliares y aprovechar la famosa simultaneidad. Se trata de una forma de entender la vida bastante interesada: tengo hijos para que me ayuden en el trabajo que no quiero o no puedo realizar…

cloned_homers.jpgA su vez, estos hijos tendrán su descendencia, y de esta manera los procesos formarán una bonita familia feliz en memoria. Toda estirpe tiene un origen, y es lógico pensar que tendrá que existir un proceso “patriarca” que engendre al resto. Cuando el sistema arranca, se crea un proceso 0, cuya función es engendrar al proceso 1, que recibe el nombre de “Init”. Este proceso, el padre de todos, se encarga de iniciar el sistema correctamente, teniendo hijos que asumirán las diferentes funciones del sistema y tendrán más hijos. A partir de este momento, todos los programas que se ejecuten serán, de alguna manera, descendientes de Init, que permanecerá siempre en el sistema, como el capitán de un barco.

Hay que hacer una precisión. Técnicamente los procesos no tienen hijos. No. Los procesos se clonan a sí mismos (esto empieza a ser surrealista). Es decir, Init crea un clon de sí mismo y le manda atender una función del sistema. Aunque son iguales en su origen, quedan completamente diferenciados y el Init original conserva cierto poder sobre la copia, con lo que podemos considerar que es su padre. Para que quede claro, es igual que el capítulo de Los Simpsons en que Homer crea clones de sí mismo a los que manda a hacer el trabajo sucio.

Una vida peligrosa

Después de este parto accidentado, la vida del proceso transcurrirá con mayor o menor interés, desempeñando la función que su padre le encomendó. En todo ese tiempo, puede ser expulsado momentáneamente de la ejecución, puede quedarse dormido en espera de algún evento que le despierte nuevamente… tendrá, en general, una existencia aparentemente relajada.

Y digo aparentemente porque en todo este tiempo, una enorme cantidad de peligros amenazan su existencia… un proceso puede morir por muchos motivos:

  • Puede ser por muerte natural, en la que llega al final de su tarea asignada. Como no tiene nada más que hacer, se muere.
  • También puede suicidarse si encuentra una anomalía que no sabe resolver por sí mismo.
  • Puede ser matado por otro proceso, siempre que el proceso asesino tenga “licencia para matar”, que se traduce en que sea su padre o un proceso del administrador.
  • Puede ser matado por el sistema operativo, por varios motivos: intentó realizar una operación no admitida, cometió un error, no tenía memoria suficiente, acaparaba un determinado recurso… cualquier momento es bueno para morir.

El mecanismo por el que un proceso elimina a otro es muy interesante. Si un proceso padre quiere matar a su hijo (cosa muy común por otro lado), le pide primero que se muera por las buenas, porque puede que el hijo quiera hacer algo antes de morirse.

El bondadoso padre le dice “mira, te voy a matar, así que haz lo que tengas que hacer y haz el favor de morirte”. Eso equivale a enviarle una señal, llamada SIGTERM, que quiere decir “termina”. Si el hijo sigue en ejecución pasado un tiempo, el padre cumplirá sus amenazas y le matará, enviándole la señal SIGKILL (unos cachondos mentales, los del Unix…)

El hijo zombie

El objetivo final de la vida de un proceso hijo es informar a su padre de que terminó su trabajo con éxito, y lo es tanto que un proceso no morirá hasta haber informado de que lo hizo. En principio no hay problema, pero ¿qué pasa si un proceso padre muere y el hijo continúa funcionando? Cuando el hijo termine sus tareas, no podrá informar a su padre de que ha hecho los deberes, y como un chico obediente esperará a su padre (que no va a volver jamás, qué dura es esta vida…).

En este caso, el proceso huérfano sigue vivo pero no tiene nada que hacer, así que decimos que el proceso está Zombie. La cosa se pone macabra. ¿Quién se hace cargo de esta pobre criatura? Pues el proceso Init hace de padre adoptivo, recoge lo que el hijo tenía que decir, lo desecha (porque realmente no le vale para nada) y acto seguido exorciza al zombie vía SIGKILL y lo manda al descanso eterno.

Divertido ¿eh?

Publicado en Linux, Sistemas Operativos | 8 Comentarios

Un paseo por los Linux

Sí, es en plural: los Linux. Tal vez alguien piense que hay un sólo Linux, al igual que un sólo Windows. Pues no. Hay un montón de Linux, y cada uno usamos el que más nos gusta. Esto de varias versiones de lo mismo puede sonar un poco raro, pero para entendernos, es como si IBM tuviera su Windows, HP el suyo… y pudiéramos elegir uno, el que más nos gustara. A estas “versiones” de Linux se les da el nombre de distribuciones, y explicamos en qué consistían hace un tiempo, en éste artículo.

Normalmente uno tiene su distribución favorita y es la que usa. Sin embargo, hace un tiempo me propuse el reto de probar todas las más populares, con el objetivo de encontrar de verdad la distribución más adecuada a mis necesidades. Un mes después, muchos cafés, muchas horas de descarga y muchos cd’s grabados, estoy en condiciones de presentar un resumen de las conclusiones que he extraído. Vaya por delante que son puras opiniones.

Mandrake

Es la que tuve siempre en mi equipo. Instalación comodísima, configurable 100%, y disponible en nivel principiante y experto. Algunos problemillas en el particionado, pero todo solucionable. Llevaba utilizando esta distribución desde hace mucho tiempo con buenos resultados. Además, en general, está muy cuidada desde el punto de vista estético. Sus principales defectos vienen por el reconocimiento de hardware, como en todos. Pero por lo demás es perfecta. Mi nota: un 8.

Mandriva

Sucesora de Mandrake: instalación muy sencilla, aunque daba algunos problemas al particionar. El diseño, desde mi punto de vista es bastante hortera, aunque esto es una opinión. Apenas permite modificar algunos parámetros del sistema, un fallo que me parece imperdonable. Por lo demás, sigue siendo igual de potente, salvo en el hardware. Me sorprendió que apenas tuviera cambios respecto a Mandrake… Mi nota: un 7.

Suse

La distribución del simpático camaleón. La instalación más sencilla que he visto nunca, casi es más difícil instalar el buscaminas. Eso para mí es definitivo, porque una de las cosas que más perjudicaban a Linux era la complejidad de la instalación. Tanta facilidad de uso afecta a la versatilidad: apenas puede configurarse nada al instalar. El diseño, en general, es impecable. Le costaba un poco funcionar en mi equipo, incluso llegó a colgarse en una ocasión (primer cuelgue de un Linux en mi equipo en cinco años…) lo que considero una herejía. Es muy fácil de usar, pero como siempre, ésto le resta potencia. Para empezar es perfecto. Mi nota: un 8

Fedora

Un diseño un poco tristón, pero muy eficiente. La instalación es lo más complicado, no es gráfica (actualizado) en su totalidad y hay que controlar un poco de particionamiento, así que no es recomendable para principiantes. Por lo demás está muy bien: buena detección de hardware y un buen conjunto de herramientas. Quizá un poco complicada de administrar. Mi nota: un 7

Ubuntu

Al final es con la que me he quedado. Se la puede bajar uno en un modesto CD, con dos opciones: instalable o “live” (utilizable sin instalación). La ventaja de ésto es que se instala en un vuelo y luego podemos añadir toda la funcionalidad extra que necesitamos. La deteccción del hardware es excelente y me tiene muy satisfecho. Tiene dos defectos: el primero es que le cuesta reconocer las particiones Windows (aunque al final se consigue) y el segundo (para mí), que utiliza Gnome por defecto, y un servidor es fan de KDE, pero eso se arregla rápido. Yo le doy un 8.

Debian

En realidad es la madre de todos los Linux (Ubuntu está basado en parte en Debian). La instalación de la versión 3 era un infierno en modo texto con compilación del núcleo incluída. Yo lo intenté (y de hecho lo conseguí), pero pronto desistí de utilizarla en serio, por la cantidad de tiempo que tuve que invertir en configurarlo todo. No sé si ésto habrá cambiado, pero si un día lo hace, las puertas de mi equipo están abiertas.

Y para terminar, algunas valoraciones generales… Ya sé que le doy mucha importancia a la estética, pero personalmente opino que algo que miro durante diez horas al día tiene que ser por lo menos bonito… Por otro lado, sigo viendo los fallos típicos de Linux: las instalaciones para ingenieros y la detección insuficiente de hardware (hay que ésto no es culpa de Linux sino de los fabricantes). La administración ha mejorado mucho, aunque sigo viendo un problema de centralización en la configuración de las opciones: todo está demasiado disperso, y opino que el esfuerzo de desarrollo tendría que centrarse más en éste tema.

Me parece destacable el gran avance de las últimas KDEs respecto a Gnome, y pronostico que con el tiempo sólo se usará la primera. ¿Puntos a su favor? En mi opinión un diseño claro, razonablemente parecido a Windows, un buen paquete de aplicaciones (ejem) y unas características interactivas muy interesantes.

Nota: Por si a alguno le parece relevante, estas son las características de mi equipo: IBM Thinkpad. Intel Centrino 1,4 GHz. 512 Mb de RAM, 40 GB de disco duro. Tarjeta de red, adaptador inalámbrico, módem… lo típico. Es una cosa modesta, pero para Linux va de sobra… si no se lo cree, pruébelo :-)

Publicado en Linux, Sistemas Operativos | 7 Comentarios

En 3 minutos™: Descubrir linux

En este documento está comprimido todo lo que se necesita saber para empezar a usar Linux, de tal forma que pueda leerse en el tiempo de tomarse un café… El tiempo de lectura calculado son 3 minutos, pero esto no es una competición :-P

Historia y filosofía (la justa y necesaria)

Bien. Para entender qué es eso de Linux es necesario entender primer qué es eso de “Unix”. Unix es un sistema operativo que fue desarrollado hace unos 30 años. Se trata de un sistema multiusuario y multitarea, orientado originalmente al trabajo en red. Su larga evolución lo ha convertido en uno de los sistemas operativos más sólidos que han existido.

En su momento, Unix se distribuía gratuitamente a ciertas instituciones (universidades), lo que fomentó su popularidad en los EEUU. Ademas, el sistema Unix era una arquitectura abierta, de forma que muchas empresas (HP, IBM o Sun) desarrollaron sus propias versiones del sistema. Por motivos de productividad, Unix comenzó a ser de pago para todos, con lo cual perdió difusión en los medios educativos.

En este momento comenzó a desarrollarse un SO orientado a la educación: “Minix”, que era “un Unix reducido” para su estudio en las universidades y abierto, claro. El finlandés Linus Torvalds (foto) decidió que el Minix podía ser algo más que todo eso, de modo que lo portó y comenzó a ampliarlo, con la colaboración de la comunidad informática a través de Usenet. Este es el nacimiento de Linux.

¿Por qué Linux?

Al ser Linux un proyecto de software libre, toda persona puede ayudar en su desarrollo, lo cual ha permitido su rápida evolución gracias a millones de colaboradores en todo el mundo. Como con Linux se distribuye el código fuente, cualquier usuario con ciertos conocimientos puede reprogramarlo según sus necesidades o en su caso optimizar su funcionamiento adaptándolo a la máquina que utiliza.

Distribuciones

Hemos dicho que al ser Linux software libre cualquier persona puede modificarlo y distribuir copias del mismo. Desde sus inicios, han existido muchas distribuciones de Linux desarrolladas por empresas, con ciertas características que nos pueden hacer preferir una sobre otra. Las más conocidas son Debian, Mandrake, Red Hat… Algunas de ellas son de pago, y es que la licencia de Linux sólo obliga a que se distribuya el código fuente del producto y a que se pueda copiar y distribuir con libertad. Normalmente las “organizaciones” que distribuyen Linux ofrecen soporte técnico si se paga por la copia del sistema.

Linux contra Windows

Ésta es la polémica de nunca acabar, pero como todos sabemos qué nos ofrece Windows, vamos a ver qué más nos puede ofrecer Linux…

  1. El precio: Linux es gratuito y Windows no. Aunque se piratee, esta es una práctica que acabará siendo muy complicada con el tiempo.
  2. La seguridad: Linux respeta todos los estándares y acuerdos internacionales, con lo cual es 100% compatible con todo lo que, a su vez, respete estos estándares. Además, como con Linux se distribuye el código fuente, se garantiza que todos los fallos que aparecen son corregidos con rapidez por la enorme comunidad que lo sustenta, y no hay que esperar a que “nadie” publique ninguna actualización cuando le venga en gana. Además tenemos garantías de que nuestro SO no utiliza nuestra información privada para satisfacer intereses empresariales. Además no existen virus que afecten a sistemas Linux y el sistema incorpora sistemas de protección en Internet muy eficientes.
  3. La calidad: La misma arquitectura de Unix asegura que el sistema es completamente multiusuario, lo cual no pasa con Windows. La confidencialidad de los documentos de un usuario está a salvo completamente. Linux no se cuelga ni se bloquea continuamente, y podemos tener mucha carga de trabajo sin desestabilizar el sistema.
  4. La flexibilidad: Si tenemos suficientes conocimientos podemos personalizar Linux hasta el infinito y optimizarlo para que sea ejecutado en nuestra máquina.
  5. La diversidad: Existe una cantidad desbordante de aplicaciones para Linux: las distribuciones pueden llegar a incluir hasta 8 cd’s llenos de software adicional, con lo cual no tendremos que comprar ni descargar programas adicionales. Tenemos a nuestra disposición procesadores de texto, hojas de calculo, juegos muy elaborados, software especializado (desarrollo, diseño gráfico, multimedia…)

Y seguro que me dejo mucho, pero hay prisa :-)

Empezar a usar Linux

Actualmente existen distribuciones llamadas “live CD”. Consisten en un CD de arranque con un sistema operativo Linux listo para funcionar. Sólo tenemos que arrancar el equipo desde CD, y se despliega ante nosotros una distribución Linux completamente funcional y tan rápida que nos podemos olvidar de que estamos ejecutándola desde CD. Todo ello sin reparticionar y sin modificar el sistema instalando nada. La más extendida es la alemana “Knoppix”, actualmente en su versión 4.0. Está disponible en multitud de idiomas, entre ellos castellano, gallego, catalán y vasco.

Lo mejor es empezar por este tipo de distribuciones para comenzar a conocer el sistema de archivos y las peculiaridades de Linux. Después de un tiempo podremos pensar en instalar una distribución permanente. Recomiendo empezar por Mandrake, porque su instalación es muy sencilla. Después lo mejor es pasarse a Debian, que es la que mejor funciona.

Publicado en Echando una mano, Linux, Sistemas Operativos | 8 Comentarios

Licencia

Nosololinux se distribuye bajo licencia Creative Commons

Creative Commons License