Historia y Evolución de los Sistemas Operativos
1.1. Introducción a los Sistemas Operativos (SO)
Un sistema operativo (SO) es un software que actúa como intermediario entre el hardware y las aplicaciones. Administra recursos y proporciona servicios esenciales.
1.2. Definiciones de SO
- Abstracción de hardware: Oculta detalles de hardware, permitiendo que las aplicaciones se ejecuten sin conocer los detalles subyacentes.
- Administración de recursos: Asigna y gestiona recursos como CPU, memoria y dispositivos de manera eficiente.
1.3. Funciones de un SO
- Gestión de recursos: Controla el acceso a CPU, memoria y periféricos.
- Administración de archivos: Organiza y facilita el acceso a datos almacenados.
- Seguridad: Protege el sistema y los datos contra accesos no autorizados.
1.4. Breve Historia de los SO
Desde sistemas uniprogramados hasta sistemas multiprogramados y sistemas distribuidos modernos. Ejemplos incluyen MS-DOS, Windows, Linux y macOS.
1.5. Tipos de SO
- SO de propósito general como Windows y Linux.
- SO embebidos en dispositivos como teléfonos móviles y electrodomésticos.
- SO móviles como Android e iOS
- SO de servidores para aplicaciones empresariales y web.
1.6. Conocimientos del Desarrollo de los SO
Incluye diseño, implementación, prueba y mantenimiento. Comprender cómo se desarrollan y mejoran los SO es esencial para los profesionales de TI.
1.7. Funciones en Diferentes Tipos de SO
- SO tipo batch: Procesamiento en lotes de trabajos.
- SO de tiempo compartido: Multitarea para compartir recursos.
- SO de cómputo personal: Interacción de usuario y aplicaciones.
- SO paralelo: Utilizado en supercomputadoras para procesamiento intensivo.
- SO de tiempo real: Controla sistemas críticos en tiempo real, como aviones o fábricas.
Esquema Básico del SO
2.1. Kernel
El kernel es el corazón del SO. Controla el hardware y proporciona servicios básicos a las aplicaciones. Administra memoria, CPU, dispositivos y maneja interrupciones.
2.2. Shell
La shell es la interfaz de usuario que permite interactuar con el SO. Puede ser de línea de comandos o gráfica, como la interfaz de Windows.
2.3. Utilidades Básicas y Externas
Son programas y herramientas proporcionados por el SO para realizar tareas comunes. Ejemplos incluyen comandos de copia de archivos y utilidades de búsqueda.
2.4. Manejadores
Los manejadores o controladores son módulos de software que gestionan aspectos específicos del hardware, como controladores de impresora, tarjetas gráficas o redes. Permiten la comunicación entre el hardware y el kernel del SO.
Manejo de Procesos
3.1. Procesos
3.1.1. Conceptos
Los procesos son programas en ejecución que tienen su propio espacio de memoria. Cada proceso tiene un programa, datos y un contexto de ejecución independiente.
3.1.2. Planificación de Procesos
La planificación de procesos es la decisión de cuál de los procesos listos se ejecutará a continuación. Se utilizan algoritmos de planificación para tomar esta decisión.
3.1.3. Comunicación entre Procesos
Los procesos pueden comunicarse entre sí a través de mecanismos como la memoria compartida, las colas de mensajes o los sockets de red.
3.1.4. Estados de un Proceso
Los procesos pueden estar en varios estados, como listo, en ejecución, bloqueado o terminado, dependiendo de su actividad y recursos.
3.1.5. Manejo de Interrupciones
Las interrupciones son señales que indican eventos como errores o solicitudes de entrada/salida. El SO debe manejarlas adecuadamente.
3.1.6. Procesos Concurrentes
La concurrencia implica que múltiples procesos se ejecutan simultáneamente. La gestión de recursos compartidos y la sincronización son fundamentales.
3.1.7. Paso de Mensajes
El paso de mensajes es una forma de comunicación entre procesos en la que envían y reciben mensajes, lo que facilita la colaboración y la sincronización.
3.1.8. Interbloqueos (Deadlocks)
Los interbloqueos son situaciones en las que varios procesos quedan atrapados esperando recursos que no se liberarán. Deben prevenirse o resolverse.
3.2. Hilos de Control
3.2.1. Modelos de Multihilo
Los hilos de control permiten la ejecución concurrente dentro de un proceso. Pueden ser de usuario (manejados por la aplicación) o de kernel (manejados por el SO). Los modelos incluyen multihilo de nivel de usuario, nivel de kernel y combinados.
3.3. Planificación del CPU
3.3.1. Criterios de Planificación
La planificación del CPU es la asignación de tiempo de CPU a procesos. Los criterios incluyen:
- Planificación por prioridad: Asignar recursos en función de la importancia de los procesos.
- Planificación por tiempo compartido: Asignar tiempo de CPU equitativo a todos los procesos en ejecución.
- Planificación por lotes: Ejecutar lotes de trabajos de manera secuencial.
- Planificación en tiempo real: Garantizar que ciertos procesos se ejecuten dentro de plazos estrictos.
Coordinación y Sincronización de Procesos
4.1. Problemas de Sección Crítica
Ocurren cuando varios procesos intentan acceder simultáneamente a recursos compartidos, lo que puede causar inconsistencias o bloqueos. La gestión adecuada es esencial.
4.2. Semáforos
Los semáforos son una técnica de sincronización que permite a los procesos coordinar su acceso a recursos compartidos. Pueden ser utilizados para evitar condiciones de carrera.
4.3. Regiones Críticas
Son secciones de código críticas donde se deben evitar problemas de acceso simultáneo. Los semáforos u otros mecanismos de sincronización se utilizan para garantizar la exclusión mutua.
4.4. Bloqueos
Los bloqueos son situaciones donde los procesos quedan atrapados esperando recursos que no se liberarán. Las causas, prevención, detección y resolución son temas críticos en la gestión de procesos.
4.5. Recuperación de Bloqueos
Métodos para resolver situaciones de bloqueo, como la liberación de recursos o la prevención de interbloqueos mediante la planificación adecuada.