En los últimos años las computadoras han estado evolucionando continuamente. Los sistemas operativos con los que cuentan también son parte importante de esta continua actualización, ya que cada uno posibilita tener y administrar diversos recursos de acuerdo a sus aplicaciones; de ahí la importancia de conocer sus características y funcionamiento. Debido a lo anterior, a lo largo de este tema abordaremos los diversos sistemas operativos que actualmente existen, así como sus características y funcionamiento.
(s. a.) (s. f.). Sistemas operativos [collage]. Tomada de http://tecnologia7cm.blogspot.mx/2013/02/sistemas-operativos.html
Un sistema operativo (SO) es un conjunto de programas que hacen posible la comunicación entre el usuario y la computadora; esto es la interfaz, todo aquel medio físico que conecta un dispositivo periférico con la computadora; o todo software que comunica al usuario con la computadora.
Todas las computadoras tienen un SO que genera la comunicación y funciona como una especie de traductor que entiende a la máquina y al usuario. Su importancia es vital: se encarga de controlar y administrar todos los recursos. Por eso se ha dicho que es la capacidad de un componente físico de la computadora o la actividad de un programa que puede ser utilizada por varios programas del sistema (hardware y software), de modo concurrente o simultáneo.
Algunas de las características principales del SO son las siguientes:
Características principales de los SO
Funciones básicas
Como ya se mencionó, un SO actúa como interfaz entre la máquina y los programas de aplicaciones o el propio usuario. También se encarga de gestionar los recursos del sistema informático para obtener un uso óptimo de ellos. A continuación se tratarán las funciones del SO desde ambos puntos de vista, así como las características que debe presentar para mantener una capacidad de evolución adecuada.
El SO ofrece servicios en las áreas descritas a continuación.
Haz clic en los títulos para ver la información correspondiente.
Da una gran variedad de servicios, como los editores y depuradores (debuggers), para ayudar en la creación de programas. Con frecuencia estos servicios aparecen como programas de utilidad que no forman realmente parte del sistema, pero son accesibles a través de él.
Para ejecutar un programa es necesario realizar un cierto número de tareas. Las instrucciones y datos deben cargarse en la memoria principal, y los archivos y dispositivos de E/S inicializarse y prepararse otros recursos. El SO administra todas estas tareas por el usuario.
Cada dispositivo de E/S requiere un conjunto propio y peculiar de instrucciones o señales de control para su funcionamiento. El SO, ayudado por los manejadores o drivers de dispositivo, tiene en cuenta estos detalles, de modo que el programador pueda pensar en forma de lecturas y escrituras simples desde o hacia el dispositivo.
El SO se ocupa del formato de los archivos y del medio de almacenamiento, y en sistemas de varios usuarios trabajando simultáneamente brinda los mecanismos para controlar que el acceso a los archivos se lleve a cabo de una manera correcta.
En un sistema compartido o público el SO controla el acceso al sistema como un todo y a sus recursos específicos. Las funciones de acceso deben brindar protección a los recursos y a los datos ante usuarios no autorizados y resolver conflictos en la propiedad de los recursos.
Cuando un sistema informático está en funcionamiento pueden producirse varios errores, ante lo cual el SO debe dar una respuesta que elimine la condición de error con el menor impacto sobre las aplicaciones en ejecución.
Un SO debe recoger estadísticas de utilización de los diversos recursos.
El SO es responsable de la gestión de los recursos de la máquina y mediante su administración posee el control sobre las funciones básicas de la misma; por ello, no es nada más que un programa, pero su diferencia clave es el propósito que tiene. El sistema operativo dirige al procesador en el empleo de otros recursos del sistema y en el control del tiempo de ejecución de los programas de usuario.
A continuación se analizan cinco estructuras que han sido llevadas a la práctica en los SO.
Sistemas monolíticos
La estructura monolítica es la más utilizada en los SO. En general, es posible decir que dentro de esta estructura de sistema no hay una estructura definida. En otras palabras, cuando el SO es creado se escribe como una colección de procesos que cumplen con diversas funciones, donde cada uno de ellos puede ser llamado por el sistema cuando sea necesario.
Para ayudar a identificar cada proceso, estos son generados con una interfaz perfectamente determinada que recibe una serie de valores-parámetro bien definidos y entrega un resultado o salida única. Adicionalmente, estos procesos pueden llamar a otros procesos de su secuencia de instrucciones cuando sea necesario, lo que los vuelve complementarios.
Cuando un SO es creado con estructura monolítica, su programa objeto procesa y compila todos los procedimientos de forma individual para, posteriormente, de acuerdo a las instrucciones contenidas en cada procedimiento, llamar a los procedimientos complementarios y realizar el enlace entre ellos, generando un fichero objeto único. Por otro lado, los procedimientos contenidos en la estructura monolítica pueden ver a todos los demás procedimientos, lo que permite un alto grado de trasparencia en la información, en comparación con otras estructuras, como la modular o por paquetes, donde cada módulo o paquete contiene su propia información y no es posible ver la de otros, a menos que sea solicitada por un procedimiento dentro de ellos (en cuyo caso sólo se podrá visualizar la información de entrada del procedimiento).
Pese a lo anterior, los sistemas monolíticos cuentan con una estructura a nivel básico; esto se puede observar cuando los servicios o llamadas al sistema son realizados. Al ocurrir lo anterior, los parámetros necesarios para la ejecución del servicio son colocados en la pila y posteriormente se ejecuta una instrucción denominada TRAP, que realiza un cambio de modo, al pasar de modo usuario a modo núcleo y transferir el control al sistema operativo para que efectúe la operación. Así, el sistema operativo obtiene los parámetros y determina la llamada al sistema o servicio que debe ejecutar. Posteriormente, utiliza el número de llamada al sistema como un valor de índice para almacenar dicha llamada en una tabla de registro de llamadas al sistema, y como parámetro para un apuntador que lo asocia al procedimiento que ejecuta esa llamada.
De modo general, se puede resumir la estructura monolítica de la siguiente manera:
Estructura monolítica
Por cada llamada realizada al sistema, en el modelo monolítico debe existir un procedimiento de servicio encargado de atenderla. Los procedimientos auxiliares o de utilidad reúnen la información necesaria para la correcta ejecución del procedimiento de servicio; por ejemplo, obtener datos de los programas ejecutados por el usuario.
Esta división de los procedimientos en tres capas se muestra en la figura siguiente:
Modelo de estructuración simple para un sistema monolítico
Sistemas estructurados en capas
Como su nombre lo indica, consiste en la organización de las diversas funciones del sistema en una estructura jerárquica de capas, construidas a partir de una capa base encargada de la administración del procesador. El primer sistema operativo (SO) conocido con esta estructura fue construido por E. W. Dijkstra y sus estudiantes, en 1968, el THE (Technische Hogescholl Eindhoven), en los Países Bajos.
El sistema de Dijkstra era relativamente sencillo: procesaba la información por lotes para un ordenador holandés, el Electrologica X8, con una capacidad de 32 Kb de memoria de 27 bits.
La siguiente figura describe las seis capas del sistema THE. La capa 0 era encargada de administrar al procesador, efectuando la conmutación de procesos conforme se realizaban las interrupciones o expiraba el tiempo asociado a cada proceso (timer). Por encima de la capa 0 se ejecutaba una serie de procesos secuenciales independientes, que podían ser programados en cualquier momento sin importar el número de procesos que se estuvieran operando en ese momento, lo que permitía hacer una programación múltiple de procesos en el procesador.
Capas del sistema THE
Ahora veamos cómo funcionaba cada una de estas capas:
Funcionamiento de capas
Máquina virtual
El concepto de máquina virtual se utiliza mucho actualmente en un contexto diferente: la ejecución de programas MS-DOS antiguos en un Pentium u otra CPU Intel de 32 bits. Al diseñar el Pentium y su software, tanto Intel como Microsoft se percataron de que podría haber una gran demanda de gente queriendo ejecutar su software antiguo sobre el hardware nuevo. Por ese motivo, Intel incluyó un modo 8086 virtual en el Pentium. Así, la máquina actúa como un 8086 (idéntico a un 8088 desde el punto de vista del software), con el direccionamiento de 16 bits con un límite de 1 MB.
Exokernels
Los exokernels o exonúcleos son sistemas creados con fines de investigación científica en el Instituto Tecnológico de Massachusetts, con el objetivo de crear una capa de software para sistemas virtuales. Están situados en la capa más baja de los sistemas operativos, ejecutándose en modo de núcleo, y su función principal es administrar y asignar recursos para los sistemas que dan soporte a las máquinas virtuales. Éstas tienen la capacidad de ejecutar de forma independiente su propio sistema operativo, como lo hacen los procesadores Icore de Intel y la VM/370, limitados por los recursos asignados por el exokernel.
Modelo cliente-servidor
Al paso del tiempo, observando las ventajas de mover procesos y códigos de programación a modelos de capas, se han generado sistemas cliente-servidor. Estos consisten en ir quitando procesos ejecutados en modo núcleo y pasarlos a las capas superiores del sistema, dejando un modo de ejecución (microkernel) con solamente los procesos esenciales para el funcionamiento base del sistema. La intención de este modelo es destinar la mayor parte de los recursos del sistema operativo en la ejecución de los procesos de usuario.
En el esquema cliente-servidor, los procesos de usuario (denominados procesos de cliente en este esquema) envían una solicitud a un proceso servidor, que al recibirla ejecuta las tareas solicitadas, regresando el resultado al proceso cliente.
Funcionamiento de capas
Como se observa en la figura anterior, la función del núcleo se reduce a la administración de la comunicación entre los procesos cliente y servidor, dividiendo el sistema en partes, las cuales se encargan de una fase específica que realiza el sistema, como el servicio de procesos, terminal de procesos y proceso de archivos. Por otro lado, la división del sistema permite tener un sistema con estructura modular más pequeña y manejable, con la ventaja de que, al ser ejecutados los procesos en modo usuario, no se tiene acceso directo al hardware, lo que previene fallas en el mismo.
Asimismo, los sistemas desarrollados con el esquema cliente-servidor presentan mayor adaptabilidad para ser empleados con un esquema de sistemas distribuidos, donde diversos ordenadores proveen de distintos servicios, evitando concentrarlos en uno solo. Con este esquema distribuido, los usuarios pueden emplear diversas peticiones de servicios a la vez, atendidas en varios equipos; el resultado es un tiempo de respuesta menor.
Existen diferentes tipos de sistemas, entre los cuales podemos encontrar:
Tipos de sistema operativo
A continuación se explica en qué consiste cada uno, así como cuáles son sus características principales.
Sistemas operativos de mainframe
Estos sistemas son empleados para las computadoras gigantes (todavía presentes en importantes centros de cálculo corporativos), que se distinguen de los ordenadores personales por su capacidad de E/S. No es raro hallar mainframes con 1000 discos y miles de gigabytes de datos, pero resultaría verdaderamente extraño encontrar un ordenador personal con esas especificaciones. Los mainframes están renaciendo ahora como servidores web avanzados, servidores para sitios de comercio electrónico a gran escala y servidores para transacciones de negocio a negocio.
Los sistemas operativos para mainframes están claramente orientados al procesamiento de varios trabajos, a la vez que requieren, en su mayoría, cuantiosas cantidades de E/S, y los servicios que ofrecen suelen ser de tres tipos: procesamiento por lotes, procesamiento de transacciones y tiempo compartido.
Sistemas operativos de servidor
En un nivel más abajo, están los sistemas operativos (SO) de servidor, los cuales se ejecutan en servidores, que son ordenadores personales muy grandes, estaciones de trabajo o incluso mainframes. Dan servicio a múltiples usuarios a través de una red y les permiten compartir recursos de hardware y software.
Los servidores pueden prestar servicios de impresión, ficheros o Web. Los proveedores de Internet tienen en funcionamiento muchas máquinas servidoras para dar soporte a sus clientes, y los sitios web utilizan esos servidores para almacenar las páginas web y atender las peticiones que les llegan.
Entre los típicos SO de servidor están UNIX y Windows 2000. Linux también está ganando terreno en los servidores.
(s. a.) (s. f.). Servidores [fotografía]. Tomada de https://pixabay.com/es/tecnolog%C3%ADa-servidores-servidor-1587673/Características principales de los SO
Sistemas operativos multiprocesador
Una forma cada vez más común de obtener potencia de computación de primera línea es conectar varias CPU en un mismo sistema. Según la forma exacta de la conexión y de qué recursos se comparta, estos sistemas reciben el nombre de ordenadores paralelos, multicomputadores o multiprocesadores. En todo caso necesitan SO especiales, con frecuencia variaciones de los SO de servidor, con características propias para la comunicación y su conectividad.
Sistemas operativos de ordenador personal
Su tarea consiste en presentar una buena interfaz a un único usuario. Se les utiliza ampliamente para procesamiento de texto, hojas de cálculo y acceso a Internet.
Ejemplos comunes de estos sistemas son Windows 98, Windows 2000, Macintosh y Linux. Son tan conocidos que con toda seguridad no necesitan mayor presentación. Incluso muchas personas ni siquiera saben que existen otros tipos de SO.
Sistemas operativos de tiempo real
Se caracterizan por tener al tiempo como su principal parámetro. Así, en los sistemas de control de procesos industriales, los ordenadores de tiempo deben recoger datos acerca del proceso de producción y utilizarlos para controlar las máquinas de la fábrica. Con frecuencia, hay plazos a cumplir estrictamente; por ejemplo, si un automóvil avanza en una línea de montaje, deben efectuarse ciertas acciones en algunos instantes precisos. Si un robot soldador suelda demasiado pronto o demasiado tarde, el automóvil puede quedar arruinado.
Si es absolutamente indispensable que la acción se efectúe en cierto momento (o dentro de cierto intervalo), se tiene un sistema de tiempo real riguroso (hard real-time system).
Otra clase de sistema de tiempo real es el de tiempo real moderado (soft realtime system), en el cual es aceptable dejar de cumplir ocasionalmente algún plazo. Los sistemas de audio digital o multimedia pertenecen a esta categoría. VxWorks y QNX son SO de tiempo real muy conocidos.
Sistemas operativos empotrados
Continuando en descenso a sistemas cada vez más pequeños, llegamos a los ordenadores de bolsillo (palmtop) y sistemas empotrados.
Sistemas operativos de tarjeta inteligente
Los sistemas operativos más pequeños se ejecutan en tarjetas inteligentes, dispositivos del tamaño de una tarjeta de crédito que contienen un chip de CPU. Sus limitaciones son muy severas en cuanto a potencia de procesamiento y memoria. Algunos de ellos sólo desempeñan una función, como el pago electrónico; otros, varias en la misma tarjeta inteligente. A menudo se trata de sistemas patentados.
Algunas tarjetas inteligentes están orientadas a Java. Eso quiere decir que la ROM de la tarjeta inteligente contiene un intérprete de la máquina virtual de Java (JVM). Los applets (pequeños programas) de Java se descargan a la tarjeta y son interpretados por el intérprete JVM. Algunas de estas tarjetas pueden tratar varios applets al mismo tiempo, lo que conduce a la multiprogramación y a la necesidad de planificarlos.
La gestión de los recursos y su protección es también un asunto importante cuando dos o más applets se presentan al mismo tiempo. Finalmente, el SO –por lo regular muy primitivo– presente en la tarjeta debe tratar de resolver estas cuestiones.
Sistemas operativos de línea de comandos
Definen la forma de interfaz entre el sistema operativo y el usuario, en la que éste escribe los comandos utilizando un lenguaje de comandos especial. Se consideran más difíciles de aprender y utilizar que los de las interfaces gráficas; sin embargo, son, por lo general, programables, lo que les otorga una flexibilidad que no tienen los sistemas basados en gráficos carentes de una interfaz de programación.
Sistemas operativos de entorno gráfico
Es el tipo de visualización que permite al usuario elegir comandos, iniciar programas y ver listas de archivos y otras opciones, utilizando las representaciones visuales (íconos), al igual que las listas de elementos del menú. Las selecciones pueden activarse, bien a través del teclado o con el mouse.
Para los autores de aplicaciones, las interfaces gráficas de usuario ofrecen un entorno encargado de la comunicación con la computadora. Esto hace que el programador se concentre en la funcionalidad, ya que no está sujeto a los detalles de la visualización ni a la entrada a través del mouse o el teclado. También permite a los programadores crear programas que realicen de la misma forma las tareas más frecuentes, como guardar un archivo, porque la interfaz proporciona mecanismos estándar de control, como ventanas y cuadros de diálogo.
Otra ventaja es que las aplicaciones escritas para una interfaz gráfica de usuario son independientes de los dispositivos: a medida que la interfaz cambia para permitir el uso de nuevos dispositivos de entrada y salida, como un monitor de pantalla grande o un dispositivo óptico de almacenamiento, las aplicaciones pueden utilizarlos sin necesidad de cambios.
Un ordenador de bolsillo o PDA (personal digital assistant, asistente personal digital) es un pequeño ordenador que cabe en el bolsillo de la camisa y realiza unas cuantas funciones, tales como agenda de direcciones electrónicas y bloc de notas.
En cuanto a los sistemas empotrados, operan en los ordenadores que controlan dispositivos que, por lo general, no se consideran ordenadores (como televisores, hornos de microondas y teléfonos móviles). Estos sistemas suelen tener algunas características de los sistemas de tiempo real, pero ofrecen limitaciones de tamaño, memoria y consumo de electricidad que los hacen especiales.
Algunos ejemplos de estos SO son Palm OS y Windows CE (consumer electronics, electrónica de consumo).
A modo de conclusión, es importante mencionar que el sistema operativo es la herramienta principal de una computadora y funciona como una especie de traductor entre la máquina y el usuario; por ello, la importancia de una buena elección de un SO, ya que dependiendo el tipo de trabajo que vayas a realizar, ya sea el usuario o empresa, se deberá elegir el SO más adecuado para agilizar y realizar dichas actividades.
Ordenador portátil [fotografía]. Tomada de https://pixabay.com/es/ordenador-port%C3%A1til-apple-teclado-2589420/
Actividad. Eligiendo sistema operativo
En esta actividad reforzarás los conocimientos adquiridos con el estudio del tema, ya que te permitirá identificar los tipos de sistemas operativos, sus funciones y estructura.
Autoevaluación. ¿Qué tanto aprendí sobre sistemas operativos?
Después de revisar el tema deberás identificar las características y diferencias que existen entre cada uno de los sistemas operativos revisados.