Introducción a los sistemas operativos

Banner introducción a los sistemas operativos

El Sistema Operativo es el software más importante de un equipo de cómputo. Es el que administra los recursos de hardware y provee servicios a las demás aplicaciones. También realiza diferentes funciones de vital importancia para poder usar el equipo.

Diagrama en bloque de uso de los sistemas operativos
Diagrama en bloque de uso del sistema operativo

Los sistemas operativos pueden estar presentes no solo en computadoras. También los podemos encontrar en dispositivos móviles como tabletas, teléfonos o relojes inteligentes, también en enrutadores, switchs, puntos de acceso wifi, televisores, equipos de reproducción de multimedia, equipos médicos, cajeros electrónicos, coches inteligentes, y en un sin fin de dispositivos de los que usamos muy a menudo en nuestra vida diaria. En casi todos los equipos que incluyan microprocesadores de una forma u otra contaremos con sistemas operativos.

El sistema operativo provee funciones a las aplicaciones de usuario para interactuar con el mismo, con otras aplicaciones o con el hardware, a estas funciones se les conoce como “Llamadas al sistema” o “System Calls” y estas son propias de casa sistema operativo.

De forma general los sistemas operativos trabajan en dos modos, modo usuario y modo privilegiado. En el modo usuario o modo restringido el microprocesador puede ejecutar un conjunto reducido de instrucciones y en modo privilegiado o modo kernel esta disponible todo el conjunto de instrucciones del microprocesador. Las aplicaciones se ejecutan en modo restringido y cuando necesitan acceder a alguna función priviligiada se efectúa una llamada al sistema y se produce un cambio de contexto el núcleo pasa a ejecutarse en modo privilegiado resuelve la solicitud de la llamada al sistema y conmuta nuevamente al modo restringido y devuelve el resultado a la aplicación. Este proceso puede ocurrir cientos de veces por segundo.

Componentes generales de un sistema operativo

  • Cargador de arranque, Programa que carga el SO, Ejemplos: GRUB, NTLDR, Lilo
  • Núcleo (Kernel), Parte principal del sistema operativo Ejemplos: Kernel Linux, ntoskrnl.exe
  • Controladores de Hardware (Drivers)
  • Librerías o bibliotecas de funciones
  • Shell o Lanzador de aplicaciones (aplicación especial que sirve de interfaz para interactuar con el sistema puede ser en modo texto o modo gráfico)
  • Aplicaciones del sistema (programas específicos para el sistema operativo, software de configuración, etc.)
  • Utilidades incluidas (programas de utilidades para el usuario ejemplo: editores, calculadora, reproductores, etc. )

Según la arquitectura del núcleo (kernel) se clasifican en:

  • Microkernel (se caracteriza por un kernel muy pequeño con solo las funciones primitivas y llamadas al sistema para servicios básicos de espacios de direcciones, comunicación entre procesos y planificación básica)

  • Kernel Monolítico: Todo está incluido en un mismo espacio lógico o programa en el que se entrelazan todas las funciones o subrutinas.
Sistemas operativos basados en Kernel monolítico
  • Kernel Híbrido (Microkernel modificado que incluye más funcionalidades y las inserta dentro del kernel)
Sistemas operativos basados en Kernel Híbrido
  • Kernel Jerárquicos, Multicapas o en anillos (Hay diferentes capas o anillos en función de los componentes del kernel y cada uno tiene un nivel jerárquico siendo los más externos los de menores privilegios)
  • Kernel Distribuido (Separa sus componentes en servidores que se distribuyen en uno o varios nodos y el reducido kernel se encarga simplemente de la comunicación de los componentes)
  • ExoKernel (no proveen abstracciones de hardware, pero permiten el uso de librerias que brindan mayor funcionalidad debido al acceso directo o casi directo al hardware.)

¿Y qué hace el sistema operativo que es tan importante?

  • Administrar los recursos de hardware y llevar el control estadístico de su uso. El sistema operativo es quien controla que aplicación accede a que recurso, si puede hacerlo y de hacerlo las estadísticas de uso.
  • Proveer funciones adicionales a las aplicaciones del usuario.
  • Controlar la seguridad del sistema en su conjunto
  • Proporcionar abstracciones de hardware para las aplicaciones
  • Hacer uso eficiente de los recursos
  • Posibilita la multitarea y la multiprogramación
  • Permitir la ejecución de trabajos en lotes
  • Facilitar la interacción entre el usuario, las aplicaciones y el hardware
  • Crear una interfaz común para usar distintos equipos de hardware

De forma más técnica y específica podemos resumir algunas de las principales funciones de un sistema operativo moderno en la siguiente lista:

Principales funciones del sistema operativo:

  • Gestión de unidades de procesamiento y su uso (Microprocesador, Núcleos)
  • Gestión de Memoria RAM física y Memoria Virtual (Paginación)
  • Gestión de Interrupciones de Hardware o Software
  • Gestión de entrada y salida
  • Gestión de dispositivos (Hardware físico o virtual que se usa en el sistema) y sus abstracciones (Drivers)
  • Gestión de discos y sistemas de archivos (particiones) (Montar, Comprobar, Formatear, Redimensionar, Eliminar)
  • Gestión de directorios (Carpetas), ficheros (archivos), enlaces
  • Gestión de procesos e hilos de ejecución
  • Planificación de procesos a corto, medio o largo plazo
  • Gestión de comunicaciones entre procesos (Mecanismos IPC)
  • Gestión de comunicaciones entre equipos (Pila TCP IP, Rutas, etc)
  • Gestión de colas para el uso de dispositivos de uso exclusivo (Impresora, Quemadores de discos, grabadoras de cintas, etc)
  • Gestión de configuraciones
  • Gestión de eventos (logs)
  • Gestión de usuarios y grupos
  • Gestión de seguridad (Permisos, autorizaciones, políticas)
  • Gestión de servicios (daemons) (Servicios en segundo plano)
  • Gestión de aplicaciones
  • Gestión de energía
  • Gestión del proceso de inicio y carga del propio sistema y aplicaciones

En el contexto de los sistemas operativos modernos una entidad fundamental es el proceso, que es la forma lógica que representa una tarea (código máquina o programa binario) en ejecución y los recursos asignados con las que interactúa dicha tarea.

El sistema operativo permite administrar los recursos de hardware y controla que aplicación puede acceder a un recurso y de hacerlo lleva todas las estadísticas referentes al uso de los mismos.

Es el que controla la seguridad, usuarios, grupos, niveles de privilegios, políticas de seguridad, permisos en sistemas de archivos, etc.

Además proporciona abstracciones de hardware y software para las aplicaciones y  ofrece interfaces de uso más simples y genéricas para los dispositivos, así un programador de alguna aplicación de usuario no tiene que preocuparse por tener que escribir código para acceder al disco o a particiones según su sistema de archivos, el programador simplemente en su código especifica que se abra un archivo y toda la complejidad detrás de eso es manejada por el sistema operativo, facilitando así el desarrollo de aplicaciones.

El sistema operativo hace uso eficiente de los recursos los cuales son finitos y escasos (Microprocesador, Memoria RAM, Espacio en disco duro, ancho de banda del bus de acceso a discos duros, acceso a la red y uso del ancho de banda de red disponible, etc)

El SO es el encargado de la ejecución de las tareas (Procesos) y para esto se vale de técnicas como la multiprogramación y multitarea que hace intercambios cientos de veces por segundos de los recursos entre las distintas tareas logrando un avance poco a poco en todas de forma concurrente, para simular que todas las tareas se están ejecutando a la vez y así aprovechar las capacidades de computo del equipo en el tiempo.

También permite la ejecución de trabajos en lotes (ejecución de scripts)

El sistema operativo facilita la interacción entre el usuario y las aplicaciones a través del Shell los cuales pueden ser en forma de intérpretes de comandos o en modo gráfico.

Clasificaciones de sistemas operativos

Según su modo de ejecución de tareas pueden ser:

  • Monotareas (Solo pueden ejecutar una tarea al mismo tiempo)
  • Multitareas (Pueden ejecutar varias tareas de forma concurrente)

Teniendo en cuenta al usuario final se clasifican en:

  • Monousuario (capaz de ser usado por un solo usuario)
  • Multiusuario (capaz de ser usado por varios usuarios)

Teniendo en cuenta su forma de manejo de recursos:

  • Centralizados (el sistema completo se encuentra en un solo equipo)
  • Descentralizados (el sistema se encuentra distribuido en varios equipos)

Algunos ejemplos de sistemas operativos para computadoras personales o servidores

Ejemplos de sistema operativos para dispositivos móviles

  • Android
  • iOS
  • Microsoft Windows Phone
  • Google Chome OS
  • Firefox OS
  • BlackBerry OS
  • Symbian
  • HP webOS
  • Ubuntu Phone
  • Harmony OS de Huawei

Sistemas operativos para Televisores Inteligentes (Smart TV)

  • Android TV en muchos televisores (Sony, por ejemplo)
  •  WebOS en LG
  • Firefox OS en televisores Panasonic, por ejemplo
  • My Home Screen en algunos televisores Panasonic
  • Harmony OS de Huawei
  • Tizen en Samsung
  • Roku
  • Amazon Fire TV para los Amazon Fire TV Stick, Cube…

Los Sistemas operativos para relojes inteligentes (smartwatches):

  • Android
  • WatchOS
  • Android Wear
  • WearOS9​
  • OpenWatch

Sistemas operativos en tiempo real

Una categoría especial de los Sistemas operativos son los llamados Sistemas operativos en tiempo real. Son aquellos en los que no tiene importancia el usuario, sino los procesos. En su mayoría, están subutilizados sus recursos con la finalidad de prestar atención a los procesos en el momento que lo requieran. Se utilizan en entornos donde son procesados una gran cantidad de sucesos o eventos. Muchos Sistemas Operativos de tiempo real son construidos para aplicaciones muy específicas.

Ejemplos

Estos sistemas son los que se utilizan para el control de tráfico aéreo, bolsas de valores, control de refinerías, Control de trenes,Telecomunicaciones, sistemas de fabricación integrada, producción y distribución de energía eléctrica, control de edificios y Sistemas multimedia, entre otros.

Algunos ejemplos de Sistemas Operativos de tiempo real son: VxWorks, Solaris, Lyns OS y Spectra.

Para profundizar un poco más sobre el tema le recomendamos los artículos que se listan a continuación.

Wikipedia: Sistema operativo

Ecured : Sistema Operativo

Ir al contenido