Capítulo 1: Caracterización de sistemas operativos
Los componentes software. Sistema operativo y aplicaciones.
Ya dijimos al principio del capítulo 1 que la RAE define el software como el “conjunto de programas, instrucciones y reglas informáticas para ejecutar ciertas tareas en una computadora”. Por lo tanto, el software es el encargado de dirigir al ordenador en la tarea de obtener resultados particulares.
En líneas generales, podemos decir que existen dos tipos de software: El software de sistema y el software de aplicación.
Hablemos de ambos tipos de forma más detallada:
Software de base de un sistema informático.
El software de base, también conocido como software de sistema, es el conjunto de software que se encarga de gestionar los recursos hardware del sistema informático, separando tanto a los usuarios finales como a los desarrolladores de software de sus características específicas. En particular, en su relación con la memoria, el almacenamiento externo, las impresoras, las comunicaciones y los dispositivos de comunicación con el usuario.
Para lograrlo, incorpora una interfaz adecuada para el usuario final y un conjunto de funciones y procedimientos que pueden ser invocados por los programas de aplicación y que recibe el nombre de API (del inglés Application Programming Interface).
Como puede imaginarse, un sistema informático siempre deberá disponer del software base necesario para que pueda ser utilizado.
Los principales elementos que configuran el software base son los siguientes:
-
El firmware: Se trata de un elemento lógico, que se encuentra integrado en un hardware concreto, y que incluye unas funciones básicas para dirigir su funcionamiento y facilitar su comunicación con el exterior.
Podríamos considerar que forma parte del hardware, porque viene incluido en un circuito, pero está formado por instrucciones con una estructura lógica, por lo que es considerado software. Incluso, en algunas ocasiones, puede ser actualizado.
El firmware suele almacenarse en memorias de solo lectura (como ROM, EPROM o EEPROM) que solo pueden modificarse en algunos casos y bajo condiciones muy específicas.
Un ejemplo muy conocido es la BIOS (siglas en inglés de Basic Input Output System) de un ordenador. Se encuentra integrada en la placa base y se encarga de las primeras etapas del arranque. Se asegura de que el funcionamiento básico del hardware es correcto. Esto incluye la placa base, la memoria RAM, los discos duros, el adaptador de vídeo, etc.
Además, incluye una herramienta de configuración que nos permite establecer parámetros básicos de funcionamiento. Para acceder a su interfaz, habitualmente basta con pulsar una tecla durante el inicio del sistema.
Una vez completadas las comprobaciones, se encarga de iniciar la carga del sistema operativo.
Por cierto, hemos hablado de la BIOS, pero en realidad, los ordenadores actuales suelen incluir UEFI (siglas en inglés de Unified Extensible Firmware Interface), que realiza las mismas funciones, pero incluye algunas características más avanzadas.
-
Los Drivers o controladores de dispositivo: Son programas que comunican al sistema operativo con dispositivos específicos. La idea es que, cuando incorporamos un nuevo dispositivo al ordenador, instalaremos también el controlador específico para ese dispositivo.
Este controlador dispone de una interfaz genérica para el sistema operativo, pero controla de forma específica el dispositivo para el que está programado. Así, cuando necesitemos cambiar de dispositivo por otro nuevo, bastará con instalar el controlador adecuado para que el sistema operativo sea capaz de comunicarse con él.
Los controladores de un dispositivo pueden acompañar al propio dispositivo cuando lo adquirimos o pueden facilitarse desde la página web del fabricante. En ocasiones, el fabricante también los facilita a la empresa que crea el sistema operativo para que pueda automatizarse la descarga cuando el dispositivo sea detectado por el mismo.
Además, en algunas ocasiones menos habituales, sobre todo cuando el sistema operativo no está muy difundido, o existen problemas de licencia, el fabricante no proporciona controladores para que su dispositivo funcione bajo ese sistema operativo. En estos casos, pueden utilizarse controladores de dispositivo genéricos, que no suelen aprovechar todas las características del dispositivo.
-
El sistema operativo: Es un programa, o conjunto de programas que se apoya en los elementos anteriores para administrar los elementos físicos de un sistema informático, optimizando su uso y ofreciendo determinados servicios a los programas de aplicación. Además, ofrece una interfaz adecuada a los usuarios para que puedan interactuar con todo el sistema.
Precisamente, será al sistema operativo al que dediquemos la mayor parte de los contenidos de este libro.
Entre los sistemas operativos más utilizados se encuentran Microsoft Windows, GNU/Linux y Apple macOS.
El juego de instrucciones de la mayoría de los procesadores dispone de un subconjunto de operaciones que sólo las puede ejecutar el sistema operativo cuando se ejecuta en modo privilegiado.
Software de aplicación
Está formado por los programas que permiten a los usuarios realizar tareas concretas. Podemos dividirlas en dos categorías:
-
Si las tareas son generales, como los procesadores de textos, hojas de cálculo, navegadores de internet, etc., estaremos hablando de aplicaciones horizontales.
-
Cuando las tareas son específicas de actividades particulares que puedan apoyarse en un sistema informático, como la contabilidad, el diseño asistido por ordenador, los videojuegos, etc., estaremos hablando de aplicaciones verticales.
Es muy frecuente que justo después de instalar un sistema operativo encontremos instalados algunos programas (como una calculadora, un navegador de Internet, un editor de textos, etc). Aunque estos programas forman parte del software de aplicación, es común que los usuarios finales piensen que forman parte del sistema operativo, ya que se instalan con él. Sin embargo, sólo se trata de un complemento que incorporan los proveedores del sistema operativo para facilitar ciertas tareas comunes.
Una vez que hemos revisado los conceptos de software de sistema y de software de aplicación, podríamos representar el funcionamiento de un sistema informático con una estructura de capas como la siguiente:
Los lenguajes de programación.
Los lenguajes de programación son un tipo especial de software. Hay autores que lo incluyen como una categoría independiente del software de sistema y del software de aplicación. Otros, sin embargo, los mencionan como una categoría particular dentro del software de aplicación. En cualquier caso, un lenguaje de programación está formado por un conjunto de símbolos y de reglas sintácticas y semánticas que están diseñadas para crear programas de ordenador.
En la actualidad, los lenguajes de programación utilizan una sintaxis próxima al modo de razonar de los seres humanos y para que los programas creados con ellos puedan ser entendidos por un ordenador deben someterse a un proceso de traducción llamado compilación.
Por este motivo, a los lenguajes de programación se les suele llamar lenguajes de alto nivel, mientras que al lenguaje que entiende el ordenador se le llama lenguaje máquina.
Del mismo modo, un programa escrito en un lenguaje de alto nivel recibe el nombre de código fuente mientras que el resultado de la compilación suele llamarse código objeto.
Un comportamiento particular de este planteamiento es que, en ocasiones, el código fuente se traduce a un código intermedio llamado bytecode. El objetivo es reducir la dependencia del código compilado de un sistema informático en particular. Así, el mismo programa compilado podrá ejecutarse en sistemas con diferentes configuraciones, incluso con distintos sistemas operativos.
Dos intérpretes de bytecode muy habituales son .NET Framework y la Máquina Virtual Java).
Para ejecutar un programa en bytecode se necesita un programa que lo interprete y lo convierta en ejecutable para un sistema en particular. Este programa suele llamarse máquina virtual o framework y debe existir una versión específica para cada sistema en el que necesitemos ejecutar el código intermedio.
Es muy frecuente que, para llevar a cabo su trabajo, los programadores utilicen Entornos de Desarrollo Integrados (IDE, del inglés Integrated development environment). Se trata de aplicaciones especializadas en este tipo de tareas que incluyen en su interior un editor para escribir el código fuente, un compilador para convertirlo en código objeto y otras herramientas complementarias, como depuradores que permiten detectar y eliminar los errores que se hayan producido al escribir el programa.
Algunos ejemplos de lenguajes de programación son: Visual Basic, Java, C (C++), PHP, Perl, Ruby.
Actividad 8: Diccionario de conceptos
Crea un pequeño diccionario con los conceptos explicados hasta el momento. Cada entrada deberá contener el nombre del término y una explicación breve del mismo.