Capítulo 4: Elementos y estructura del sistema operativo. Procesos
Introducción al concepto de sistema operativo
Como vimos en el primer capítulo, el software de sistema, también llamado software de base, 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).
El concepto de API no es exclusivo de los sistemas operativos. Por el contrario, cualquier software puede ofrecer un conjunto de funciones y procedimientos (o métodos cuando se trate de programación orientada a objetos) que permitan a otros programas interactuar con ellos. De este modo, un programa puede usar las características de otro sin tener que reescribir su funcionalidad.
Otra ventaja del API es que el programa llamado podrá cambiar su diseño (el modo en el que resuelve la tarea) sin que tengan que preocuparse por ello los programas que lo llamen. Basta con que no cambie el propio API..
Si no existiera el software de sistema, cada programador que, por ejemplo, estuviese escribiendo un programa que ofreciera datos impresos, tendría que escribir las instrucciones necesarias para controlar de forma precisa la impresora. Si, además, el objetivo fuese que el programa funcionara en ordenadores con diferentes modelos de impresora, tendría que repetir el trabajo para cada modelo concreto. Esto haría que el trabajo al que se enfrentara fuese ingente.
Sin embargo, el software de sistema hace que los programas de aplicaciones puedan manejar las impresoras de una forma genérica, con órdenes básicas y sencillas, y lo que es más importante, generales para cualquier modelo de impresora.
Además, esta idea se aplica también al resto de los dispositivos: discos duros, dispositivos de almacenamiento USB, monitores, ratones, etc. Todas las ordenes de este tipo son las que forman el API.
El elemento fundamental del software de sistema es el sistema operativo aunque, como sabemos, colabora estrechamente con los controladores de dispositivo y el resto de elementos del software base.
Podríamos definir el concepto de Sistema Operativo como un programa, o un conjunto de programas que colaboran entre ellos para administrar los elementos físicos de un sistema informático, optimizando su uso y ofreciendo determinados servicios a los programas de aplicación.
Para referirse al sistema operativo suelen utilizarse las siglas SO (o bien, OS, del inglés Operating System).
Un sistema operativo se encargará de aspectos como:
-
El uso, compartido y ordenado, de los recursos entre diferentes usuarios.
-
La protección de recursos, para evitar que un usuario acceda a recursos para los que no está autorizado.
Para que esta protección sea posible, el sistema informático debe ser capaz de ejecutar instrucciones en dos niveles diferentes:
-
En modo usuario: es el modo menos privilegiado de funcionamiento del sistema. En este modo no se permite el acceso directo al hardware. Las instrucciones que se ejecutan en este modo sólo pueden acceder a su propio espacio de direcciones de memoria y utilizan el API del sistema para requerir los servicios del sistema operativo. Este es el modo de ejecución que utilizan todos los programas de aplicación que tengamos instalados
-
En modo núcleo (también llamado modo kernel) o modo supervisor: En él, las instrucciones se ejecutan en un modo privilegiado, teniendo acceso directo a toda la memoria (incluidos los espacios de direcciones de todos los procesos que estén ejecutándose). También podrán acceder a todo el hardware disponible. En este modo sólo se ejecutan algunas partes del sistema operativo.
Desde un punto de vista comercial, los sistemas operativos se ofrecen como un software que incluye diferentes herramientas para proporcionar funcionalidades básicas al usuario. Esto hace que el usuario piense en el navegador web o en el editor de textos como partes del sistema operativo. Sin embargo, esta creencia es errónea, ya que el navegador web, el procesador de textos e incluso la propia interfaz gráfica que estamos utilizando forman parte del concepto de software de aplicación. El verdadero sistema operativo se encuentra oculto bajo estas y otras herramientas, haciendo de intermediario entre ellas y el hardware del ordenador.
Tipos de sistemas operativos
Una vez que tenemos un primer acercamiento al concepto de sistema operativo, también podemos hablar de su clasificación según diferentes categorías.
Si nos fijamos en la capacidad que puede tener el sistema operativo para realizar varias tareas al mismo tiempo, los dividiremos en:
-
Monotarea: Pertenecerán a esta categoría los sistemas operativos que pueden realizar solo una tarea cada vez. De este modo, para ejecutar un segundo proceso, deberemos esperar a que complete su ejecución el primero. Un ejemplo clásico de este tipo de sistemas era MS-DOS.
-
Multitarea: En esta categoría se encuentran los sistemas operativos que tienen la capacidad de dividir el tiempo de ejecución del procesador entre diferentes procesos. De esta forma, cuando el procesador es suficientemente rápido, dará la sensación de que todos los procesos se ejecutan al mismo tiempo. Como ejemplos, tenemos a la práctica totalidad de los sistemas operativos para ordenadores actuales: Windows, macOS, GNU/Linux, …
Aunque más adelante haremos una definición más precisa, en términos generales entendemos el concepto de proceso como un programa que se está ejecutando y, por lo tanto, tiene asignara una porción de memoria RAM y un conjunto de recursos.
Cuando tenemos en cuenta el número de usuarios que pueden usarlo simultáneamente, hablaremos de dos tipos:
-
Monousuario: Este tipo de sistemas operativos solo permiten que un usuario tenga iniciada su sesión de trabajo en cada momento. Esto significa que, para que un usuario pueda interactuar con el sistema, otro usuario deberá dejar de hacerlo. Como ejemplos, podemos mencionar a MS-DOS y todas las versiones de escritorio de Windows anteriores a XP. En realidad, las versiones más modernas de Windows para escritorio también imponen esta limitación, pero por una cuestión de licencia.
-
Multiusuario: Son sistemas operativos que pueden atender a varios usuarios trabajando en el sistema, a la vez, de manera independiente. Normalmente, uno de ellos lo hace de forma local, en el propio ordenador, y el resto usando software de escritorio remoto desde equipos menos potentes o terminales ligeros. Como ejemplos podemos nombrar las versiones de servidor de Windows y GNU/Linux.
Atendiendo al número de procesadores que pueden administrar, también tenemos dos categorías:
-
Monoprocesador: Se trata de sistemas operativos que solo son capaces de administrar los recursos de un procesador (con un colo núcleo). En muchos casos, cuando funcionan en un ordenador con varios procesadores, o un procesador con varios núcleos, se ejecutan sobre el primero y el resto son ignorados. Como ejemplos, podemos mencionar a MS-DOS y todas las versiones de escritorio de Windows anteriores a XP.
-
Multiporcesador: Son sistemas operativos capaces de administrar varios procesadores (o núcleos), repartiendo su capacidad de proceso entre los diferentes procesos. Puede ocurrir que, a lo largo del tiempo, un proceso vaya ejecutándose en diferentes procesadores, incluso durante la misma ejecución. Pueden servirnos de ejemplo casi todos los sistemas operativos actuales: Windows, macOS, GNU/Linux, …
Por último, aunque más adelante hablaremos con más detalle de este aspecto, podemos clasificar los sistemas operativos según su licencia. En este sentido, tenemos dos categorías:
-
Licencia propietaria: Son sistemas operativos cuyo código fuente no es público y tienen limitados los derechos de los usuarios (en cuando a copiarlos, modificarlos o distribuirlos). Son propiedad de una empresa. Los ejemplos más conocidos son Windows y macOS.
-
Licencia libre: Son sistemas operativos que publican su código fuente. Los usuarios pueden copiarlos, modificarlos o distribuirlos, siempre que tengan en cuenta las limitaciones de su licencia. Por ejemplo, algunas de ellas establecen que las posibles modificaciones también deben publicarse bajo la misma licencia. Los ejemplos más conocidos de es tipo de sistemas son las distintas distribuciones de GNU/Linux.
Como has ido viendo en los sucesivos ejemplos, un sistema operativo puede pertenecer a múltiples categorías. Así podemos decir, por ejemplo, que Windows 10 es multitarea, monousuario, multiprocesador y con licencia propietaria.
Actividad 1: Tipos de sistemas operativos
Crea una tabla donde aparezca, en cada fila, un sistema operativo de los mencionados en este apartado. En las columnas aparecerán las diferentes categorías mencionadas:
-
Monotarea.
-
Multitarea.
-
Monousuario.
-
Multiusuario.
-
Monoprocesador.
-
Multiprocesador.
-
Licencia propietaria.
-
Licencia libre.
A continuación, recorre cada fila marcando las casillas que correspondan a las categorías del sistema en el que te encuentres.