2  Introducción a los Sistemas Operativos

2.1 Concepto de sistema operativo

Un Sistema Operativo ( SO) es un conjunto de programas o software que actúa como intermediario entre el hardware de un computador y el usuario, administrando y coordinando de manera eficiente los recursos y las operaciones que se llevan a cabo en la máquina. De acuerdo con Silberschatz, Galvin y Gagne [1], el Sistema Operativo se encarga de brindar un entorno en el cual los programas de aplicación pueden ejecutarse de forma cómoda y eficiente, controlando y coordinando el uso del hardware entre las diversas aplicaciones y los diferentes usuarios.

El sistema operativo actúa de intermediario, entre el usuario y el hardware
En términos generales, el sistema operativo realiza las siguientes tareas:
  • Provee interfaces de usuario.
  • Gestiona la asignación de memoria, procesador y dispositivos de entrada/salida.
  • Supervisa y controla la ejecución de procesos y tareas.
  • Resguarda la integridad de la información y la seguridad del sistema.

2.2 Evolución histórica

Los primeros sistemas operativos surgieron a mediados del siglo XX, como respuesta a la creciente complejidad de las computadoras y la necesidad de automatizar tareas para optimizar el uso de sus limitados y costosos recursos. En la década de 1950, las computadoras eran gigantescas máquinas monotarea y monousuario, diseñadas para resolver problemas específicos mediante la programación directa en lenguaje máquina o el uso de tarjetas perforadas y cintas magnéticas.

Las primeras computadoras ocupaban salas enteras.

Estas primeras computadoras no contaban con sistemas operativos en el sentido moderno. En cambio, los usuarios interactuaban directamente con el hardware, lo que hacía que la operación de los sistemas fuera lenta, propensa a errores y dependiente de intervención manual constante.

Con el avance del hardware, especialmente con la introducción de los transistores y los circuitos integrados, surgió la necesidad de desarrollar software que gestionara los recursos de manera más eficiente. Así nacieron los primeros sistemas operativos, concebidos para coordinar la ejecución de programas, gestionar dispositivos de entrada y salida, y facilitar el acceso de múltiples usuarios a los recursos computacionales.

A continuación, se presenta en formato tabular la evolución de los sistemas operativos en paralelo con las generaciones de computadoras, destacando las características principales de cada etapa.

Evolución de las computadoras y sistema operativo
Caract. de Hardware Hechos
Primera Generación (1940-1956) - Uso de tubos de vacío. - No existían sistemas operativos.
- Tamaño gigantesco y alto consumo energético. - Las operaciones eran manuales mediante tarjetas perforadas y cintas magnéticas.
- Computadoras monotarea y monousuario. - Los programas interactuaban directamente con el hardware.
Segunda Generación (1956-1963) - Uso de transistores que mejoraron la velocidad y redujeron el tamaño. - Aparición de los primeros sistemas operativos para automatizar el procesamiento de tarjetas perforadas y cintas magnéticas.
- Mayor fiabilidad y capacidad de almacenamiento. - Introducción de los sistemas por lotes (batch systems), que permitían ejecutar trabajos de forma secuencial sin intervención manual.
- Primeros intentos de abstracción del hardware, gestionando dispositivos de entrada/salida.
Tercera Generación (1964-1971) - Incorporación de circuitos integrados. - Evolución significativa con la multiprogramación, permitiendo la ejecución concurrente de varios programas en memoria.
- Aumento de la capacidad de procesamiento. - Desarrollo de sistemas de tiempo compartido (time-sharing systems) para la interacción simultánea de múltiples usuarios.
- Uso de terminales conectadas a mainframes. - Ejemplo: MULTICS y CTSS, precursores del UNIX moderno.
Cuarta Generación (1971-1980) - Introducción del microprocesador. - Expansión masiva de los sistemas operativos para PC, como CP/M y MS-DOS, adaptados a hardware más accesible.
- Nacimiento de las computadoras personales (PC). - Introducción de interfaces gráficas: Apple Lisa, Macintosh y Windows.
- Uso masivo de discos duros y almacenamiento magnético. - Consolidación de UNIX como sistema operativo estándar para investigación y entornos empresariales.
Quinta Generación (1981-presente) - Microprocesadores más potentes, computadoras portátiles y dispositivos móviles. - Sistemas operativos modernos como Windows, macOS y Linux se convirtieron en estándares globales.
- Arquitecturas paralelas y conectividad global a través de internet. - Sistemas operativos móviles como Android e iOS redefinieron la interacción con la tecnología.
- Uso de arquitecturas ARM en dispositivos móviles. - Incorporación de inteligencia artificial y soporte para entornos virtualizados y computación en la nube.

2.3 Funciones básicas de un sistema operativo

Según Beekman y Quinn [2] y Silberschatz [3], Galvin y Gagne [1] , un sistema operativo (SO) se concibe como el software principal que actúa de intermediario entre el hardware y el usuario, coordinando y optimizando el uso de los recursos de la computadora (procesador, memoria, dispositivos de entrada/salida, etc.). Aunque la implementación puede variar entre sistemas (Windows, Linux, macOS, etc.), la mayoría coincide en ejercer las siguientes funciones básicas:

2.3.1 Administración de recursos

El sistema operativo asigna y gestiona los recursos disponibles para garantizar que cada aplicación o proceso reciba lo necesario para su correcto funcionamiento. De esta forma:

  • Controla el uso de la CPU, determinando qué programa se ejecuta en cada momento (planificación).
  • Regula el uso de la memoria principal, evitando que un proceso interfiera en el área de otro (protección y aislamiento).
  • Gestiona el acceso a dispositivos de entrada/salida para que múltiples programas puedan utilizarlos sin generar conflictos.
  • Nota

    Para profundizar en la forma en que el SO gestiona procesos y memoria, véanse las secciones específicas sobre Gestión de procesos y Gestión de la memoria.

:::

2.3.2 Interfaz de usuario

Tal y como señalan Beekman y Quinn [2] en su introducción a la informática, el sistema operativo provee mecanismos de interacción que facilitan el uso y la administración del equipo. Las modalidades más comunes son:

Interfaz de Línea de Comandos (CLI)
Permite enviar instrucciones directamente al sistema mediante textos y comandos, lo que resulta muy útil para tareas de administración y automatización.

La línea de comandos envía instrucciones directas al kernel
Interfaz Gráfica de Usuario (GUI)
Hace uso de ventanas, menús e íconos, ofreciendo una experiencia más sencilla y visual para la mayoría de los usuarios.

2.3.3 Seguridad y protección del sistema

La seguridad es un pilar fundamental en los sistemas operativos modernos. Silberschatz, Galvin y Gagne [1] destacan que el SO debe tener:

Autenticación
Control de acceso mediante credenciales (nombre de usuario y contraseña, certificados digitales, huellas dactilares, etc.). Autorización: Concesión de permisos o privilegios a los usuarios y procesos en función de sus roles y necesidades.
Protección de recursos
Mecanismos que evitan ataques como elevación de privilegios, accesos no autorizados o ejecución de malware.
Registro y auditoría
Se llevan bitácoras (logs) de eventos del sistema, que incluyen inicios de sesión, uso de recursos, ejecuciones de procesos críticos, entre otros, con el fin de rastrear comportamientos maliciosos o fallos recurrentes.

2.3.4 Ejecución y coordinación de tareas

El sistema operativo debe:

  • Planificar el orden y la prioridad de ejecución de las tareas.
  • Sincronizar la interacción entre procesos, evitando conflictos (condiciones de carrera) y promoviendo la colaboración controlada.

2.3.5 Manejo de la comunicación entre componentes y sistemas

El sistema operativo debe facilitar la comunicación

  • Interna:Entre los distintos componentes de hardware (a través de drivers) y servicios del software (llamadas al sistema, APIs, etc.).
  • Externa: Vela por la gestión y seguridad de las conexiones de red, permitiendo el intercambio de datos con otros equipos o servicios en línea.

2.4 Gestión de archivos y procesos

Uno de los pilares de cualquier sistema operativo es la gestión de archivos y procesos, que se traduce en la forma en que el SO organiza, almacena y manipula la información, así como el modo en que controla la ejecución y finalización de los programas (procesos).

2.4.1 Gestión de archivos

2.4.1.1 ¿Qué son los Archivos?

En cualquier sistema operativo, un archivo es la unidad mínima de almacenamiento lógico. Sirve para guardar datos, configuraciones, programas y recursos multimedia como imágenes y videos. Cada archivo tiene un nombre y una extensión que indica su tipo (por ejemplo, documento.txt, foto.jpg).

2.4.1.2 Sistema de Archivos (File System)

El sistema de archivos es una parte fundamental del sistema operativo que organiza y gestiona cómo se almacenan y recuperan los archivos en un dispositivo de almacenamiento (como un disco duro o SSD). Sus principales funciones incluyen:

Estructura de Almacenamiento
Define cómo se organizan los archivos y carpetas en el dispositivo.
Nomenclatura
Establece reglas para nombrar archivos y directorios, evitando conflictos y facilitando su identificación.
Permisos
Controla quién puede leer, escribir o ejecutar cada archivo, garantizando la seguridad y privacidad de la información.

2.4.1.3 Importancia de una Gestión Eficiente de Archivos

Organización
Mantener archivos bien estructurados facilita su búsqueda y acceso. Seguridad: Protege datos sensibles contra accesos no autorizados y modificaciones indebidas.
Eficiencia
Un sistema de archivos optimizado mejora el rendimiento del sistema operativo y las aplicaciones.
Respaldo y Recuperación
Facilita la creación de copias de seguridad y la recuperación de datos en caso de fallos.

2.5 Gestión de procesos

2.5.1 ¿Qué es un Proceso?

Un proceso es una instancia de ejecución de un programa en una computadora. Cada vez que abres una aplicación, como un navegador web o un editor de texto, se crea un proceso. Este proceso comienza cuando inicias el programa y termina cuando lo cierras o cuando el sistema lo finaliza por algún motivo.

2.5.2 Ciclo de Vida de un Proceso

Un proceso pasa por diferentes estados durante su ciclo de vida. Entender estos estados es fundamental para comprender cómo el sistema operativo gestiona y optimiza el uso de los recursos.

  1. Nuevo (New)
Definición
El proceso ha sido creado, pero aún no está listo para ejecutarse.
Ejemplo
Cuando haces doble clic en un icono para abrir una aplicación, el proceso correspondiente se crea pero aún no se está ejecutando.
  1. Listo (Ready)
Definición
El proceso está preparado para ejecutarse y espera a que la CPU lo asigne.
Ejemplo
La aplicación está lista para funcionar, pero otra tarea está usando actualmente la CPU, así que el proceso espera su turno. 3. Ejecutándose (Running) Definición
El proceso está utilizando la CPU y realizando sus tareas.
Ejemplo
Estás escribiendo en un documento y el editor de texto está procesando tus entradas en tiempo real.
  1. Bloqueado (Blocked o Waiting) Definición : El proceso está esperando por un evento externo o la disponibilidad de algún recurso, como una operación de entrada/salida (E/S).
Ejemplo
La aplicación está esperando a que se complete la descarga de un archivo antes de continuar con otra tarea.
  1. Terminado (Terminated) Definición : El proceso ha finalizado su ejecución o ha sido cerrado abruptamente por un error o por decisión del usuario.
Ejemplo
Cierras el editor de texto después de guardar tu trabajo, o el sistema operativo cierra una aplicación que ha dejado de responder.

2.6 Tipos de sistemas operativos (Windows, Linux y macOS)

En el ámbito de los equipos de escritorio y portátiles, tres sistemas operativos destacan por su amplia adopción y características distintivas: Windows, Linux y macOS. Cada uno de ellos ofrece diferentes ventajas según las necesidades del usuario y el entorno de uso.

2.6.1 Windows

Windows, desarrollado por Microsoft, es uno de los sistemas operativos más utilizados a nivel mundial, tanto en entornos domésticos como empresariales. Es conocido por su interfaz gráfica intuitiva y su amplia compatibilidad con una gran variedad de software y hardware.

2.6.1.1 Características Principales:

Interfaz Gráfica Intuitiva
Diseño basado en ventanas, menús y escritorios que facilita la navegación y el uso para usuarios de todos los niveles.
Amplia Compatibilidad de Software
Soporta una vasta gama de aplicaciones, incluyendo videojuegos, herramientas profesionales y software empresarial.
Modelo Comercial
Software Privativo que requiere la compra de licencias para su uso legal en diferentes ediciones como Home, Pro y Enterprise.

Estándar en Entornos Empresariales :Utilizado ampliamente para tareas de ofimática, gestión administrativa y servicios centralizados como Active Directory, facilitando la administración de equipos y usuarios en organizaciones grandes.

2.6.2 Linux

Linux es un sistema operativo de código abierto basado en el núcleo (kernel) creado por Linus Torvalds en 1991. Es mantenido y desarrollado por una comunidad global de desarrolladores y diversas organizaciones, ofreciendo una gran flexibilidad y personalización.

2.6.2.1 Características Principales

Software Libre y de Código Abierto (FOSS)
Permite a los usuarios examinar, modificar y distribuir el código fuente libremente, fomentando la innovación y colaboración.
Alta Estabilidad y Seguridad
Preferido en entornos de servidores y sistemas críticos debido a su robustez y capacidad para mantenerse operativo durante largos periodos sin reinicios frecuentes.
Variedad de Distribuciones (Distros)
Ofrece numerosas distribuciones adaptadas a diferentes necesidades, como Ubuntu, Debian, Fedora y CentOS, cada una con características específicas para usuarios finales, servidores o entornos especializados.
Filosofía Comunitaria y Extensibilidad
Alta capacidad de personalización, permitiendo a los usuarios ajustar el sistema operativo profundamente según sus requerimientos específicos, ideal para desarrolladores y entusiastas de la tecnología.

2.6.3 macOS

macOS, desarrollado por Apple Inc., es un sistema operativo basado en UNIX diseñado exclusivamente para funcionar en los dispositivos Mac, como MacBook, iMac y Mac Pro. Se caracteriza por su integración perfecta con el hardware de Apple y su experiencia de usuario enfocada en la simplicidad y el diseño.

2.6.3.1 Características Principales:

Integración Vertical con Hardware Apple
Diseñado exclusivamente para dispositivos Mac, lo que garantiza un rendimiento optimizado y una estabilidad excepcional.
Experiencia de Usuario Enfocada en la Sencillez y el Diseño
Interfaz estética y coherente con elementos distintivos como el Dock, la barra de menús superior y el Finder que facilita la gestión de archivos y aplicaciones.
Basado en UNIX
Hereda herramientas de línea de comandos robustas y una arquitectura segura, facilitando tareas avanzadas y scripting a través de la Terminal con shells como Bash y Zsh.
Modelo Comercial y Ecosistema Cerrado
Apple controla estrictamente tanto el hardware como el software, asegurando una experiencia de usuario consistente pero restringiendo la adaptabilidad en hardware no autorizado (como en el caso de Hackintosh, configuraciones no oficiales para ejecutar macOS en equipos no diseñados por Apple).