Logo IIB spacio
nombre
spacio

spacio

TECNOLOGIAS DE LA INFORMACION

 

 

 

 

 

espacio

 

 

 

intro

spacer

spacer

Curso de Doctorado "Introducción a la programación de aplicaciones bioinformáticas con Perl"
Departamento de Bioquímica de la Universidad Autónoma de Madrid.

Madrid, 15 de Octubre de 2004.

Carlos Quijano San Martín - Departamento de regulación de la expresión génica

1.- EL SISTEMA OPERATIVO LINUX

   En esta intro, vamos a aprender que es, como funciona y las características básicas de un sistema operativo. Para ello utilizaremos GNU/Linux, un sistema operativo de moda, que le gusta a todo el mundo, gratuito gracias a su origen fuertemente ligado a Internet, y que además es el sistema operativo más indicado para el trabajo del día a día en el labo.

1.1.- ¿Qué tiene Linux que yo necesite?

   Podría discutirse este concepto desde tres puntos de vista diferentes, en los que encontrariamos que MacOS es el mejor sistema operativo para el usuario que busca un cuidado diseño y facilidad de uso, Windows seria un sistema pensado para la explotación del software de linea más agresiva y comercial y finalmente Unix y Linux serian definitivamente la solución más robusta para servidores de red y estaciones de trabajo científicas que manejan miles de tipos de datos de gran tamaño y complejidad. Pero hay una serie de razones de peso que definen a GNU/Linux como algo más:

  • Es un Sistema Operativo de verdad, que cumple con todos los estandares y especificaciones de IEEE e incluye todas las características que los libros de texto sobre Ingeniería Informática y Telecomunicaciones imponen a un sistema operativo robusto, potente y moderno. En este punto debe aclararse que MacOS, desde su versión 10 es un sistema Unix, igual que Linux y que Windows, el otro gran sistema operativo no cumple rigurosamente con este punto. Además gran parte del desarrollo de lo que seran las novedades del futuro de raliza en linux, y si no en Unix. Despues las empresas explotan estas novedades de una u otra forma. Desde el punto de vista evolutivo, Windows ha sufrido muchas transferencias de código Unix a lo largo del tiempo. Al revés a mi no me consta. Y MacOS, desde la versión X, es un sistema Unix exactamente de la misma especie que Linux y Solaris (Sun Microsistems), AIX (IBM), HP-UX...
  • GNU/Linux es totalmente gratis, con su distribución emblema Debian, y posee por ese mismo precio el mayor conjunto de aplicaciones y herramientas existente. Entre ellas sobresalen las ingenieriles, informáticas y científicas. Puedes encontrar sabores como SuSe, Fedora, Mandrake... en tiendas. Pero todas ellas son descargables desde internet. En cualquier caso hay más distribuciones completamente gratuitas como Debian, Gentoo, Slackware... Lo importante es saber que todas son Linux, pero con distinto grupo de desarrolladores encargados de mantener la distribucion.
  • Internet esta llena de recursos como tutoriales y manuales de todas las aplicaciones GNU así como del sistema operativo Linux. Cuando me quedo sin Internet tu ordenador sigue teniendo acceso a mucha información.
  • El propio sistema operativo tiene un manual interno ejecutable en todo momento realizado con elevada calidad y bastante didactico.
  • Podemos controlar totalmente el sistema sin encontrarnos con código oculto, como ocurre sobre todo con windows.
  • Es muy configurable. Puedes adaptarlo a tus gustos y tu look.
  • Nos permite hacer todo lo que queramos, incluso modificar el mismisimo núcleo del sistema. Linux pertenece a GNU y eso significa libertad. Su código esta abierto, quiere decir que sus programas vienen preparados para ser modificados por cualquier programador, como dicta la otra gran organización a la que responde Linux, la FSF.
  • Es integrable con cualquier otro sistema en nuestra propia red e incluso en el mismo ordenador si posee otro sistema operativo en disco. Linux no compite, simplemente existe para que los estudiosos de la informática y los programadores en general tengan un tema de reunión de esfuerzo, mejorarlo día a día y buscar la eficiencia.
  • No tiene intereses comerciales en permitirnos o no hacer determinadas cosas. Si algo falla se hace público para que se pueda resolver.
  • El software y el propio sistema operativo es desarrollado por expertos en cada tema, resolviendo sus propias inquietudes científicas, y desde hace algunos años, se trabaja además en la mejora constante de un interfaz de usuario cómodo, atractivo y moderno que acerque Linux al usuario ocasional.
  • Si aprendemos algo, sea lo que sea, usando Linux o cualquier Unix comercial, estaremos aprendiendo informática, no como usar un programa que puede desaparecer un buen día o que es practicamente distinto a cada nueva versión.
  • Un ordenador con Linux es utilizable para el trabajo diario durante más años que otro instalado sin Linux. Un pentium 200mhz fue mi servidor web y de ficheros en casa hasta el año pasado. Actualmente los ordenadores poseen 3500mhz. Y eso sólo es lo rápido que gira su reloj, nada más.
  • Y en definitiva la lista seria interminable de proponerselo, pues sin temor a equivocarnos podemos afirmar que Linux es mejor que cualquier otro sistema, al menos, hoy por hoy. Aunque quien quiera usar solamente Windows esta en su perfecto derecho. Yo lo uso mucho también cuando simplemente quiero utilizar un ordenador, no trabajar.

1.2.- ¿De verdad todo esto es cierto, o se trata de la visión de un fan del S.O. Linux?

   No, en contra de lo que parece, esto no es la parte de atrás de una caja de SuSe o RedHat, si no que es una visión objetiva de las ventajas de Linux que se puede encontrar en cualquier manual de sistemas operativos. Pero como me gustaría hacer un poco de apología del movimiento Open Source desde este pequeño rincón de Internet, ahí van unos pantallazos 100% linuxeros:

Ver DVDs y Video:   1   2   3   4   5
Escuchar Discos:   1   2   3
Leer el correo:   1   2   3   4
Mensajeria Instantanea:   1
Trabajos de Office:   1   2   3
Manipulación de imágenes:   1   2   3   4   5
Fotografía Digital:   1
Programar páginas web:   1
Compartir Archivos:   1
Selección de aplicaciones científicotecnológicas:   1   2   3   4   5   6   7   8   9   10   11   12   13   14

1.3.- ¿Desventajas de Linux?

   Se pueden considerar como aspectos a mejorar los siguientes:

  • Linux no es un juguete, es más complicado de utlizar que otros sistemas, pues no busca ocultar los conceptos si no que los muestra con la intención de que el usuario aprenda. Pero esto pasa cada vez menos, y ahora es facil instalar un linux como SuSe y que todo funcione casi sin necesidad de configuración manual.
  • Hoy por hoy, como Windows aun existe, hay menos software comercial. Y con esto me refiero fundamentalmente a juegos y aplicaciones importantes muy usadas como Photoshop, Ilustrator, software de Corel y Macromedia... Sin embargo, existen alternativas. Se pueden ejecutar en su versión windows usando Wine que son librerias de windows instaladas en Linux. Así tambien pueden funcionar muchos juegos nuevos y prácticamente todos los viejos. Por otro lado, The Gimp es un software 100% linux del mismo tipo que Photoshop y existen soluciones nativas para casi todos los demás programas de amplio uso.
  • Finalmente, como es de imaginar, las discrepancias entre el mundo comercial y Linux lo aislan un poco a favor de Windows. Pero esto es tan sólo producto del éxito de Microsoft dentro del mercado de PCs (que son ordenadores con arquitectura X86) y prácticamente los únicos en los que funciona Windows. Es algo que puede cambiar en cualquier momento y quizá ayude la decisión de Macintosh de cambiarse a Unix (dado que todo lo que se programe para MacOs X tandrá mucho terreno andado para funcionar en cualquier Unix con pocos cambios).

1.4.- Razones mas prácticas para utilizar Linux/Unix.

   Macintosh, como siempre, colabora con el mundo científico ademá de estar muy centrado en el del diseño gráfico, y de hecho actualmente con su nuevo sistema X y el hardware de los G5 de 64bits sus equipos son los mas potentes y adaptados a nuestras necesidades cientís. El Mac mas potente del mercado tiene capacidad para 8000Mb de RAM, dos procesadores e intercambia informacion entre dispositivos mediante buses de doble sentido y gran velocidad. Estas cosas no pasan con los PCs de la tienda o el super. Tambien Sun Microsystems ofrece un modelo a buen precio con caracteristicas similares, pero con la ventaja de ser un AMD Opteron (64bits) y por lo tanto es un PC (arquitectura X86). Asi que podemos instalar Windows en é. Es posible montar un ordenador X86 por piezas con relativa facilidad, y existen placas base tetra-procesador y duales.

En este curso de doctorado veremos de sobra las interesantes características de Linux/Unix/MacOSX como servidor de aplicaciones de bioinformática y como estación de trabajo científica. No pretendemos restar importancia a Windows, que sigue siendo interesante por lo sencillo de su uso como sistema operativo para el PC del hogar o para un servidor de red pequeña. También es posible pensar en Windows como un buen sistema de navegación web, documentación de proyectos e incluso como sistema operativo en el que ejecutar sencillos programas cinetíficos que permiten hacer operaciones prefijadas sobre datos de forma interactiva.

   Pero pese a todo, ya usemos Windows o MacOS, siempre terminaremos necesitando aprender programación en algún leguaje, y como usar la línea de comandos de Unix. Para poder realizar cálculos o análisis sencillos que diseñemos nosotros mismos o directamente aplicaciones informáticas, o incluso para publicar documentación técnica de alta calidad (BibTex/TeX/LaTeX), Unix/Linux nos puede dar mucho más juego y potencia que otras soluciones.

   Otro punto interesante es el manejo y almacenado de grandes cantidades de datos producidos en el labo. Con un sistema Unix podemos acceder a motores de bases de datos relacionales como MySQL (gratuito). De esta forma nuestros datos son facilmente accesibles desde cualquier otro ordenador para su consulta via web, o via Interface por aplicaciones bioinformás.     Si releemos todo lo que he estado escribiendo hasta este punto, la verdad es que ¡Ya sabemos mucho de Linux, Unix y ordenadores! Asi que si uso Mac tengo un Unix, si quiero puedo instalarme algo parecido (Linux) en mi PC y que gran cantidad de aplicaciones científicas de alta calidad y muy útiles para mi trabajo estan accesibles gratuitamente. :)

2.- ¿QUE ES UN SISTEMA OPERATIVO?

   No pretendemos que esta explicación deba ser asimilada al 100% porque para empezar no es rigurosa a ese nivel. La idea es que sea informativa para que el día que algun alumno necesite programar en serio ordenadores, pueda comprender más rápido un sistema, y así poder entender mejor por qué se hacen y por qué no se hacen determinadas operaciones.

   El sistema operativo es el programa más importante que el oredenador carga en memoria, convierte el ordenador en un aparato capaz de realizar tareas complejas basadas en operaciones matemáticas más o menos sencillas que en definitiva es lo único que comprende el microprocesador. Gestiona el acceso a los dispositivos de manera lógica, al contrario de la manera física, incomprensible salvo para un experto en electrónica y aún así siempre inmanejable por el ser humano. Ofrece al usuario una interfaz ya sea de comandos o gráfica para manejar el ordenador.

   En un ordenador, cuando apretamos el botón de encendido, lo primero que se ejecuta en memoria es la BIOS (Basic Input Output System), un programa que acompaña al hardware por lo que se llama firmware en vez de hardware o software, pues es las dos cosas y ninguna. En este paso el ordenador se entera de que es y que tiene, pero aun asi no sabe nada de lo que se espera de él, siguiendo en el estado de caja tonta casi inmanejable. Según le indique el usuario en la configuración de la BIOS, el siguiente paso que da el ordenador es buscar un programa para ejecutar en el disco duro, el CD, la disquetera o incluso la red de área local (LAN). Si no lo encuentra, avisa de que no puede arrancar el sistema operativo. Si encuentra ese programa, lo ejecuta. Como seguramente imaginamos ya, ese programa, el primer software que se ejecuta en el oredenador es precisamente el sistema operativo.

2.1.- ¿Que hace el Sistema Operativo?

   Lo primero que hace es escanear todo el hardware del ordenador y ponerlo en una lista, enlazarlo desde el nivel electrónico al nivel lógico, o llamemoslo al nivel "software". Para esto necesita unos programas especiales que se llaman drivers, o controladores de dispositivos. Ese programa le permite al sistema operativo comprender como se usa el dispositivo electrónico en cuestio: Disco duro, disquetera, CD-rom, DVD, grabadoras, impresoras... Practicamente todo tiene su driver y como cabe suponer, los driver son diferentes internamente para cada componente electrónico y para cada sistema operativo. Por esta razon, no podemos instalar un sistema operativo diseñado para PC x86 en un ordenador Apple-Motorola, un Sun-SPARC, Compaq-Alpha, etc. El hardware funciona diferente elecrónicamente y por tanto parte del sistema operativo depende de cada arquitectura comentada. Una vez que el sistema operativo analiza el hardware y lo inicializa, el siguiente paso es entrar en un estado de petición de acciones al usuario. Por ejemplo, inicio de sesión. En este punto, el sistema operativo moderno ya esta usando la red (actualmente la red es una parte importate de cualquier ordenador). Se debe iniciar sesion con un usuario. Ese usuario debe existir en el sistema, como mínimo siempre tendremos el "Administrador del Sistema" un poderoso usuario al que el sistema operativo le permite todo, cualquier acción, incluso aquellas que implican un importante riesgo de seguridad y pueden destruir el sistema. Se supone que el Administrador sabe lo que hace y no se le prohibe nada. Lo más común es que tengamos uno o más usuarios normales para usar el ordenador. La gestión de cuentas de usuario es una parte importante de todo sistema operativo. Muchas veces esta gestión se centraliza en un servidor de la red de area local. Cuando estamos "dentro" como un usuario del sistema, el entorno gráfico o de linea de comandos nos da el mando del ordenador de forma controlada basada en los "permisos" del usuario que estemos usando. Como comentamos antes, el usuario "Administrador" tiene pues TODOS los permisos. Como norma general, un usuario normal tiene todos los permisos en SUS ficheros, pero no puede tocar los ficheros que pertenecen, configuran y controlan al propio sistema operativo.

2.2.- ¿Cuales son las partes más importantes de un Sistema Operativo?

   Son el Núcleo, el Sistema de Ficheros, el Gestor de Memoria y el Gestor de Procesos. Al menos en este curso, lo que más nos interesa aclarar son estos cuatro grandes apartados de forma esquemática.

    1  Esquema general del Sistema Unix
    2  Comunicaciones entre procesos
    3  El Sistema de Archivos de Linux

  • El Núcleo: Tambien llamado kernel, es el encargado de enlazar el hardware con el software del sistema, las llamadas internas a funciones que utiliza el sistema operativo para acceder a los dispositivos, cargar módulos y controladores y muchas cosas más.
  • El Sistema de Gestión de Memoria: Se encarga de organizar la memoria RAM del sistema, dividiendola en páginas y direcciones para poder almacenar datos y acceder a ella de forma que puedan ejecutarse los programas sin interferir unos con otros. Tambien libera la memoria y pasa datos que no se estan usando pero continuan en ejecución a la memoria swap, que es ram simulada en disco duro o para ofrecernos mas capacidad de memoria que la RAM instalada, a precio de muchísima menos velocidad de ejecución. La idea más sencilla es que la memoria se trate de utilizar completamente, lo que significa que no se desaprovecha la velocidad casi instantanea de los datos en RAM comparados con los datos en disco.
  • El sistema de Gestion de Procesos: Mantiene la ejecución de todos los procesos de manera concertada, pasando de uno a otro entre los procesos activos y manteniendo aletargados los inactivos para que no consuman CPU.
  • El Sistema de Ficheros: Parte fundamental que nos permite acceder al disco duro cómodamente, manteniendo índices y tablas de los datos almacenados para encontrarlos rápidamente y visualizar el contenido del disco en un arbol jerárquico de directorios.

3.- ARRANQUE DEL SISTEMA OPERATIVO

   Linux arranca de la siguiente manera:

  1. Se carga de disco el bloque de arranque MBR (Master Boot Record), los sistemas de ficheros estan formados por bloques y si es un disco arrancable, el primero de ellos es el bootblk. Con esto arrancamos el programa LILO, LInuxLOader, que nos informa de que nucleo debe arrancarse y que disco tiene el sistema (puede estar en el mismo disco que el bootblk o en otro).
  2. Se carga el núcleo y ya se puede acceder al hardware y por lo tanto empezar a ejecutar el resto de programas del sistema operativo.
  3. Se chequea todo el hardware y se configura (por ejemplo, la tarjeta de red).
  4. Se comienzan a ejecutar los programas configurados en los archivos de configuración de arranque (por ejemplo las interfaces de red).
  5. Se pasa el control del ordenador al usuario mediante el LOGIN. O se entra en el sistema como un usuario por defecto.

   En linux tenemos varios niveles de arranque del sistema, desde el modo supervisor sin acceso a red y mono-usuario hasta el modo multiusuario con servicios de red. Es por esta razón que cuando termina LILO, se pasa el control al programa INIT, que va ejecutando los programas correspondientes a cada nivel y pasando al siguiente de manera secuencial.

Nivel 0:
Apagado de la computadora "halt"
Nivel 1:
Sistema monousuario sin red, estado de administrador del sistema
Nivel 2:
Sistema multiusuario sin red
Nivel 3:
Sistema multiusuario con funciones de red
Nivel 4:
Si uso actualmente
Nivel 5:
Sistema multiusuario con funciones de red y gestor de ventanas
Nivel 6:
Rearranque del sistema "reboot"

NOTA: Aquí esta la razón por la que no podemos apagar el sistema de un "botonazo". Para apagar el sistema se deben recorrer los niveles de ejecución al reves hasta llegar al nivel 0, en el que lo único que tenemos es la memoria RAM desconectada, sincronizada con el disco duro, la CPU en relax y los dispositivos desenlazados. En ese momento podemos apretar el boton de OFF sin riesgo de destruir nuestro sistema. ¿Quien se atrevería a parar el motor de un coche en 5ª a 100 kilometros por hora girando la llave? Al nucleo le pasaria algo parecido a lo que le ocurriría al motor, y nosotros perderiamos todo o quedariamos seriamente perjudicados, exactamente lo mismo. La proxima vez que apreteis el OFF sin haber aparcado el sistema, pensar en esta analogía.

4.- EL SISTEMA HA ARRANCADO ¿Y AHORA QUE?

   Bueno, pues sencillamente tenemos que usarlo.

4.1.- Primeros pasos por el sistema operativo: En el principio todo era caos y oscuridad - La linea de comandos:

   Salvo que tengamos configurado el arranque en modo gráfico por defecto (lo que suele ser muy común) entraremos en la linea de comandos, y lo primero es introducir nuestro nombre y clave para acceder al sistema con nuestros permisos de usuario. Bastara con ejecutar el comando "startx" para comenzar a trabajar en el sistema de vetanas de Linux como el usuario especificado.

Comandos básicos de Linux:

5.- YA SE LINUX. ¿ALGO CON LO QUE TRABAJAR UN RATITO COMO BIOLOGO MOLECULAR?

   En el Servidor de Bioinformática y Biocomputación, tenemos multitud de programas instalados, la página web del Servidor es:
http://biocomp.iib.uam.es

   La idea es que el alumno se entretenga navegando entre tanta información sobre Bioinformática y Linux y se divierta, aprendiendo más de sus fallos que de sus aciertos y disfrutando de las cosas que le van saliendo bien poco a poco. Si necesitamos profundizar en algún concepto, basta con proponerselo. Ahora es tiempo de jugar un poco con ellos, pues son nuevos. Aquí tenemos más enlaces interesantes para ir empezando:

  • EMBOSS
  • BLAST: En su versión WU-Blast, por defecto en el servidor ejecutamos el NCBI-Blast.
  • ClustalW ... y el resto de programas los podemos aprender a manejar usando la línea de comandos y el 'man' ¿fácil no?

6.- CONTROL DE PROCESOS

   Sería interesante que aprendieramos más comandos. Los de mayor importancia que deberíais ir conociendo para una mejor convivencia y eficiencia trabajando con el Servidor son los siguientes:

"kill" "bg" "fg" "%" "&" "ps" "nice" "renice" "nohup"

7.- TRABAJAR EN RED.

   Es importante aprovechar que tenemos unas avanzadas instalaciones de red, y trabajar con mentalidad .COM ;) para ello os remito a la siguiente documentación de otros cursos internos:





Curso de Doctorado "Introducción a la programación de aplicaciones bioinformáticas con Perl"
Departamento de Bioquímica de la Universidad Autónoma de Madrid.

España, 28 de Octubre de 2003.

Carlos Quijano San Martín - Servicio de Bioinformática

 

 

 

 

spacio
spacio
spacio

 

Ultima modificación: 21 de Septiembre de 2005
Instituto de Investigaciones Biomédicas "Alberto Sols"
C/Arturo Duperier 4. 28029 Madrid. (Spain)
Tel +(34) 91 585 4400 // Fax +(34) 91 585 4401
sobre Email:Servicio de BioInformatica