Qué es un sistema operativo y cual es su función

sistemas operativos

Cuando enciendes tu ordenador, es agradable pensar que tienes el control. Está el confiable ratón, que puedes mover a cualquier lugar de la pantalla, convocando tu biblioteca de música o navegador de internet al más mínimo capricho. Aunque es fácil sentirse como un director frente a tu escritorio o portátil, hay mucho sucediendo por dentro, y la persona real detrás de la cortina que maneja las tareas necesarias es el sistema operativo.

Microsoft Windows alimenta la mayoría de los ordenadores que usamos para el trabajo o uso personal. Los ordenadores Macintosh vienen pre-cargados con macOS. Los sistemas operativos Linux y UNIX son populares para servidores de contenido digital, pero muchas distribuciones o distros, se han vuelto cada vez más populares para el uso diario. Independientemente de tu elección, sin un sistema operativo, no vas a lograr nada.

Otros dispositivos tienen sus propios sistemas operativos. Android de Google y iOS de Apple son los sistemas operativos para teléfonos inteligentes más comunes desde la década de 2020, aunque algunos fabricantes han desarrollado los suyos propios, en su mayoría basados en el sistema operativo Android. Apple envía iPads con iPadOS, relojes Apple con watchOS y Apple TV utiliza tvOS. Y hay todo tipo de otros dispositivos que tienen sus propios sistemas operativos, piensa en dispositivos de Internet de las Cosas, televisores inteligentes y los sistemas que ejecutan los sistemas de infoentretenimiento de los coches. Y ni siquiera incluye los complejos sistemas necesarios en los coches autónomos.

El propósito de un sistema operativo es organizar y controlar el hardware y software para que el dispositivo en el que vive se comporte de manera flexible pero predecible.

No todos los ordenadores tienen sistemas operativos. Por ejemplo, el ordenador que controla el microondas en tu cocina no necesita un sistema operativo. Tiene un conjunto de tareas que realizar, una entrada muy directa de esperar (un teclado numérico y algunos botones predefinidos) y un hardware simple y constante para controlar. Para una máquina como esta, un sistema operativo elaborado sería un lastre innecesario, aumentando significativamente los costos de desarrollo y fabricación y añadiendo complejidad donde no se requiere. En cambio, el ordenador en un microondas simplemente ejecuta un único programa cableado llamado sistema integrado todo el tiempo.

Para otros dispositivos, un sistema operativo crea la capacidad de:

-Interactuar con los usuarios de maneras más complicadas.
-Mantenerse al día con las necesidades que cambian con el tiempo.

Todos los ordenadores de escritorio tienen sistemas operativos. Los más comunes son la familia de sistemas operativos Windows desarrollados por Microsoft, los sistemas operativos Macintosh desarrollados por Apple y la familia de sistemas operativos UNIX desarrollados por toda una historia de individuos, corporaciones y colaboradores.

Hay cientos de otros sistemas operativos disponibles para aplicaciones de propósito especial, incluyendo especializaciones para mainframes, robótica, fabricación, sistemas de control en tiempo real, y así sucesivamente.

En cualquier dispositivo que tenga un sistema operativo, suele haber una forma de realizar cambios en cómo funciona el dispositivo. Esto está lejos de ser una feliz casualidad; una de las razones por las que los sistemas operativos utilizan código portátil en lugar de circuitos físicos permanentes es para que puedan ser cambiados o modificados sin tener que desechar todo el dispositivo.

Para un usuario de ordenador de escritorio, esto significa que puedes añadir una nueva actualización de seguridad, un parche del sistema, una nueva aplicación o incluso un sistema operativo completamente nuevo en lugar de desechar tu ordenador y empezar de nuevo con uno nuevo cuando necesites hacer un cambio. Siempre y cuando entiendas cómo funciona un sistema operativo y cómo acceder a él, en muchos casos puedes cambiar algunas de las formas en que se comporta.

Independientemente del dispositivo en el que se ejecute un sistema operativo, ¿qué puede hacer exactamente?

Funciones del Sistema Operativo

A un nivel más básico, un sistema operativo hace dos cosas:

Administra los recursos de hardware y software del sistema. En ordenadores, tabletas y teléfonos inteligentes, estos recursos incluyen los procesadores, la memoria, el espacio en disco y más.
Proporciona una forma estable y consistente para que las aplicaciones traten con el hardware sin tener que conocer todos los detalles del hardware.

El sistema operativo controla cada tarea que lleva a cabo tu ordenador y gestiona los recursos del sistema para optimizar el rendimiento.
La primera tarea, gestionar los recursos de hardware y software, es muy importante, ya que varios programas y métodos de entrada compiten por la atención de la unidad central de procesamiento (CPU) y demandan memoria, espacio de almacenamiento y ancho de banda de entrada/salida (E/S) para sus propios propósitos. En esta capacidad, el sistema operativo desempeña el papel del buen padre, asegurándose de que cada aplicación reciba sus recursos necesarios mientras se lleva bien con todas las demás aplicaciones, además de administrar la capacidad limitada del sistema para el mayor beneficio de todos los usuarios y aplicaciones.

La segunda tarea, proporcionar una interfaz de usuario consistente, es especialmente importante si hay más de un ordenador de un tipo particular que utiliza el sistema operativo, o si el hardware que compone el ordenador está alguna vez abierto a cambios. Una interfaz de programación de aplicaciones (API) consistente permite a un desarrollador de software escribir una aplicación en un ordenador y tener un alto nivel de confianza en que se ejecutará en otro ordenador del mismo tipo, incluso si la cantidad de memoria o la cantidad de almacenamiento es diferente en las dos máquinas.

Incluso cuando un ordenador en particular es único, un sistema operativo asegura que las aplicaciones continúen funcionando cuando se produzcan actualizaciones y mejoras de hardware. Esto se debe a que el sistema operativo —no la aplicación— se encarga de gestionar el hardware y la distribución de sus recursos. Uno de los desafíos que enfrentan los desarrolladores es mantener sus sistemas operativos lo suficientemente flexibles como para ejecutar hardware de los miles de fabricantes que producen equipos informáticos. Los sistemas actuales pueden adaptarse a miles de impresoras diferentes, unidades de disco y periféricos especiales en cualquier combinación posible.

Cómo funciona un sistema operativo

Dentro de la amplia familia de sistemas operativos, hay varios tipos, categorizados según los tipos de ordenadores que controlan y el tipo de aplicaciones que admiten. Las categorías son:

Sistema operativo de tiempo real (RTOS) - Los sistemas operativos en tiempo real se utilizan para controlar maquinaria, instrumentos científicos y sistemas industriales. Un RTOS típicamente tiene muy poca capacidad de interfaz de usuario y no tiene utilidades para el usuario final, ya que el sistema será una "caja sellada" cuando se entregue para su uso.

Es importante que un RTOS administre los recursos del ordenador para que una operación en particular se ejecute en exactamente la misma cantidad de tiempo cada vez que ocurra. En una máquina compleja, que una parte se mueva más rápido solo porque hay recursos del sistema disponibles puede ser igual de catastrófico que si no se moviera en absoluto porque el sistema está ocupado.

Un usuario, una tarea - Como su nombre indica, este sistema operativo está diseñado para gestionar el ordenador de manera que un usuario pueda hacer efectivamente una sola cosa a la vez. MS-DOS es un buen ejemplo de un sistema operativo de un solo usuario y una sola tarea.

Un usuario, multitarea - Este es el tipo de sistema operativo que la mayoría de la gente utiliza en sus ordenadores de escritorio y portátiles hoy en día. Las plataformas Microsoft Windows y Apple macOS son ejemplos de sistemas operativos que permiten a un solo usuario tener varias aplicaciones en funcionamiento al mismo tiempo. Por ejemplo, es perfectamente posible que un usuario de Windows esté escribiendo una nota en un procesador de texto mientras descarga un archivo de Internet e imprime el texto de un mensaje de correo electrónico.

Multiusuario - Un sistema operativo multiusuario permite a muchos usuarios diferentes aprovechar los recursos de un ordenador simultáneamente. El sistema operativo debe asegurarse de que los requisitos de los diferentes usuarios estén equilibrados y de que cada uno de los programas que están utilizando tenga recursos suficientes y separados para que un problema con un usuario no afecte a toda la comunidad de usuarios. Unix, VMS y los sistemas operativos de mainframe, como MVS, son ejemplos de sistemas operativos multiusuario.

Distribuido - Estos sistemas operativos gestionan múltiples ordenadores al mismo tiempo. En lugar de utilizar un solo ordenador potente para trabajar en problemas grandes, los sistemas operativos distribuidos lo dividen en piezas entre muchos ordenadores más pequeños. Puedes encontrar estos sistemas en enormes granjas de servidores, pero también los entusiastas y educadores crean sus propios sistemas distribuidos utilizando máquinas económicas e incluso consolas de juegos reutilizadas.

Es importante diferenciar entre los sistemas operativos multiusuario y los sistemas operativos de un solo usuario que admiten redes. Si trabajas en una oficina donde un administrador de sistemas controla qué software puedes o no puedes tener en tu ordenador de trabajo, estás utilizando un sistema de un solo usuario que forma parte de una red. Puedes imprimir un documento en una impresora compartida con otros empleados o tener un servidor de archivos que almacene los documentos de tu departamento.

Sistemas operativos de las computadoras

Cuando enciendes la alimentación de un ordenador, el primer programa que se ejecuta suele ser un conjunto de instrucciones guardadas en la memoria firmware del ordenador llamada ROM de arranque. Para un PC típico, esto puede ser el sistema básico de entrada/salida (BIOS), o en máquinas más nuevas, la interfaz unificada y extensible de firmware (UEFI).

Este código examina el hardware del sistema para asegurarse de que todo funciona correctamente y, en el caso de UEFI, que el software de arranque sea legítimo y seguro. Una vez que la prueba se ha completado con éxito, el firmware continúa el proceso de arranque.

El cargador de arranque, o bootloader, es un pequeño programa que tiene una sola función: cargar el sistema operativo en la memoria y permitir que comience a funcionar. En su forma más básica, el cargador de arranque configura los pequeños programas controladores que interfieren y controlan los diversos subsistemas de hardware del ordenador.

Configura las divisiones de memoria que contienen el sistema operativo, la información del usuario y las aplicaciones. Establece las estructuras de datos que contienen los innumerables señales, indicadores y semáforos que se utilizan para comunicarse dentro y entre los subsistemas y aplicaciones del ordenador. Luego, entrega el control del ordenador al sistema operativo.

Las tareas del sistema operativo, en el sentido más general, se dividen en varias categorías:

  • Gestión del procesador
  • Gestión de la memoria
  • Gestión de dispositivos
  • Gestión de almacenamiento
  • Interfaz de aplicación
  • Interfaz de usuario
  • Gestión de seguridad del sistema

El corazón de gestionar el procesador se reduce a dos problemas relacionados:

  • Asegurar que cada proceso y aplicación reciba suficiente tiempo del procesador para funcionar correctamente
  • Utilizar tantos ciclos del procesador como sea posible para realizar trabajo real
  • La unidad básica de software con la que trata el sistema operativo al programar el trabajo realizado por el procesador. Las aplicaciones contienen al menos un proceso, y dentro de cada proceso hay al menos un hilo. Los hilos ejecutan partes del código del proceso y los sistemas operativos gestionan unidades incluso tan pequeñas como los hilos, asignando los recursos que necesitan para funcionar correctamente.

Es tentador pensar en un proceso como una aplicación, pero eso da una imagen incompleta de cómo se relacionan los procesos con el sistema operativo y el hardware. La aplicación que ves (procesador de textos, hoja de cálculo o juego) es, de hecho, un proceso, pero esa aplicación puede causar que comiencen varios otros procesos, para tareas como comunicaciones con otros dispositivos u otros ordenadores.

También hay numerosos procesos que se ejecutan sin darte evidencia directa de que existen. Por ejemplo, un sistema operativo puede tener docenas de procesos en segundo plano para manejar la red, la gestión de memoria, la gestión de disco, los controles de virus, y así sucesivamente.

Un proceso, entonces, es un software que realiza alguna acción y puede ser controlado, ya sea por un usuario, por otras aplicaciones o por el sistema operativo.

Son los procesos, y no las aplicaciones, los que el sistema operativo controla y programa para su ejecución por la CPU. En un sistema de un solo proceso, el cronograma es sencillo. El sistema operativo permite que la aplicación comience a ejecutarse, suspendiendo la ejecución solo el tiempo suficiente para manejar interrupciones y la entrada del usuario.

Las interrupciones son señales especiales enviadas por hardware o software a la CPU. Es como si alguna parte del ordenador levantara de repente la mano para pedir la atención de la CPU en una reunión animada. A veces, el sistema operativo programa la prioridad de los procesos de manera que las interrupciones se enmascaren, es decir, el sistema operativo ignora las interrupciones de algunas fuentes para que un trabajo particular pueda terminarse lo más rápido posible.

Algunas interrupciones (como las de condiciones de error o problemas con la memoria) son tan importantes que no se pueden ignorar, como la entrega de un mensaje señalando que la batería de tu ordenador portátil se está agotando. Estas interrupciones no enmascarables (NMIs) deben ser tratadas inmediatamente, independientemente de las otras tareas en curso.

Aunque las interrupciones añaden cierta complicación a la ejecución de procesos en un sistema de un solo proceso, el trabajo del sistema operativo se vuelve mucho más complicado en un sistema multitarea. Ahora, el sistema operativo debe organizar la ejecución de aplicaciones para que creas que están sucediendo varias cosas al mismo tiempo.

Esto es complicado porque cada CPU solo puede hacer una cosa a la vez. Los procesadores multinúcleo y las máquinas multiprocesador de hoy pueden manejar más trabajo, pero cada núcleo del procesador sigue siendo capaz de gestionar una tarea a la vez.

Para dar la apariencia de que muchas cosas suceden al mismo tiempo, el sistema operativo tiene que cambiar entre diferentes procesos miles de veces por segundo. Así es como sucede:

Un proceso ocupa una cierta cantidad de RAM. También hace uso de registros, pilas y colas (formas de almacenamiento de computadora) dentro del CPU y del espacio de memoria del sistema operativo.
Cuando dos procesos están multitarea, el sistema operativo asigna un cierto número de ciclos de ejecución de CPU a un programa.

Después de ese número de ciclos, el sistema operativo hace copias de todos los registros, pilas y colas utilizados por los procesos, y anota el punto en el que el proceso se detuvo en su ejecución.
Luego, carga todos los registros, pilas y colas utilizados por el segundo proceso y le permite un cierto número de ciclos de CPU.

Cuando estos se completan, hace copias de todos los registros, pilas y colas utilizados por el segundo programa y carga el primero.

Toda la información necesaria para llevar un seguimiento de un proceso al cambiar se guarda en un paquete de datos llamado bloque de control de proceso. El bloque de control de proceso típicamente contiene:

  • Un número de identificación que identifica el proceso
  • Punteros a las ubicaciones en el programa y sus datos donde ocurrió el último procesamiento
  • Contenidos de los registros
  • Estados de varios indicadores y conmutadores
  • Punteros a los límites superiores e inferiores de la memoria requerida para el proceso
  • Una lista de archivos abiertos por el proceso
  • La prioridad del proceso
  • El estado de todos los dispositivos de entrada/salida necesarios para el proceso

Cada proceso tiene asociado un estado. Muchos procesos no consumen tiempo de CPU hasta que reciben algún tipo de entrada. Por ejemplo, un proceso podría estar esperando una pulsación de tecla del usuario. Mientras espera la pulsación de tecla, no utiliza tiempo de CPU. Está "suspendido". Cuando llega la pulsación de tecla, el sistema operativo cambia su estado. Cuando el estado del proceso cambia de pendiente a activo, por ejemplo, o de suspendido a en ejecución, la información en el bloque de control de proceso debe ser utilizada como los datos en cualquier otro programa para dirigir la ejecución de la parte de cambio de tarea del sistema operativo.

Este proceso de intercambio ocurre sin interferencia directa del usuario, y cada proceso recibe suficientes ciclos de CPU para completar su tarea en un tiempo razonable. Los problemas pueden comenzar si el usuario intenta tener demasiados procesos funcionando al mismo tiempo. El sistema operativo mismo requiere algunos ciclos de CPU para realizar el guardado e intercambio de todos los registros, colas y pilas de los procesos de aplicación.

Cada proceso requiere su propia asignación de memoria, pero el sistema operativo debe equilibrar la carga. Cuantas más aplicaciones abras, menos memoria tiene cada aplicación para operar. Si se inician suficientes procesos y si el sistema operativo no ha sido cuidadosamente diseñado, el sistema comienza a utilizar más de sus ciclos de CPU disponibles para intercambiar entre procesos en lugar de ejecutar procesos.

Cuando esto sucede, se llama thrashing y generalmente requiere alguna intervención directa del usuario para detener los procesos y devolver el orden al sistema. Es como si tú intentaras hacer demasiadas cosas a la vez. Una vez que has alcanzado tu límite, te sentirás abrumado. Eso es lo que el thrashing es para un ordenador.

Los desarrolladores diseñan sus sistemas para evitar el thrashing, pero puedes hacer tu parte añadiendo más RAM a tu ordenador y cerrando aplicaciones que no estés usando. Eso ayuda a tu sistema operativo a gestionar los recursos de manera más efectiva y mantener las cosas funcionando sin problemas.

Hasta ahora, toda la programación que hemos discutido ha concernido a una sola CPU. En un sistema con dos o más CPUs, el sistema operativo debe dividir la carga de trabajo entre las CPUs, tratando de equilibrar las demandas de los procesos requeridos con los ciclos disponibles en los diferentes procesadores. Los sistemas operativos asimétricos utilizan un procesador para sus propias necesidades y dividen los procesos de aplicación entre las CPUs restantes. Los sistemas operativos simétricos dividen el trabajo entre los distintos procesadores, equilibrando la demanda versus la disponibilidad incluso cuando el sistema operativo en sí es lo único que se está ejecutando. Comparten la memoria disponible. De hecho, el procesamiento simétrico también se aplica al utilizar múltiples núcleos de procesador en el mismo chip.

Dependiendo de tu ordenador y sistema operativo, es posible que estés utilizando procesamiento simétrico en este momento.

Cuando un sistema operativo gestiona la memoria del ordenador, hay dos tareas principales que se deben cumplir:

Cada proceso debe tener suficiente memoria en la que ejecutarse, y no puede invadir el espacio de memoria de otro proceso ni ser invadido por otro proceso. Los diferentes tipos de memoria en el sistema deben utilizarse correctamente para que cada proceso pueda ejecutarse de manera más efectiva. La primera tarea requiere que el sistema operativo establezca límites de memoria para tipos de software y para aplicaciones individuales.

Por ejemplo, veamos un sistema imaginario pequeño con 1 megabyte (1.000 kilobytes) de RAM. Durante el proceso de arranque, el sistema operativo de nuestro ordenador imaginario asigna suficiente memoria para satisfacer las necesidades del propio sistema operativo. Digamos que el sistema operativo necesita 300 kilobytes para funcionar.

Ahora, el sistema operativo se dirige al fondo del grupo de RAM y comienza a construir con los diversos programas de controlador necesarios para controlar los subsistemas de hardware del ordenador. En nuestro ordenador imaginario, los controladores ocupan 200 kilobytes. Por lo tanto, una vez que el sistema operativo está completamente cargado, quedan 500 kilobytes para procesos de aplicaciones.

Cuando las aplicaciones comienzan a cargarse en la memoria, el sistema operativo les asigna una cantidad de memoria. A medida que se inicia la siguiente aplicación, el sistema operativo retira algo de memoria de otras aplicaciones abiertas para asegurarse de que la aplicación más nueva tenga suficiente para ejecutarse. Con eso asegurado, la pregunta más grande es qué hacer si el espacio de aplicación de 500 kilobytes está lleno.

En la mayoría de los ordenadores, es posible agregar memoria más allá de la capacidad original. Por ejemplo, podrías ampliar la RAM en tu ordenador de 8 a 16 gigabytes. Pero la mayoría de la información que una aplicación almacena en la memoria no se está utilizando en un momento dado. Un procesador solo puede acceder a la memoria una ubicación a la vez, por lo que la gran mayoría de la RAM no se utiliza en ningún momento.

El sistema operativo intercambia constantemente las partes no utilizadas por las partes que se están utilizando. Esto le da a cada proceso su propio espacio y evita que se corrompan entre sí. Esta técnica se llama gestión de memoria virtual.

El almacenamiento en disco es solo uno de los tipos de memoria que debe gestionar el sistema operativo, y también es el más lento. Clasificados en orden de velocidad, los tipos de memoria en un sistema informático son:

Memoria caché de alta velocidad: Esta es una cantidad de memoria rápida y relativamente pequeña que está disponible para la CPU a través de las conexiones más rápidas. Los controladores de caché predicen qué datos necesitará la CPU a continuación y los extraen de la memoria principal a la caché de alta velocidad para acelerar el rendimiento del sistema.

Memoria principal: Esta es la RAM que ves medida en gigabytes cuando compras un ordenador. Memoria secundaria: Esta es a menudo un disco duro (HDD) o una unidad de estado sólido (SSD) dentro del ordenador que sirve como RAM virtual bajo el control del sistema operativo. El sistema operativo debe equilibrar las necesidades de los diversos procesos con la disponibilidad de los diferentes tipos de memoria, moviendo datos en bloques llamados páginas entre la memoria disponible según lo dicte el cronograma de procesos.

Gestión de Dispositivos

El camino entre el sistema operativo y prácticamente todo el hardware que no está en la placa base del ordenador pasa por programas especiales llamados controladores. Gran parte de la función de un controlador es actuar como el traductor entre las señales eléctricas de los subsistemas de hardware y los lenguajes de programación de alto nivel del sistema operativo y los programas de aplicación.

Los controladores toman datos que el sistema operativo ha definido como un archivo y los traducen en flujos de bits colocados en ubicaciones específicas en dispositivos de almacenamiento, o en una serie de pulsos láser en una impresora.

Debido a que hay diferencias tan amplias en el hardware, también hay diferencias en la forma en que funcionan los programas controladores. La mayoría se ejecutan cuando se requiere el dispositivo y funcionan de manera muy similar a cualquier otro proceso. El sistema operativo asigna frecuentemente bloques de alta prioridad a los controladores para que el recurso de hardware pueda ser liberado y preparado para su uso posterior lo más rápido posible.

Una razón por la que los controladores están separados del sistema operativo es para que se puedan añadir nuevas funciones al controlador, y así a los subsistemas de hardware, sin necesidad de modificar, recompilar y redistribuir el propio sistema operativo.

Muchos controladores son creados o pagados por el fabricante de los subsistemas en lugar del editor del sistema operativo. Esto les da la oportunidad de actualizar y mejorar las capacidades de entrada/salida del sistema en general.

Los editores de sistemas operativos también crean controladores de dispositivos para actualizar los ordenadores. Aunque es más fácil esperar controladores actualizados para Windows y macOS de las grandes empresas rentables que los lanzan, las máquinas Linux y otros sistemas operativos de código abierto a menudo dependen de desarrolladores en sus comunidades que están dispuestos a ofrecer su tiempo y habilidades de programación para proporcionar controladores para sistemas y periféricos.

La gestión de entrada y salida es en gran medida una cuestión de gestionar colas y búferes, instalaciones de almacenamiento especiales que toman un flujo de bits de un dispositivo —quizás un teclado o un puerto serie—, retienen esos bits y los liberan al procesador a un ritmo con el que puede manejar. Esta función es especialmente importante cuando se ejecutan muchos procesos y se está utilizando el tiempo del procesador.

El sistema operativo instruye a un búfer para que continúe recibiendo entrada del dispositivo, pero que deje de enviar datos al procesador mientras el proceso que utiliza la entrada esté suspendido. Luego, cuando el proceso que requiere entrada se active nuevamente, el sistema operativo ordena al búfer que envíe datos. Este proceso permite que un teclado o un módem manejen usuarios o computadoras externas a alta velocidad, incluso cuando hay momentos en los que el procesador no puede utilizar la entrada de esas fuentes.

La gestión de todos los recursos del sistema informático ocupa la mayor parte de la función del sistema operativo y, en el caso de los sistemas operativos en tiempo real, puede ser prácticamente toda la funcionalidad requerida. Sin embargo, para otros sistemas operativos, proporcionar una forma relativamente simple y consistente para que las aplicaciones y los humanos utilicen el poder del hardware es una parte crucial de su razón de ser.

Y hasta aquí este pedazo de artículo que espero hayas podido leer entero. 😉