Estructura Sistemas Operativos

42,160 views

Published on

Estructura de Sistemas Operativos

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
42,160
On SlideShare
0
From Embeds
0
Number of Embeds
1,056
Actions
Shares
0
Downloads
952
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Estructura Sistemas Operativos

  1. 1. Estructuras en SOs Cecilia Hernández 2007-1
  2. 2. Objetivos SO <ul><li>Definir capa de software cuyos componentes maximicen: </li></ul><ul><ul><li>Confiabilidad </li></ul></ul><ul><ul><li>Seguridad </li></ul></ul><ul><ul><li>Extensibilidad </li></ul></ul><ul><ul><li>Desempeño </li></ul></ul>
  3. 3. Por qué es difícil escribir un SO <ul><li>Complejidad </li></ul><ul><ul><li>Millones de líneas de código </li></ul></ul><ul><ul><li>Miles de desarrolladores y probadores </li></ul></ul><ul><li>Ambiente de programación delicado </li></ul><ul><ul><li>Se ejecuta sobre HW </li></ul></ul><ul><ul><li>Un error puede hacer que sistema se caiga dejando todos los usuarios sin servicio </li></ul></ul><ul><li>Concurrencia e interrupciones </li></ul><ul><li>Restricciones de compatibilidad con versiones previas </li></ul>
  4. 4. Componentes más importantes del SO <ul><li>Procesos </li></ul><ul><ul><li>Manejo de colas de estados, planificación, protección, comunicación y sincronización </li></ul></ul><ul><li>Memoria </li></ul><ul><ul><li>Manejo VM por proceso, protección </li></ul></ul><ul><li>Almacenamiento secundario </li></ul><ul><ul><li>Usado por Sistema de archivos y memoria virtual </li></ul></ul><ul><ul><li>Información persistente, comunicación con controlador de disco, protección </li></ul></ul><ul><li>E/S </li></ul><ul><ul><li>Incluyendo redes </li></ul></ul><ul><li>Autentificación </li></ul><ul><li>Intérprete de comandos </li></ul><ul><li>Auditoria de uso de recursos de sistema </li></ul><ul><ul><li>Tiempo, memoria, disco </li></ul></ul>
  5. 5. Estructura de SOs <ul><li>No siempre claro como interactúan todos los módulos del SO </li></ul>Administración De Memoria E/S Adm Almacenamiento secundario Sist Archivos Protección Auditoria Adm Procesos Interprete de Comandos Servicios de informacion Manejo de errores
  6. 6. Enfoque más simple-Monolítico <ul><li>Una biblioteca grande </li></ul><ul><li>Cualquier función puede llamar a cualquier otra </li></ul>Funcionalidad SO Programas usuario HW SO
  7. 7. Diseño monolítico <ul><li>Ventaja </li></ul><ul><ul><li>Comunicación entre módulos mediante llamadas a procedimientos </li></ul></ul><ul><ul><ul><li>Barato en tiempo, interfaz simple y homogénea </li></ul></ul></ul><ul><li>Desventajas </li></ul><ul><ul><li>Cuando sistema crece se hace </li></ul></ul><ul><ul><ul><li>Difícil de entender </li></ul></ul></ul><ul><ul><ul><li>Difícil de modificar </li></ul></ul></ul><ul><ul><ul><li>Difícil de mantener </li></ul></ul></ul><ul><ul><li>Baja confiabilidad </li></ul></ul><ul><ul><ul><li>No exite aislación entre componentes </li></ul></ul></ul><ul><li>Alternativas? </li></ul><ul><ul><li>Encontrar manera de estructurar componentes para simplicar su diseño, implementación y mantención </li></ul></ul>
  8. 8. Estructura por niveles <ul><li>Idea: Diseñar e implementar SO mediante un conjunto de niveles </li></ul><ul><li>Primer sistema de este tipo propuesto por DIJKSTRA con el sistem THE (1968) </li></ul><ul><ul><li>Nivel 5: Adminitrador de tareas </li></ul></ul><ul><ul><ul><li>Ejecuta programas de usuarios </li></ul></ul></ul><ul><ul><li>Nivel 4: Manejadores de dispositivos </li></ul></ul><ul><ul><ul><li>Maneja dispositivos y proporciona buffers </li></ul></ul></ul><ul><ul><li>Nivel 3: Consola </li></ul></ul><ul><ul><ul><li>Implementa consolas virtuales </li></ul></ul></ul><ul><ul><li>Nivel 2: Administrador de Páginas </li></ul></ul><ul><ul><ul><li>Implementa memoria virtual para cada proceso </li></ul></ul></ul><ul><ul><li>Nivel 1: kernel </li></ul></ul><ul><ul><ul><li>Implementa un procesador virtual para cada proceso </li></ul></ul></ul><ul><ul><li>Nivel 0: hardware </li></ul></ul><ul><li>Cada nivel puede ser probado y verificado independientemente </li></ul>
  9. 9. Desventajas estructura por niveles <ul><li>Estructura jerárquica es demasiado inflexible </li></ul><ul><ul><li>Sistemas reales tienen ciclos de uso </li></ul></ul><ul><ul><ul><li>Sistema de archivos requiere servicios de memoria virtual </li></ul></ul></ul><ul><ul><li>Memoria virtual puede usar archivos para respaldos en discos </li></ul></ul><ul><li>Bajo desempeño </li></ul><ul><ul><li>Cada cruce entre niveles involucra una sobrecarga (overhead) </li></ul></ul>
  10. 10. Usos <ul><li>En cierto grado se pueden definir algunos niveles </li></ul><ul><li>Un ejemplo en sistemas modernos </li></ul><ul><ul><li>Separar rutinas específicas del HW del núcleo del SO </li></ul></ul><ul><ul><ul><li>Proporciona portabilidad </li></ul></ul></ul><ul><ul><ul><li>Mejora entendimiento de sistema por la abstracción en cada nivel </li></ul></ul></ul>Núcleo SO (sistema archivos, planificador, Llamadas a sistema) Abstracción HW Nivel (manejadores disp, Rutinas en assembly )
  11. 11. Microkernels <ul><li>Filosofía </li></ul><ul><ul><li>Jerarquía estricta no es buena </li></ul></ul><ul><ul><li>Modularidad es buena </li></ul></ul><ul><li>Diseño </li></ul><ul><ul><li>Minimizar que va en el kernel </li></ul></ul><ul><ul><li>Organizar el resto del SO como procesos de nivel usuario </li></ul></ul><ul><ul><ul><li>Ejemplo, Sist de Archivos como un servidor </li></ul></ul></ul><ul><ul><li>Procesos se comunican mediante pasos de mensajes </li></ul></ul><ul><ul><ul><li>Como en un sistema distribuido </li></ul></ul></ul><ul><li>Ejemplos </li></ul><ul><ul><li>Hydra (1970s) </li></ul></ul><ul><ul><li>Mach (1985-1994) </li></ul></ul>
  12. 12. Ilustración SO Microkernel Hardware microkernel Procesos de sistema Procesos usuarios Memoria virtual Comunicación protección Control CPU Sistema de archivos hebras red planificador Paginación Firefox powerpoint apache Modo usuario kernel
  13. 13. Ventajas/desventajas microkernels <ul><li>Ventajas </li></ul><ul><ul><li>Simplicidad </li></ul></ul><ul><ul><ul><li>Kernel pequeño </li></ul></ul></ul><ul><ul><li>Extensibilidad </li></ul></ul><ul><ul><ul><li>Se puede agregar nueva funcionalidad en modo usuario </li></ul></ul></ul><ul><ul><li>Confiabilidad </li></ul></ul><ul><ul><ul><li>Servicios SO aislados en modo usuario </li></ul></ul></ul><ul><li>Desventajas </li></ul><ul><ul><li>Bajo desempeño </li></ul></ul><ul><ul><ul><li>Comunicación mediante mensajes no tan bueno como llamadas a sistema </li></ul></ul></ul>
  14. 14. Estado del arte: Modulos kernel <ul><li>Idea básica: usuarios pueden proporcionar módulos, los cuales se ejecutan directamente en el espacio de dirección del kernel. </li></ul><ul><li>También llamados Loadable Kernel Modules (LKM) </li></ul><ul><ul><li>Son cargados después que kernel base está en ejecución </li></ul></ul><ul><li>Ventajas </li></ul><ul><ul><li>Buen desempeño </li></ul></ul><ul><ul><li>Provee extensibilidad a SO </li></ul></ul><ul><li>Un módulo interesante accesible en linux 2.6.20 </li></ul><ul><ul><li>KVM (Kernel-based VM for linux) kvm.ko </li></ul></ul><ul><ul><ul><li>Funciona en arquitecturas que soportan virtualización </li></ul></ul></ul><ul><ul><ul><li>(Intel Dual Core es una de ellas) ref http://www.linux-watch.com/news/NS5168864143.html </li></ul></ul></ul><ul><ul><ul><li>Usuarios pueden ejecutar múltiples máquinas virtuales ejecutando linux o Windows. Cada máquina virtual tiene su propio hw virtualizado </li></ul></ul></ul><ul><li>Desventajas </li></ul><ul><ul><li>Módulos pueden comprometer seguridad y confiabilidad </li></ul></ul><ul><ul><ul><li>Manejadores de dispositivo causan el 85% de las caidas en Windows 2000 </li></ul></ul></ul>

×