sábado, 25 de mayo de 2013

Tu computadora y tú: cosas del sistema operativo

En una entrada anterior he descrito al Sistema Operativo (en adelante abreviado SO) como la interfaz entre los diversos dispositivos físicos que componen el computador (procesador, memoria, pantalla, teclado,...) y las aplicaciones que utilizas diariamente: el procesador de textos, la aplicación de manipulación fotográfica, el gestor de ficheros...

De esta forma, tú abres un procesador de textos, escribes un texto y lo guardas en un fichero con un nombre, digamos, "ensayo_naturaleza_del_hombre.doc". El procesador de textos se ocupa de definir el tamaño de la página, los márgenes, el tipo de letra de cada párrafo y le indica al SO que cree un fichero con el nombre ensayo_naturaleza_del_hombre.doc. El SO crea un fichero con tales datos y a través del sistema de archivos lo guarda en un disco. El sistema de archivos añade información al menos como el nombre del fichero y su ubicación real dentro del disco.

Si unos días después vuelves a usar el mismo fichero, puedes abrir tu procesador de textos, pulsas en el menú "Abrir" y seleccionas el fichero con el nombre "ensayo_naturaleza_del_hombre.doc"; entonces la aplicación le indica al SO que quiere acceder al contenido de dicho fichero, el SO accede al sistema de archivos y ejecuta una operación "Abrir" sobre el fichero ensayo_naturaleza_del_hombre.doc; el sistema de archivos accede al índice y constata que el fichero ensallo_naturaleza_del_hombre.doc se encuentra en un lugar determinado del disco, lo abre y se lo envía al SO, el cuál a su vez se lo envía al procesador de textos. El procesador de textos lee el contenido envíado, y crea una apariencia de página con las características indicadas en dicho fichero: tamaño, márgenes, estilo de los párrafos, etc. Y voilà! ya tienes tu carta de vuelta otra vez. Puedes imprimirla, para lo cual la aplicación le pedirá al SO que le indique a la impresora que lo imprima, modificarlo, iniciando un proceso similar al del primer día, etc.

Esa es la función del SO a grandes rasgos. Puede parecer que usar SO implica complicar las cosas necesariamente, pero hay que tener muy presente que lo que menos importa en un computador es el número de operaciones a realizar: da igual hacer 10 o 1000 operaciones simples para realizar una tarea, y lo importante es más bien qué tareas están disponibles, que es una forma de decir que lo importante es qué aplicaciones puedes utilizar en tu computador. Así hoy puedes utilizar aplicaciones para crear películas, de Diseño Asistido por Computador, ERPs, etc. Y todo esto porque el desarrollador puede centrarse en su aplicación en lugar de preocuparse de qué computadores existen y cómo funcionan internamente.

En la misión de aprender algo más sobre nuestro computador, comprender al SO consta de dos partes:

  1. Entender cómo nuestro SO actúa de interfaz entre el computador y las aplicaciones.
  2. Entender cómo el computador hace uso del SO. O más claramente, cómo lo ejecuta.
Entender el arranque de un SO no es del todo trivial, pero es capital para saber instalar un SO de nuestra elección. Después del artículo anterior sobre la BIOS, sería el paso lógico. Sin embargo, los mejores planes de hombres y ratones a menudo se frustran... Lo cierto es que tengo que conseguir un equipo con EFI para comprobar un par de cosillas antes de poder hacer una entrada también útil con computadores modernos.

La importancia de una buena capa

Una idea muy importante en los SO es el llamado "modelo de capas": así cada conjunto de apliciones cubre a los que están debajo, aislándolas.

En el dibujo de la izquierda hay una representación muy básica de la idea. Arriba está el usuario (tú, yo, etc.). El usuario puede utilizar aplicaciones, sean aplicaciones de usuario (como el procesador de textos anterior) como de sistema (como un gestor de ficheros).

Tales aplicaciones son las que realmente utilizan el SO para hacerle peticiones del tipo "guarda este fichero" o "abre aquel otro", o también "imprime ese fichero" o "visualiza tal fotografía". Y el SO, más o menos obedientemente, es el que hace que los dispositivos de nuestro computador cumplan tales peticiones.

Si has leído con atención esta entrada del blog y las anteriores, ya sospecharás que incluso en cada uno de estos cuatro niveles presentados hay varios niveles más. Ciertamente, aunque los detalles exactos pueden variar con cada SO.

La idea de "Interfaz" nos lleva a un concepto interesante que utilizan los desarrolladores de software: me refiero a la "API" (del inglés Application Programming Interface: Interfaz para la Programación de Aplicaciones). Eso significa que el desarrollador de una aplicación crea una especie de lista de funciones que pueden hacerse con su software. De esta forma, otro desarrollador que quiera utilizar dicho software sólo tendrá que preocuparse de usar las funciones en la forma establecida por el primer desarrollador.

Por ejemplo, un sistema gráfico muy básico podría dibujar círculos, líneas y cuadrados en una ventana. La API podría contener, entre las demás, una función tal que:

dibujarCírculo (Centro: TPosición, Radio: entero, anchoLínea: entero)
TPosición {x: entero, y: entero}

lo que significaría que para dibujar un círculo  de 12 cm. de radio en la coordenada 200,300 de la pantalla podrías hacer algo como

dibujarCírculo ({200,300}, 12, 1)

Lo importante no es hacer ahora un curso de desarrollo de aplicaciones intensivo, sino observar que esto permite que un desarrollador pueda utilizar cosas desarrolladas por otros sin preocuparse de cómo funcionan. El segundo desarrollador sabe que con eso se dibujará un círculo de 24 cm. de diámetro en la coordenada 200,300!!

Un SO tiene una "API del sistema", que es el conjunto de cosas que puede hacer dicho SO: abrir archivos, imprimir archivos, etc.

Uno de los problemas seculares de Microsoft Windows es que utiliza unas capas un poco agujereadas. En realidad, muchas utilidades del sistema no son desarrolladas por ellos (sistemas de copia de seguridad, antivirus, cortafuegos...) y lo que hacen los desarrolladores de estas aplicaciones es tratar de utilizar funciones del SO que sólo deberían ser utilizadas por otras funciones del SO. Al ser un uso "a ciegas" (más en este caso por ser software cerrado, que no puedes ver), como es de esperar se producen multitud de errores. Otro de los problemas, también de amplio arraigo, es que su funcionalidad es muy limitada, por lo que para hacer usos más avanzados es necesario realizar muchas operaciones muy complicadas, a lo que se añade el problema anterior. En general, para los administradores de SO Windows es conocido por lo muy difícil que resulta realizar tareas relativamente básicas.

En la próxima entrada trataré de explicar cómo el computador hace uso del SO: cómo lo arranca y en qué consiste realmente instalar un SO.

2 comentarios:

  1. "ensallo" ????
    Quizás en gallego, según la rae es: ensayo !! ;)

    ResponderEliminar
    Respuestas
    1. xd Así me gusta, que estés atento xd y no es cuestión del gallego, es cuestión de los copia/pega a partir de las 4 A.M. XD

      Corregido. Un saludo!!

      Eliminar