Características:
* Gestión de recursos: La característica central. Esto incluye administrar la CPU, la memoria, el almacenamiento, los dispositivos de entrada/salida y las conexiones de red. El sistema operativo asigna estos recursos a diferentes programas y usuarios, asegurando un uso justo y eficiente.
* abstracción: Oculta la complejidad del hardware de las aplicaciones. Los programas interactúan con el sistema operativo a través de interfaces más simples (API), en lugar de directamente con el hardware.
* Seguridad: Protege el sistema del acceso no autorizado y el software malicioso. Esto incluye autenticación de usuarios, control de acceso y características de seguridad como firewalls.
* concurrencia: Maneja múltiples programas que se ejecutan aparentemente simultáneamente (aunque el sistema operativo se logra a través del tiempo y programación por el sistema operativo).
* Persistencia: Permite que los programas y datos se almacenen permanentemente en dispositivos de almacenamiento (como discos duros).
* Portabilidad: Algunos sistemas operativos están diseñados para ejecutarse en diferentes arquitecturas de hardware (aunque generalmente con modificaciones).
* Fiabilidad: Su objetivo es garantizar que el sistema funcione de manera consistente y previsible, manejando los errores con gracia.
Capacidades:
* Gestión de procesos: Crear, programar y terminar procesos; Gestión de la comunicación entre procesos.
* Gestión de memoria: Asignar y desear la memoria a los programas; Gestión de la memoria virtual.
* Gestión del sistema de archivos: Organizar y administrar archivos y directorios en dispositivos de almacenamiento.
* Gestión de entrada/salida: Manejo de interacciones con periféricos (teclado, mouse, impresora, red, etc.).
* redes: Proporcionar servicios de red, permitiendo la comunicación con otras computadoras.
* Gestión de seguridad: Autenticación, autorización, cifrado y control de acceso.
* Interfaz de usuario: Proporcionar una forma para que los usuarios interactúen con el sistema (interfaz de línea de comandos, interfaz gráfica de usuario).
* Gestión del controlador del dispositivo: Comunicación de soporte con varios dispositivos de hardware a través de controladores.
Limitaciones:
* Overhead de rendimiento: El sistema operativo en sí consume recursos (CPU, memoria), que afectan el rendimiento de las aplicaciones.
* Vulnerabilidades de seguridad: OSE puede ser vulnerable a las exploits de seguridad, que requieren actualizaciones y parches regulares.
* Complejidad: OSE modernos son piezas de software increíblemente complejas, lo que los hace difíciles de desarrollar, mantener y depurar.
* Restricciones de recursos: El sistema operativo está limitado por los recursos de hardware disponibles (velocidad de la CPU, capacidad de memoria, espacio de almacenamiento).
* Problemas de compatibilidad: El software puede no ser compatible con todas las OSE o versiones.
* Limitaciones en tiempo real: Los sistemas operativos de uso general no están diseñados para aplicaciones en tiempo real que requieren un control de tiempo preciso. OSE en tiempo real se crean específicamente para tales aplicaciones, pero de lo contrario podrían tener capacidades más limitadas.
* Punto de falla único: Una falla en el sistema operativo puede derribar todo el sistema. Aunque técnicas como la agrupación pueden mitigar esto hasta cierto punto.
* Desafíos de portabilidad: Si bien la portabilidad es un objetivo, la transferencia por completo de un sistema operativo a una nueva arquitectura es a menudo una tarea significativa.
Es importante tener en cuenta que diferentes OSE tienen diferentes capacidades y limitaciones, dependiendo de su diseño y uso previsto. Por ejemplo, un sistema operativo móvil tendrá diferentes prioridades y limitaciones que un sistema operativo de servidor.