Sistemas Operativos - 3 - Servicios y Estructuras de diseño

Page 1


Sistemas Operativos

Servicios y Estructuras de diseño

Ingeniería de software

M.Sc. Johan Sebastian Giraldo H

Servicios del sistema operativo

Según Abraham Silberschatz, Peter Baer Galvin, y GregGagneensulibro"OperatingSystemConcepts", queesamenudoreferenciadocomo"Kurose"debido a las múltiples ediciones y adaptaciones, los servicios principalesdeunsistemaoperativoincluyen:

1. Ejecución de Programas:

◼ El sistema operativo proporciona un entorno en el cual los programas pueden ser cargados, ejecutados y finalizados. Esto incluye la gestión del ciclodevidadeunproceso.

2. Dispositivos de Entrada y Salida:

◼ Dispositivos de Entrada: Son aquellos que permiten a los usuarios o sistemas externos enviar datos y comandos al sistema informático. Ejemplos comunes incluyen teclados, ratones, escáneres, y micrófonos.

◼ Dispositivos de Salida: Son los que permiten al sistema informático enviar datos hacia el exterior, ya sea hacia el usuario o hacia otros sistemas. Ejemplos de estos dispositivos incluyen pantallas, impresoras, y altavoces.

Gestión de I/O en Sistemas Operativo

El sistema operativo tiene la tarea de gestionar estos dispositivos para garantizar que los datos se transfieran de manera eficiente y sin conflictos. Esta gestión incluye:

◼ Controladores de Dispositivos (Device Drivers): Programas que actúan como intermediarios entre el sistema operativo y el hardware de I/O, traduciendo las instrucciones del sistema operativo a un lenguaje que el hardware pueda entender.

◼ Buffering: Técnica utilizada para almacenar temporalmente los datos que se están transfiriendo entre un dispositivo de I/O y el sistema de memoria principal, para manejar las diferencias en las velocidades de transferencia.

Gestión de I/O en Sistemas Operativo

◼ Spooling: Técnica donde se emplea un área en disco para almacenar temporalmente las salidas de un dispositivo de I/O que no puede manejar los datos en tiempo real, como en el caso de la impresión.

◼ Interrupciones: Señales enviadas al procesador por los dispositivos de I/O para indicar que necesitan atención, lo que permite al procesador atender otras tareas mientras el dispositivo realiza su operación.

Gestión de I/O en Sistemas Operativo

◼ La gestión eficiente de los dispositivos de I/O es crucial para el rendimiento general del sistema, ya que estos dispositivos suelen ser más lentos que otros componentes del sistema, como laCPU o la memoriaprincipal.

3. Manipulación de Sistemas de Archivos:

◼ Los sistemas operativos ofrecen servicios para la creación, eliminación, lectura, escritura y manipulacióndearchivosy directorios. También gestionan permisos y accesosaestosarchivos.

4. Comunicación entre Procesos:

◼ Permite que los procesos se comuniquen y sincronicen sus actividades. Esto es crucial en sistemas multitarea, donde los procesos pueden necesitarintercambiardatosomensajes.

5. Detección y Manejo de Errores:

◼ Los sistemas operativos supervisan constantemente el sistema para detectar errores (comopérdidadedatos,erroresdehardware,etc.) y proporcionan mecanismos para recuperar el sistemaomanejarlosfallosdemaneraadecuada.

6. Asignación de Recursos:

◼ Gestionan la asignación de recursos del sistema, como CPU, memoria, y dispositivos de E/S, a los diferentes procesos en ejecución para garantizar un funcionamiento eficiente y evitar conflictos.

7. Contabilidad:

Realizan un seguimiento del uso de recursos por parte de los procesos y

usuarios. Esto es útil para la gestión del sistema, la optimizaciónderecursosy en algunos casos, para la facturación.

8. Protección y Seguridad:

◼ Proporcionan mecanismos para proteger los datos y los recursos del sistema contra accesos no autorizados. Esto incluye autenticación de usuarios, control de accesoyencriptación.

Servicios del sistema operativo

Estosserviciossonfundamentalesparagarantizarque un sistema operativo cumpla con sus funciones principalesdemaneraeficiente,segurayestable.

Diseño e Implementación de Sistemas

Operativos

El diseño e implementación de un sistema operativo esunprocesocomplejoqueinvolucralaconsideración de múltiples factores para garantizar que el sistema sea eficiente, seguro, confiable y adaptable a diferentesentornosynecesidades.Acontinuación,se desglosan los principales aspectos y consideraciones enesteproceso.

1. Objetivos del Diseño de Sistemas

Operativos

El diseño de un sistema operativo debe alcanzar varios objetivos fundamentales:

◼ Eficiencia: Maximizar el rendimiento del sistema utilizando de manera óptima los recursos disponibles, como CPU, memoria y dispositivos de E/S.

◼ Fiabilidad y Estabilidad: Garantizar que el sistema funcione de manera consistente y pueda recuperarse de errores o fallos sin pérdida significativa de datos o funcionalidad.

◼ Seguridad y Protección: Proteger los datos y recursos del sistema contra accesos no autorizados y amenazas externas.

1. Objetivos del Diseño de Sistemas Operativos

◼ Flexibilidad y Portabilidad: Facilitar la adaptación del sistema operativo a diferentes arquitecturas de hardware y permitir la incorporación de nuevas funcionalidades con facilidad.

◼ Facilidad de Uso: Proporcionar interfaces intuitivas y amigables para los usuarios y desarrolladores.

◼ Mantenibilidad y Escalabilidad: Asegurar que el sistema pueda ser mantenido y mejorado con el tiempo, y que pueda escalar para manejar cargas de trabajo crecientes.

2. Estructuras de Sistemas Operativos

La estructura del sistema operativo define cómo se organizan sus componentes internos y cómo interactúan entre sí. Las estructuras más comunes incluyen:

Núcleo Monolítico (Monolithic Kernel):

Descripción: Todo el sistema operativo se implementa en un solo bloque de código ejecutado en modo kernel. Todos los servicios (gestión de memoria, gestión de procesos, controladores de dispositivos, etc.) se ejecutan en el espacio del kernel.

◼ Ventajas:

▪ Rendimiento Alto: La comunicación interna es rápida debido a la ausencia de capas adicionales.

▪ Implementación Sencilla: Estructura directa y relativamente fácil de entender.

◼ Desventajas:

▪ Mantenibilidad Baja: Dificultad para depurar y mantener debido al tamaño y complejidad del código.

▪ Seguridad y Fiabilidad Menor: Un fallo en un componente puede afectar a todo el sistema.

Microkernel

Descripción: Solo las funciones esenciales (como la comunicación entre procesos y la gestión básica de memoria) se ejecutan en modo kernel. Otros servicios se ejecutan en espacio de usuario como procesos separados.

◼ Ventajas:

▪ Fiabilidad Mejorada: Los fallos en servicios no esenciales no afectan al núcleo del sistema.

▪ Mantenibilidad Alta: Es más fácil agregar, eliminar o actualizar servicios.

▪ Seguridad Mejorada: La separación de servicios reduce la superficie de ataque.

◼ Desventajas:

▪ Rendimiento Inferior: La comunicación entre servicios puede ser más lenta debido al paso de mensajes entre procesos.

▪ Ejemplos: Minix, QNX, el diseño original de Mach.

Sistemas en Capas

Descripción: El sistema operativo se divide en capas jerárquicas, donde cada capa utiliza los servicios de la capa inferior y proporciona servicios a la capa superior.

◼ Ventajas:

▪ Modularidad: Facilita la comprensión y el mantenimiento del sistema.

▪ Aislamiento: Problemas en una capa no afectan directamente a otras.

◼ Desventajas:

▪ Rendimiento: La comunicación a través de múltiples capas puede ser menos eficiente.

▪ Diseño Complejo: Definir y mantener límites claros entre capas puede ser difícil.

▪ Ejemplos:THE system de Dijkstra.

Modelos Modulares

Descripción: El sistema operativo se compone de módulos independientesquepuedensercargadosydescargadossegúnsea necesario.

◼ Ventajas:

▪ Flexibilidad: Fácil de extender y adaptar a diferentes necesidades.

▪ Mantenibilidad: Módulos independientes facilitan la localizaciónycorreccióndeerrores.

◼ Desventajas:

▪ Complejidad de Gestión: Requiere mecanismos eficientes paralagestióndemódulos.

▪ Ejemplos: Sistemas modernos como Linux utilizan un enfoquemodular.

3. Consideraciones de Implementación

La implementación efectiva de un sistema operativo requiere atención a varios aspectos técnicos y prácticos.

a. Lenguajes de Programación:

◼ C y C++: Son los lenguajes más comúnmente utilizados debido a su eficiencia y control de bajo nivel sobre el hardware.

◼ Assembly: Utilizado para interacciones directas y específicas con el hardware donde se requiere un control máximo y rendimiento óptimo.

◼ Otros Lenguajes: Lenguajes de alto nivel pueden utilizarse para componentes menos críticos en términos de rendimiento o para propósitos específicos (e.g., scripting).

3. Consideraciones de Implementación

b. Modo Kernel vs. Modo Usuario:

◼ Modo Kernel:

▪ Descripción: Tiene acceso completo al hardware y puede ejecutar cualquier instrucción de la CPU.

▪ Uso: Servicios críticos del sistema operativo que requieren acceso directo al hardware.

◼ Modo Usuario:

▪ Descripción: Acceso restringido, no puede ejecutar instrucciones privilegiadas ni acceder directamente al hardware.

▪ Uso: Aplicaciones y procesos de usuario, y en algunos diseños, ciertos servicios del sistema operativo.

3. Consideraciones de Implementación

c. Llamadas al Sistema (System Calls):

◼ Descripción: Mecanismos que permiten a los programas de usuario solicitar servicios del sistema operativo.

◼ Características:

▪ Interfaz Estándarizada: Proporciona una forma consistente de acceder a los servicios del SO.

▪ Seguridad y Control: El SO valida y controla las solicitudes para mantener la estabilidad y seguridad del sistema.

◼ Ejemplos de Llamadas al Sistema:

▪ Gestión de Archivos: open(), read(), write(), close().

▪ Gestión de Procesos: fork(), exec(), exit().

▪ Comunicación: pipe(), socket(), shared memory.

3. Consideraciones de Implementación

d. Gestión de Memoria:

◼ Asignación de Memoria:

▪ Paginación: Divide la memoria en bloques de tamaño fijo (páginas) para una gestión más eficiente.

▪ Segmentación: Divide la memoria en segmentos de tamaño variable según la lógica del programa.

◼ Memoria Virtual:

▪ Descripción: Permite que los programas utilicen más memoria de la que está físicamente disponible mediante el uso de almacenamiento secundario (swap).

▪ Beneficios: Mejora la utilización de la memoria y permite ejecutar programas más grandes.

◼ Protección de Memoria:

▪ Descripción: Asegura que los procesos no interfieran con la memoria de otros procesos o del SO.

▪ Mecanismos: Uso de tablas de páginas con permisos de acceso, ejecución en modo usuario/kernel.

3. Consideraciones de Implementación

e. Gestión de Procesos y Hilos:

◼ Planificación de la CPU:

▪ Algoritmos de Planificación: FIFO, Round Robin, Shortest Job First, Multilevel Queue, etc.

▪ Objetivos: Maximizar el rendimiento, minimizar la latencia, asegurar equidad entre procesos.

◼ Sincronización:

▪ Problemas Clásicos: Productor-Consumidor, Lectores-Escritores, Cena de los Filósofos.

▪ Mecanismos: Semáforos, Monitores, Locks, Variables de Condición.

◼ Comunicación entre Procesos (IPC):

▪ Mecanismos: Pipes, Sockets, Shared Memory, Message Queues.

3. Consideraciones de Implementación

f. Gestión de Dispositivos de Entrada/Salida:

◼ Controladores de Dispositivos:

▪ Descripción: Software que permite al SO comunicarse y controlar dispositivos de hardware específicos.

◼ Buffering y Caching:

▪ Buffering: Almacenamiento temporal de datos durante operaciones de E/S para manejar diferencias de velocidad.

▪ Caching: Almacenamiento de copias de datos frecuentemente utilizados para acelerar el acceso.

◼ Programación de E/S:

▪ Polling: El SO verifica periódicamente el estado del dispositivo.

▪ Interrupciones: El dispositivo notifica al SO cuando requiere atención.

▪ DMA (Acceso Directo a Memoria): Permite que los dispositivos transfieran datos directamente a la memoria sin intervención de la CPU.

3. Consideraciones de Implementación

g. Seguridad y Protección:

◼ Autenticación y Autorización:

▪ Mecanismos: Contraseñas, tokens, biometría, listas de control de acceso.

◼ Encriptación:

▪ Uso: Protección de datos en almacenamiento y durante la comunicación.

◼ Políticas de Seguridad:

▪ Modelos: Discrecional (DAC), Obligatorio (MAC), Basado en Roles (RBAC).

◼ Detección y Prevención de Intrusiones:

▪ Herramientas: Firewalls, sistemas de detección de intrusos (IDS), antivirus.

4. Proceso de Desarrollo del Sistema

Operativo

El desarrollo de un sistema operativo sigue generalmente las siguientes etapas:

◼ a. Especificación de Requisitos:

▪ Análisis de Necesidades: Identificar las funciones y características que el SO debe proporcionar.

▪ Objetivos de Rendimiento y Seguridad: Definir métricas y estándares que el SO debe cumplir.

◼ b. Diseño Arquitectónico:

▪ Selección de Estructura: Decidir entre núcleos monolíticos, microkernels, modulares, etc.

▪ Definición de Interfaces: Establecer cómo interactuarán los diferentes componentes y módulos.

◼ c. Implementación y Codificación:

▪ Desarrollo de Componentes: Escribir y probar individualmente los diferentes módulos del SO.

▪ Integración: Combinar los módulos y probar la interacción entre ellos.

4. Proceso de Desarrollo del Sistema

Operativo

◼ d. Pruebas y Depuración:

▪ Pruebas Unitarias: Verificar la funcionalidad de componentes individuales.

▪ Pruebas de Integración: Asegurar que los componentes funcionan correctamente juntos.

▪ Pruebas de Estrés y Rendimiento: Evaluar cómo el SO maneja cargas intensivas y condiciones extremas.

▪ Depuración: Identificar y corregir errores y fallos detectados durante las pruebas.

◼ e. Mantenimiento y Actualizaciones:

▪ Corrección de Errores: Resolver problemas reportados por los usuarios o detectados durante el uso.

▪ Mejoras y Nuevas Funcionalidades: Agregar nuevas características para mejorar el SO.

▪ Actualizaciones de Seguridad: Implementar parches y medidas para proteger contra nuevas amenazas.

5. Ejemplos de Sistemas Operativos y sus Diseños

◼ UNIX:

▪ Diseño: Núcleo monolítico con una estructura modular interna.

▪ Características: Simplicidad, portabilidad, multitarea, multiusuario.

◼ Linux:

▪ Diseño: Núcleo monolítico modular, permite cargar y descargar módulos en tiempo de ejecución.

▪ Características: Código abierto, altamente configurable, soporte amplio de hardware.

◼ Windows NT y posteriores:

▪ Diseño: Arquitectura híbrida combinando elementos de microkernel y núcleo monolítico.

▪ Características: Compatibilidad amplia, interfaz gráfica avanzada, soporte empresarial.

◼ Minix:

▪ Diseño: Microkernel, utilizado con fines educativos y conocido por inspirar el desarrollo de Linux.

▪ Características: Simplicidad, fiabilidad, facilidad de comprensión.

5. Ejemplos de Sistemas Operativos y sus Diseños

Conclusión:

El diseño e implementación de sistemas operativos es una disciplinaquecombinaprincipiosteóricosconconsideraciones prácticas para crear sistemas que satisfacen las necesidades de usuarios y aplicaciones. Involucra decisiones críticas sobre arquitectura,gestiónderecursos,seguridadyrendimiento.

Comprender estos conceptos es esencial para cualquier profesional o estudiante interesado en el funcionamiento interno de los sistemas computacionales y en cómo proporcionar una base sólida para el software que usamos diariamente.

¡ GRACIAS !

Referencias

◼Tanenbaum, A. S. (2003). Sistemas operativos modernos. PearsonEducación.

◼Silberschatz, A., Galvin, P. B., & Gagne, G. (2006). Fundamentosdesistemasoperativos.McGrawHill.

◼https://jsgiraldoh.io/

Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.