2. SISTEMAS OPERATIVOS
Un sistema operativo (SO) es un conjunto de programas que gestionan
los recursos de hardware y software de un ordenador. Actúa como
intermediario entre los usuarios y el hardware, permitiendo la ejecución
de aplicaciones y facilitando la interacción con el sistema. Los sistemas
operativos son responsables de tareas fundamentales como la gestión de
procesos, la administración de memoria, la gestión de archivos y la
comunicación entre dispositivos.
Importancia en la Computación Moderna
Los sistemas operativos son esenciales en la computación moderna por
varias razones:
1. Facilitan la Usabilidad: Proporcionan interfaces gráficas o de
línea de comandos que permiten a los usuarios interactuar con el
hardware de manera intuitiva.
2. Gestión de Recursos: Administran eficientemente los recursos del
sistema (CPU, memoria, almacenamiento, etc.), optimizando el
rendimiento y asegurando que múltiples aplicaciones puedan
ejecutarse simultáneamente.
3. Seguridad y Protección: Implementan mecanismos de seguridad
que protegen los datos y los recursos del sistema contra accesos
no autorizados y ataques.
4. Compatibilidad: Permiten que diferentes aplicaciones y
programas funcionen de manera coherente en diversas
plataformas de hardware, promoviendo la interoperabilidad.
3. 5. Base para el Desarrollo de Software: Proporcionan herramientas
y bibliotecas que permiten a los desarrolladores crear aplicaciones
de manera más eficiente.
Objetivos del Trabajo
El objetivo de este trabajo es:
1. Explorar la Historia y Evolución: Analizar la evolución de los
sistemas operativos desde sus inicios hasta la actualidad,
destacando hitos importantes.
2. Clasificar Tipos y Componentes: Identificar y clasificar los
diferentes tipos de sistemas operativos y sus componentes
fundamentales, explicando sus funciones y características.
3. Comprender la Gestión de Recursos: Examinar cómo los
sistemas operativos gestionan procesos, memoria y seguridad, y
cómo estas funciones son críticas para el funcionamiento del
sistema.
4. Analizar Tendencias Futuras: Investigar las tendencias
emergentes en el desarrollo de sistemas operativos, como la
virtualización y el uso de inteligencia artificial.
5. Proporcionar una Visión Integral: Ofrecer una comprensión
amplia de los sistemas operativos y su impacto en la computación
moderna y el futuro de la tecnología.
Historia de los Sistemas Operativos
Primeros Sistemas Operativos (Batch Processing)
Los primeros sistemas operativos surgieron en la década de 1950 y
estaban diseñados principalmente para realizar procesamiento por lotes
(batch processing). En este enfoque, las tareas se agrupaban y se
ejecutaban secuencialmente sin interacción del usuario.
Características:
Sin Interacción: Los usuarios enviaban trabajos al sistema,
que los procesaba uno a uno.
Eficiencia: Permitía maximizar el uso de la CPU, ya que se
evitaban tiempos de inactividad.
Ejemplos: Sistemas como el IBM 7094 y el OS/360 de IBM
fueron pioneros en este tipo de procesamiento.
4. Este modelo, aunque eficiente en términos de uso de recursos, tenía
limitaciones significativas en términos de usabilidad, ya que los usuarios
no podían interactuar con el sistema durante la ejecución de sus tareas.
Evolución Hacia Sistemas Interactivos
La transición hacia los sistemas interactivos comenzó en la década de
1960 y 1970 con la introducción de computadoras que permitían la
interacción en tiempo real.
Características:
Interacción Directa: Los usuarios podían interactuar con el
sistema a través de terminales, lo que permitía un feedback
inmediato.
Multiprogramación: Permitió la ejecución de múltiples
procesos simultáneamente, aumentando la eficiencia del
sistema.
Ejemplos: El desarrollo de sistemas como CTSS
(Compatible Time-Sharing System) y MULTICS sentó las
bases para los sistemas de tiempo compartido.
5. Impacto de UNIX y Linux
El desarrollo de UNIX en 1969 por Ken Thompson, Dennis Ritchie y otros
en los laboratorios Bell marcó un hito en la historia de los sistemas
operativos.
Características de UNIX:
Portabilidad: Escrito en C, lo
que facilitó su adaptación a
diferentes plataformas.
Multitarea y Multiusuario: Permitió que múltiples usuarios
trabajaran en el mismo sistema al mismo tiempo, mejorando
la eficiencia.
Sistema de Archivos Jerárquico: Introdujo una estructura
organizada para la gestión de archivos.
Linux, desarrollado por Linus Torvalds en 1991, se basó en los principios
de UNIX y se convirtió en un sistema operativo de código abierto.
Importancia de Linux:
Accesibilidad: Su naturaleza de código abierto
permitió que
Adopción en Servidores: Linux se convirtió en
el sistema operativo preferido para servidores y sistemas
embebidos debido a su estabilidad y flexibilidad.
Comunidad y Soporte: La comunidad de usuarios y
desarrolladores ha sido fundamental para su crecimiento y
mejora continua.
La evolución de los sistemas operativos desde el procesamiento por lotes
hasta los sistemas interactivos y la influencia de UNIX y Linux ha
transformado la manera en que interactuamos con la tecnología. Estos
avances no solo han mejorado la eficiencia y la usabilidad, sino que
también han sentado las bases para el desarrollo de software moderno y
la innovación en la computación.
6. Tipos de Sistemas Operativos
1. Sistemas Operativos de Tiempo Compartido
Los sistemas operativos de tiempo compartido permiten que múltiples
usuarios accedan a los recursos de un sistema computacional al mismo
tiempo. Esta tecnología se basa en la multiprogramación, donde el
CPU alterna rápidamente entre diferentes tareas, proporcionando la
ilusión de que cada usuario tiene acceso exclusivo al sistema.
Características:
Interactividad: Permiten la interacción en tiempo real con
los usuarios.
Planificación de Procesos: Utilizan algoritmos de
planificación para gestionar la ejecución de procesos.
Ejemplos: UNIX, Linux y sistemas de mainframe como IBM
z/OS.
2. Sistemas Operativos en Tiempo Real
Los sistemas operativos en tiempo real
(RTOS) están diseñados para servir
aplicaciones que requieren respuestas
instantáneas y predecibles a eventos
externos. Son críticos en entornos donde
el tiempo de respuesta es esencial.
Características:
7. Determinismo: Garantizan que las operaciones se realicen
dentro de un tiempo específico.
Prioridades: Los procesos tienen prioridades que determinan
su ejecución.
Ejemplos: VxWorks, FreeRTOS y QNX, utilizados en
sistemas embebidos, robótica y control industrial.
3. Sistemas Operativos de Red
Los sistemas operativos de red están diseñados para gestionar recursos y
servicios en una red de computadoras. Permiten la comunicación y el
intercambio de datos entre diferentes dispositivos conectados.
Características:
Gestión de Recursos Compartidos: Facilitan el acceso a
impresoras, archivos y otros recursos en red.
Protocolos de Comunicación: Implementan protocolos que
permiten la comunicación entre dispositivos.
Ejemplos: Novell NetWare, Microsoft Windows Server y Linux en
entornos de servidor.
4. Sistemas Operativos Móviles
Los sistemas operativos móviles están diseñados específicamente
para dispositivos móviles como teléfonos inteligentes y tabletas. Se
optimizan para el uso de recursos limitados y la interacción táctil.
Características:
8. Interfaz Táctil: Diseñados para pantallas táctiles y
navegación intuitiva.
Gestión de Energía: Optimizan el uso de la batería para
prolongar la vida útil del dispositivo.
Ejemplos: Android, iOS y Windows Phone.
Comparación de Características
Tipo de SO Interactividad
Tiempo de
Respuesta
Uso de
Recursos
Ejemplos
Tiempo
Compartido
Alta Variable Moderado UNIX, Linux
Tiempo Real Baja Crítico Bajo
VxWorks,
FreeRTOS
Red Moderada Variable Variable
Windows Server,
Linux
Móviles Alta Moderado Bajo Android, iOS
Cada tipo de sistema operativo está diseñado para satisfacer
necesidades específicas, desde la interacción en tiempo real hasta la
gestión de redes y dispositivos móviles. Comprender estas diferencias es
fundamental para seleccionar el sistema operativo adecuado para un
entorno particular, optimizando así el rendimiento y la eficiencia en el uso
de recursos.
:
Componentes de un Sistema Operativo
1. Núcleo (Kernel)
El núcleo es la parte central del sistema operativo y tiene la
responsabilidad de gestionar el hardware y los recursos del sistema.
Actúa como un intermediario entre las aplicaciones y el hardware.
Funciones del Núcleo:
Gestión de Procesos: Controla la creación, ejecución y
terminación de procesos.
Gestión de Recursos: Asigna recursos del hardware (CPU,
memoria, dispositivos de entrada/salida).
Interrupciones: Maneja las interrupciones generadas por
hardware, permitiendo una respuesta rápida a eventos
externos.
9. Tipos de Núcleos:
Núcleo Monolítico: Todo el sistema operativo se ejecuta
en modo kernel. Ejemplo: Linux.
Núcleo Micro: Solo las funciones esenciales se ejecutan
en modo kernel, mientras que otros servicios funcionan
en espacio de usuario. Ejemplo: MINIX.
2. Gestor de Procesos
El gestor de procesos es responsable de la creación, planificación y
terminación de procesos. Un proceso es una instancia de un programa
en ejecución.
Funciones del Gestor de Procesos:
Creación y Terminación de Procesos: Permite a los
usuarios iniciar y finalizar procesos.
Planificación: Asigna tiempo de CPU a los procesos en
función de algoritmos de planificación (FIFO, Round Robin,
Prioridades).
Sincronización y Comunicación: Facilita la comunicación
entre procesos y asegura que los accesos a recursos
compartidos sean seguros.
3. Gestor de Memoria
El gestor de memoria se encarga de la gestión de la memoria principal,
asegurando que cada proceso tenga acceso a la memoria que necesita
sin interferir con otros procesos.
Funciones del Gestor de Memoria:
Asignación de Memoria: Asigna bloques de memoria a
procesos en ejecución.
Paginación y Segmentación: Utiliza técnicas para dividir la
memoria en páginas o segmentos, facilitando la gestión.
Memoria Virtual: Permite que los sistemas operativos
utilicen más memoria de la que físicamente está disponible,
utilizando espacio en disco como memoria adicional.
4. Gestor de Archivos
10. El gestor de archivos es responsable de la organización,
almacenamiento y acceso a los archivos en el sistema. Proporciona una
estructura jerárquica para el almacenamiento de datos.
Funciones del Gestor de Archivos:
Organización: Permite la creación de directorios y
subdirectorios para organizar archivos.
Acceso y Seguridad: Controla el acceso a archivos y
establece permisos para usuarios.
Operaciones de Archivo: Facilita operaciones como crear,
leer, escribir y eliminar archivos.
5. Interfaz de Usuario
La interfaz de usuario (UI) es el componente que permite a los usuarios
interactuar con el sistema operativo. Puede ser gráfica (GUI) o de línea
de comandos (CLI).
Tipos de Interfaz:
Interfaz Gráfica (GUI): Proporciona elementos visuales
como ventanas, iconos y menús. Ejemplo: Windows,
macOS.
Interfaz de Línea de Comandos (CLI): Permite la
interacción mediante comandos de texto. Ejemplo: terminal
de Linux.
Funciones de la Interfaz de Usuario:
Facilitar la Interacción: Proporciona herramientas para que
los usuarios realicen tareas de manera intuitiva.
Personalización: Permite a los usuarios personalizar su
entorno de trabajo.
Acceso a Funciones del Sistema: Facilita el acceso a las
funcionalidades del sistema operativo y las aplicaciones.
Procesos y Hilos
1. Definición de Proceso y Hilo
Proceso: Un proceso es una instancia de un programa en
ejecución que incluye el código del programa, sus datos, y su
estado de ejecución. Cada proceso tiene su propio espacio de
11. direcciones, lo que significa que no puede interferir directamente
con otros procesos.
Hilo: Un hilo (o thread) es la unidad más pequeña de
procesamiento que puede ser ejecutada de manera independiente
por un sistema operativo. Un hilo se ejecuta dentro de un proceso
y comparte su espacio de direcciones, lo que permite una
comunicación más rápida y eficiente entre hilos que entre
procesos.
2. Estado de los Procesos
Los procesos pueden estar en diferentes estados durante su ciclo de
vida. Los estados más comunes son:
Nuevo: El proceso está siendo creado.
Listo: El proceso está esperando para ser asignado a la CPU.
Ejecutando: El proceso está siendo ejecutado por la CPU.
Bloqueado: El proceso está esperando por un evento externo,
como la finalización de una operación de entrada/salida.
Terminado: El proceso ha finalizado su ejecución.
Estos estados son parte de un ciclo continuo, donde los procesos
cambian de estado en función de las acciones del sistema operativo y las
circunstancias externas.
3. Planificación de Procesos
La planificación de procesos es el mecanismo que el sistema operativo
utiliza para decidir qué procesos se ejecutan y en qué orden. Existen
varios algoritmos de planificación, cada uno con sus ventajas y
desventajas:
FIFO (First In, First Out): Los procesos se ejecutan en el orden en
que llegan.
Round Robin: Cada proceso recibe un tiempo fijo de CPU en un
ciclo repetitivo.
Prioridad: Se asigna tiempo de CPU a los procesos según su
prioridad, donde los procesos de mayor prioridad se ejecutan
primero.
Planificación de Tiempo Real: Asegura que los procesos críticos
se ejecuten dentro de plazos específicos.
12. La elección del algoritmo de planificación impacta en el rendimiento
general del sistema y en la experiencia del usuario.
4. Ejemplos de Manejo de Hilos
El manejo de hilos permite la ejecución concurrente de tareas dentro de
un proceso, lo que puede mejorar la eficiencia y la capacidad de
respuesta. Algunos ejemplos incluyen:
Aplicaciones de Servidor: En un servidor web, cada solicitud de
cliente puede ser manejada por un hilo separado, permitiendo que
múltiples usuarios interactúen con el servidor simultáneamente sin
retrasos significativos.
Interfaces Gráficas: En aplicaciones de escritorio, un hilo puede
manejar la lógica de la aplicación mientras otro se encarga de la
interfaz de usuario, asegurando que la interfaz permanezca
receptiva durante procesos de larga duración.
Procesamiento de Datos: En aplicaciones que procesan grandes
volúmenes de datos, los hilos pueden dividir el trabajo en partes
más pequeñas que se ejecutan en paralelo, acelerando el tiempo
de procesamiento total.
.
.Gestión de Memoria
1. Memoria Física vs. Memoria Virtual
Memoria Física: Se refiere a la cantidad real de RAM instalada en
un sistema. Es la memoria que está físicamente disponible para el
sistema operativo y las aplicaciones. La memoria física es limitada
y puede influir en el rendimiento general del sistema.
Memoria Virtual: Es una técnica que permite a un sistema
operativo utilizar espacio en disco duro como si fuera memoria
RAM adicional. Esto permite que los programas que requieren más
memoria de la que está disponible físicamente puedan ejecutarse.
La memoria virtual se gestiona mediante un mecanismo de
paginación o segmentación.
13. Ventajas de la Memoria Virtual:
Permite ejecutar programas más grandes que la memoria física
disponible.
Aislamiento de procesos, lo que mejora la seguridad y estabilidad
del sistema.
2. Técnicas de Gestión de Memoria
Las técnicas de gestión de memoria son fundamentales para optimizar el
uso de la memoria y garantizar que los procesos funcionen de manera
eficiente. Las dos técnicas más comunes son:
Paginación:
La memoria se divide en bloques de tamaño fijo llamados
páginas.
La memoria física se divide en marcos de página del mismo
tamaño.
Cuando un proceso necesita acceder a una página que no
está en la memoria física, se produce un fallo de página, y el
sistema operativo la carga desde el disco.
Ventajas: Simplifica la gestión de memoria y evita la
fragmentación externa.
Segmentación:
Divide la memoria en segmentos de tamaño variable, que
pueden representar diferentes partes de un programa (como
código, datos, pila).
Cada segmento tiene una dirección base y un límite que
define su tamaño.
Ventajas: Proporciona una representación más lógica de la
memoria, facilitando la gestión de estructuras de datos
complejas.
3. Ejemplo de un Sistema de Gestión de Memoria
Un ejemplo práctico de un sistema de gestión de memoria es el sistema
operativo Windows. Utiliza un mecanismo de paginación para gestionar
la memoria virtual:
Funcionamiento:
14. Cada aplicación en Windows se ejecuta en su propio
espacio de direcciones virtuales, lo que asegura que no
interfiera con otras aplicaciones.
Cuando un programa necesita más memoria de la
disponible, Windows utiliza su archivo de paginación (Page
file) en el disco duro para almacenar temporalmente datos
que no se utilizan activamente.
Si un dato en la memoria física no se utiliza durante un
tiempo, puede ser movido al archivo de paginación para
liberar espacio.
Efectos en el Rendimiento:
Este sistema permite que múltiples aplicaciones se ejecuten
simultáneamente, incluso si el total de su memoria excede la
memoria física disponible.
Sin embargo, un uso excesivo del archivo de paginación
puede llevar a un rendimiento más lento, conocido como
"thrashing", donde el sistema pasa más tiempo moviendo
datos entre la memoria y el disco que ejecutando
aplicaciones.
Seguridad y Protección en Sistemas Operativos
Importancia de la Seguridad
La seguridad en los sistemas operativos es fundamental para proteger la
integridad, confidencialidad y disponibilidad de los datos y recursos del
sistema. Con el aumento de ciberataques y amenazas, garantizar la
seguridad se ha convertido en una prioridad para usuarios y
organizaciones. Un sistema operativo seguro previene accesos no
autorizados, protege contra malware y asegura que los datos sensibles
permanezcan a salvo.
Métodos de Protección
Existen varios métodos de protección que los sistemas operativos utilizan
para salvaguardar la información y los recursos:
Control de Acceso:
15. Define quién puede acceder a qué recursos y en qué
condiciones. Se implementa a través de:
Listas de Control de Acceso (ACL): Especifican los
permisos de acceso para usuarios y grupos en archivos y
recursos.
Roles de Usuario: Asignan permisos basados en el rol del
usuario dentro de la organización, limitando el acceso a
funciones necesarias.
Autenticación:
Proceso que verifica la identidad de un usuario o sistema.
Métodos comunes incluyen:
Contraseñas: El método más básico, donde los usuarios
deben ingresar una contraseña correcta para acceder.
Autenticación Multifactor (MFA): Combina dos o más
métodos de autenticación (por ejemplo, contraseña y un
código enviado a un dispositivo móvil) para aumentar la
seguridad.
Ejemplos de Vulnerabilidades
A pesar de las medidas de seguridad implementadas, los sistemas
operativos pueden ser vulnerables a diversos ataques:
Malware: Software malicioso que puede dañar o comprometer un
sistema. Ejemplos incluyen virus, troyanos y ransomware.
Exploits de Seguridad: Ataques que aprovechan fallos en el
software o configuraciones incorrectas. Por ejemplo, un exploit que
permite la ejecución de código arbitrario.
Phishing: Técnicas que engañan a los usuarios para que revelen
información sensible, como contraseñas, a través de correos
electrónicos o sitios web falsos.
Tendencias Futuras en Sistemas Operativos
1. Virtualización y Contenedores
La virtualización permite crear múltiples entornos virtuales en un solo
hardware físico, lo que optimiza el uso de recursos y mejora la
flexibilidad. Los contenedores, como Docker, ofrecen un enfoque más
ligero que las máquinas virtuales, permitiendo empaquetar aplicaciones y
sus dependencias en un solo entorno que puede ejecutarse en cualquier
lugar.
16. Beneficios:
Eficiencia: Menor uso de recursos en comparación con las
máquinas virtuales tradicionales.
Portabilidad: Las aplicaciones en contenedores pueden
trasladarse fácilmente entre diferentes entornos.
Desarrollo Ágil: Facilitan la integración continua y el
despliegue continuo (CI/CD), acelerando el ciclo de vida del
desarrollo de software.
2. Sistemas Operativos en la Nube
Los sistemas operativos en la nube están diseñados para operar en
entornos de nube, ofreciendo escalabilidad y accesibilidad desde
cualquier lugar. Ejemplos como Google Cloud OS y AWS Lambda
permiten una gestión eficiente de recursos en la nube.
Características:
Escalabilidad Dinámica: Capacidad para aumentar o
disminuir recursos según demanda.
Modelo de Pago por Uso: Los usuarios solo pagan por los
recursos que consumen.
Acceso Remoto: Facilitan el acceso y la colaboración desde
diferentes dispositivos y ubicaciones.
3. Inteligencia Artificial en la Gestión de Sistemas Operativos
La inteligencia artificial (IA) está comenzando a integrarse en la gestión
de sistemas operativos para mejorar la eficiencia y la seguridad.
Aplicaciones:
Automatización de Tareas: La IA puede automatizar tareas
de mantenimiento, como la gestión de actualizaciones y la
monitorización de sistemas.
Seguridad Proactiva: Algoritmos de IA pueden identificar
patrones de comportamiento anómalos, ayudando a prevenir
ataques antes de que ocurran.
Optimización de Recursos: La IA puede analizar el uso de
recursos y ajustar dinámicamente la asignación para
optimizar el rendimiento.