5  Prestaciones de los sistemas operativos

En sesiones pasadas, habíamos mencionado que el sistema operativo actúa como intermediario entre el hardware y el software. Tiene la tarea de coordinar y gestionar los recursos físicos y lógicos del sistema, permitiendo que las aplicaciones se ejecuten de manera eficiente y segura. En esta sección, nos centraremos en explorar las principales prestaciones de un sistema operativo, abarcando desde los servicios al usuario hasta las llamadas al sistema, la gestión de recursos y los mecanismos de seguridad, además de los estándares que aseguran una implementación segura en las diferentes plataformas.

5.1 Servicios al usuario

5.1.1 Interfaz de programación de aplicaciones (API)

Uno de los servicios esenciales que ofrece un sistema operativo es la API, que constituye un conjunto de funciones, procedimientos y herramientas que permiten a los desarrolladores interactuar con el sistema. Estas interfaces simplifican la programación, ya que abstraen la complejidad de las operaciones a nivel de hardware, brindando funciones estandarizadas para:

Gestión de archivos
Operaciones de lectura, escritura, eliminación y modificación de archivos.
Gestión de procesos
Creación, ejecución y finalización de procesos.
Entrada/Salida (E/S)
Manejo de dispositivos de entrada y salida, tales como teclados, ratones, impresoras y redes.

5.1.2 Bibliotecas de sistema

Además de las APIs, los sistemas operativos proporcionan bibliotecas precompiladas que facilitan el desarrollo de aplicaciones. Estas bibliotecas contienen rutinas reutilizables para tareas comunes, lo que mejora la eficiencia en el desarrollo y la consistencia en el comportamiento de las aplicaciones. Ejemplos:

Biblioteca Matemática (libm)
Incluye funciones para cálculos matemáticos avanzados, como seno, coseno, logaritmos, entre otros.
kernel32.dll
Gestiona funciones esenciales como el manejo de memoria, la creación de procesos y las llamadas al sistema.

5.2 Llamadas al sistema

Las llamadas al sistema son la interfaz mediante la cual las aplicaciones en modo usuario solicitan servicios al kernel, que opera en un nivel privilegiado. Este mecanismo permite que los programas puedan realizar operaciones que requieren acceso directo a los recursos del hardware (como leer o escribir en un disco, gestionar la memoria o comunicarse a través de la red) sin comprometer la seguridad del sistema.

5.2.1 Clasificación de Llamadas al Sistema

Las llamadas al sistema se categorizan según su ámbito de acción:

Gestión de Procesos
fork(), exec(), wait() permiten crear nuevos procesos, reemplazar su imagen de memoria y sincronizar su ejecución. En sistemas UNIX, fork() genera un proceso hijo idéntico al padre, mientras exec() carga un nuevo programa en su espacio de direcciones.
Operaciones de Archivo
open(), read(), write(), close() abstraen las diferencias entre dispositivos de almacenamiento, permitiendo a las aplicaciones manipular archivos sin conocer detalles del hardware subyacente.
Comunicación entre Procesos (IPC)
Llamadas como pipe(), shmget() o msgsend() habilitan el intercambio de datos entre procesos, ya sea mediante memoria compartida, tuberías o mensajes.

Gestión de Dispositivos: ioctl() proporciona un interfaz genérico para configurar parámetros de hardware, como la velocidad de un puerto serial o el modo de operación de una tarjeta gráfica.

5.3 Gestión de recursos

Un sistema operativo debe gestionar eficazmente los recursos del sistema, asegurando que cada proceso y aplicación tenga acceso a lo necesario sin conflictos. Esto abarca:

Gestión de la memoria
La administración de memoria implica asignar, liberar y proteger los bloques de memoria, tanto física como virtual, evitando colisiones y garantizando la estabilidad del sistema.
Gestión de los procesos
Se trata de la planificación y ejecución de múltiples procesos de manera concurrente, utilizando algoritmos de planificación que optimizan el uso del CPU y mejoran la respuesta del sistema.
Dispositivos y E/S
El sistema operativo controla la comunicación con dispositivos de hardware a través de controladores específicos, garantizando una transferencia de datos eficiente y segura.

5.4 Mecanismos de seguridad y protección

La seguridad es una prioridad en cualquier sistema operativo. Para ello, se implementan varios mecanismos que incluyen:

Control de Acceso
Utilización de permisos y políticas que determinan quién puede acceder y modificar determinados recursos, como archivos y dispositivos.
Aislamiento de Procesos
La segregación de procesos impide que un programa interfiera o acceda a la información de otro, protegiendo la integridad y privacidad de los datos.
Monitoreo y Auditoría
Sistemas de registro que permiten rastrear actividades y detectar comportamientos anómalos, ayudando a prevenir y responder a posibles amenazas.