Comprendiendo los Sistemas Operativos: Funcionamiento, Gestión y Desarrollo
Clasificado en Informática
Escrito el en español con un tamaño de 9,67 KB
1. ¿Qué es un Sistema Operativo (SO)?
El Sistema Operativo (SO) es el software base del ordenador. Consiste en un conjunto de programas, servicios y funciones que gestionan y coordinan el funcionamiento tanto del hardware como del software. Además, ofrece la posibilidad de comunicación entre el usuario y la máquina.
Clasificación de los Sistemas Operativos
- Monousuario (SOMO): Se carga desde la memoria, se ubica en la RAM y permite que las partes de la CPU comiencen a trabajar. Está diseñado para ser utilizado por un solo usuario a la vez.
- Multiusuario (SOMU): Posee mayor capacidad para sistemas multiusuario. Dependiendo del hardware donde esté instalado el SOMU, cada usuario dispondrá de un equipo con un SO normalmente monousuario. Al encender su equipo, se crea una conexión con el PC que dispone del SO multiusuario. Sigue una estructura cliente-servidor, donde puede delegar la mayor parte del trabajo en el PC cliente, mientras que el servidor actúa como servidor de aplicaciones (el servidor realiza la operación con aplicaciones servidor y aplicaciones cliente).
- Mainframes: En los sistemas mainframe tradicionales, los terminales conectados a menudo carecían de CPU propia (terminales tontos). La ejecución de instrucciones de diferentes usuarios se intercambia mediante técnicas de tiempo compartido. El procesamiento puede percibirse como más lento para un usuario individual debido a la compartición de recursos.
2. Evolución Histórica de los Sistemas Operativos
El software de los primeros sistemas operativos era difícil de modificar. Cualquier modificación implicaba una complicada labor de actualización y mantenimiento, e incluso podría ser necesario reconfigurar todo el sistema. La evolución de los SO ha ido en paralelo con la del hardware.
Generaciones de los Sistemas Operativos:
- Primera Generación (1945-1955): Caracterizada por el uso de válvulas de vacío. Las máquinas se programaban en lenguaje máquina y carecían de Sistema Operativo.
- Segunda Generación (1955-1965): Marcada por la aparición de los transistores. Surge el procesamiento por lotes (batch processing), que constaba de tres fases:
- Introducción de datos en el sistema utilizando un componente hardware (medio físico distinto a la computadora).
- Procesamiento de la información.
- Almacenamiento de resultados en otro soporte diferente.
- Tercera Generación (1965-1980): Se desarrollan los circuitos integrados. Aparecen los Sistemas Operativos Multiusuario (SOMU) y la multiprogramación.
- Cuarta Generación (1980-Actualidad): Se caracteriza por mejoras significativas en rendimiento, eficiencia energética, diseño de interfaces de usuario, y la proliferación de sistemas operativos para redes y dispositivos personales.
3. Funciones y Recursos Clave de un Sistema Operativo
La principal función de un Sistema Operativo es coordinar la utilización del hardware entre los diferentes programas de aplicación que se ejecuten, actuando como un eficiente gestor de recursos.
4. Gestión de Procesos en un Sistema Operativo
La gestión de procesos es una tarea fundamental del SO, especialmente cuando se ejecutan múltiples programas de forma concurrente.
4.1. El Procesador y los Procesos
La gestión del procesador es crucial cuando se ejecuta más de un proceso simultáneamente, ya que cada uno necesita recursos para su ejecución.
- Proceso: Un programa en ejecución. Cuando un programa se convierte en proceso, el SO le asigna una estructura de datos específica, conocida como Bloque de Control de Proceso (PCB, Process Control Block).
- Hebra o Hilo (Thread): Un subproceso dentro de un proceso. Consume recursos propios (como un contador de programa y registros) pero comparte otros recursos (como el espacio de memoria) con el proceso padre que lo ha ejecutado y con otros hilos del mismo proceso. Permite la concurrencia dentro de un mismo proceso.
4.2. Estados de un Proceso
Un proceso puede encontrarse en diferentes estados a lo largo de su ciclo de vida:
- En Ejecución: El proceso está actualmente utilizando la CPU y ejecutando sus instrucciones. Tiene asignado un tiempo de CPU.
- Preparado (o Listo): El proceso está esperando su turno para poder utilizar la CPU. Dispone de todos los recursos necesarios excepto la CPU y está en la cola de procesos listos.
- Bloqueado (o En Espera): El proceso está retenido porque no puede continuar su ejecución hasta que ocurra algún evento externo (por ejemplo, la finalización de una operación de Entrada/Salida (E/S), la disponibilidad de un recurso, o la recepción de una señal).
4.3. Transiciones entre Estados de un Proceso
Los procesos cambian de estado según diferentes eventos:
- A. De Ejecución a Bloqueado: Ocurre cuando un programa que está en ejecución necesita algún elemento (como un dato de E/S), una señal, o espera la finalización de una operación para continuar.
- B. De Ejecución a Preparado: Sucede cuando un programa ha utilizado el tiempo de CPU asignado (quantum) en sistemas de tiempo compartido y debe cederla al siguiente proceso, o cuando es interrumpido por un proceso de mayor prioridad.
- C. De Preparado a Ejecución: El planificador del sistema operativo (scheduler) selecciona un proceso de la cola de preparados y le asigna la CPU para que continúe su ejecución.
- D. De Bloqueado a Preparado: Se produce cuando el evento que el proceso estaba esperando (ej. finalización de E/S, recepción de señal o dato) ocurre. El proceso no pasa directamente a ejecución si la CPU está ocupada, sino que se mueve a la cola de preparados.
Otros conceptos importantes en la gestión de procesos:
- Identificador de Proceso (PID): El SO asigna a cada proceso un identificador único.
- Proceso Padre y Proceso Hijo: Un proceso (padre) puede crear otros procesos (hijos).
- Cambio de Contexto: Cuando el SO cambia la CPU de un proceso a otro, debe guardar el estado del proceso saliente y cargar el estado del proceso entrante. Este cambio se denomina cambio de contexto. Es completo cuando se cambia entre procesos diferentes y parcial (más rápido) cuando se cambia entre hilos del mismo proceso.
- Prioridad: Es una medida asignada a cada proceso que ayuda al planificador a determinar el orden de ejecución. Procesos con mayor prioridad suelen ejecutarse antes.
- Planificación (Scheduling): Es la política o el conjunto de reglas que utiliza el SO para decidir qué proceso de la cola de preparados se ejecutará a continuación y durante cuánto tiempo.
- Algoritmo de Planificación: Es la implementación específica de la política de planificación. Define las operaciones concretas para seleccionar el siguiente proceso a ejecutar (ej. FIFO, Round Robin, Prioridades).
5. Gestión de Memoria: Conceptos Fundamentales
El administrador de memoria es la parte del sistema operativo que gestiona la memoria principal (RAM). Sus tareas incluyen:
- Llevar un registro de las partes de la memoria que se están utilizando y cuáles están libres.
- Decidir qué procesos (o partes de procesos) se cargan en memoria cuando hay espacio disponible.
- Asignar y liberar espacio de memoria según sea necesario.
El planificador de memoria (a menudo integrado en el administrador de memoria) organiza la asignación de memoria a los procesos.
6. Técnicas Avanzadas de Gestión de Memoria
Para optimizar el uso de la memoria, los sistemas operativos emplean diversas técnicas:
6.1. Paginación
La paginación es una técnica de gestión de memoria donde el espacio de direcciones lógicas de un programa se divide en bloques de tamaño fijo llamados páginas. La memoria física se divide en bloques del mismo tamaño llamados marcos de página. El sistema operativo utiliza una tabla de páginas para cada proceso, la cual mantiene la correspondencia entre las páginas lógicas del proceso y los marcos de página físicos en la memoria. Esto permite que un proceso no necesite ocupar un espacio contiguo en memoria física.
6.2. Segmentación
La segmentación es otra técnica de gestión de memoria donde el programa se divide en segmentos de tamaño variable, que corresponden a unidades lógicas (por ejemplo, código, datos, pila). Cada segmento tiene un nombre y una longitud, y el SO mantiene una tabla de segmentos para cada proceso.
6.3. Intercambio (Swapping)
El intercambio (swapping) es un mecanismo que permite mover temporalmente un proceso (o partes de él) desde la memoria principal a un dispositivo de almacenamiento secundario (como el disco duro) para liberar memoria principal. Posteriormente, el proceso puede ser devuelto a la memoria principal para continuar su ejecución. Esta técnica es útil cuando la memoria física es insuficiente para mantener todos los procesos activos.