Arquitectura de Sistemas Operativos
Arquitectura de Sistemas Operativos
Introduccin
Esta muerta la investigacin sobre SOs? Motivos para la investigacin Cambios tecnolgicos Avances en software Problemas Repaso de arquitecturas de SOs: Arquitectura Monoltica Arquitectura Microkernel
Diseo de SOs - 5 Ing. Informtica
2
Mark Weiser
http://www.ubiq.com/hypertext/weiser/UbiHome.html
Diseo de SOs - 5 Ing. Informtica
4
Cambios tecnolgicos
CPUs muy rpidas, grandes memorias, redes de banda ancha Movilidad, inalmbricas, pticas, fuentes de alimentacin/baterias, tamao Paralelismo, buses, compiladores Dispositivos de E/S, pantallas planas, sonido, video, voz Computacin Bio/Molecular/Cuntica/Optica Sistemas empotrados: nanotecnologa, exploracin espacial, vehculos, medicina
Diseo de SOs - 5 Ing. Informtica
5
Apertos Choices Globe Millenium Off+ Clouds JavaOS Spring OGI OMG CORBA
DCOM DCE Agentes mviles WWW RMI Cool Town Endeavor Oxygen
Problemas
Exokernel
Uso de un grupo de mquinas Gestin de grupos de mquinas MACH Escalabilidad Migracin de tareas y funciones Actualizacin de software Portabilidad Movilidad Seguridad
UNIX SPIN
Diseo de SOs - 5 Ing. Informtica
Enfoque
Re-evaluar los modelos existentes de SOs Cuestionar suposiciones Visita guiada para el cambio Utilizar la imaginacin atemperada con una preocupacin prctica Mirar 10 aos hacia delante
Temas de Investigacin
Seguridad dinmica Sistemas distribuidos Muchos computadores por persona
Diseo de SOs - 5 Ing. Informtica
! ! ! ! Encriptado / Capacidades Software Autentificacin / Certificados Deteccin de intrusiones Polticas dinmicas, redes activas
! Objeto Bus integra DCOM,OMG,RMi,Jini, .. ! Objetos distribuidos brokers, trader, ! Middleware, personalizacin, especializacin ! Fiabilidad (reliabilty)
! Radio, buses corporales, computadores chip, potencia ! Temas: Mantener el entorno en dispositivos personales; Proteccin, fiabilidad, seguridad ! Configuracin sencilla, control de versiones, mantenimiento de licencias, tiempo de vida de los datos ! Negociacin y colaboracin
10
Enfoque ( y ii)
Hacer las aplicaciones centradas en la red a travs de middelware personalizable y re-organizable. Aadir mecanismos de ligadura para identificar entidades de red.
11
En clase
Veremos la investigacin en SO de los ltimos aos. Examinaremos en impacto de nuevas ideas sobre futuros sistemas operativos Evaluaremos algunos ejemplos reales Buscaremos nuevas soluciones?
12
Objetivos del SO
Conveniencia: Debe facilitar la labor de programacin de aplicaciones Abstraccin: Esconder los detalles del hardware Presentar una interfaz uniforme para diferentes dispositivos Generalidad Cambiar en las caractersticas de una aplicacin no debe suponer su rediseo Extensibilidad: Debe permitir el desarrollo, prueba e introduccin de nueva funcionalidad sin interferir el servicio actual.
Diseo de SOs - 5 Ing. Informtica
13
Objetivos (y ii)
Escalabilidad: El sistema debe ser capaz de enfrentarse en todo momento a condiciones de carga crecientes Eficiencia: Hacer buen uso de los recursos y ser rpido Robustez: No averas del sistema debidas a aplicaciones maliciosas o errneas Proteccin: Debe suministrar imparcialidad, y seguridad
Diseo de SOs - 5 Ing. Informtica
14
Arquitectura
Instead of getting serious about Linux, get serious about architecture Its not about the component technology and not about the processor or the operating system. Its about architecture that delivers the benefits and the technology that enables the architecture Michael Tiemann
CTO of Red Hat
15
16
17
18
Componentes
Aplicacin: por ejemplo, simulacin de trfico, prediccin meteorolgica, edicin de textos, etc. Subsistemas con tareas especficas: Control ejemplo, shell Proteccin ej. Firewall Contabilidad ej. Vigilancia Servicio ej. Servidor de archivos Soporte ej. Manejador de disco Funciones bsicas: ej. sincronizacin
Diseo de SOs - 5 Ing. Informtica
19
20
Estructura de sistemas
Cmo implementamos un componentes? Podemos imponer alguna ordenacin dentro de la estructura del sistema?
Capa 1 Capa 2
Capa 3
Manejador de disco
21
22
Arquitectura monoltica
Aplicacin
Llamada al sistema
La mayora de servicios dentro del kernel (modo privilegiado) ! Proteccin del kernel frente a las aplicaciones, y las aplicaciones entre si. Componentes del kernel no protegidos Las aplicaciones deben confiar en el kernel.
Diseo de SOs - 5 Ing. Informtica
23
Arquitectura microkernel
Aplicacin Sistema de archivos Manejador de dispositivo -kernel Aplicacin Protocolos Manejador de dispositivo Modo privilegiado
25
Comentario: Esto es verdadero para la primera generacin de sistemas, como son: Mach (CMU, OSF) Chorus (INRIA, Sun) Amoeba (Vrije Universiteit) L3 (GMD)
Diseo de SOs - 5 Ing. Informtica
26
27
write_file(nombre, reg)
Sistema de archivos
get_disk_block()
Manejador de disco
1 llamada al sistema (incluido la entrada y salida del modo kernel) 1 llamada al procedimiento (call + return)
28
write_file(nombre, reg)
Manejador de disco Sistema de archivos
get_disk_block()
Hardware
30
32
Conclusin
No existe un nico sistema que sea ideal para todos los propsitos. Necesitamos sistemas que se puedan adaptar de diferentes formas. Necesitamos sistemas extensibles!.
33
34
Arquitectura de Linux
36
Arquitectura concreta
La arquitectura concreta hace referencia a como esta construido el sistema. Sirve como especificacin para que los desarrolladores extiendan o modifiquen el cdigo fuente actual.
37
Componente: Planificador
38
Componente: Memoria
39
40
Componente: IPC
41
42
Extensiones
Dos forma: Extendiendo del cdigo: los desarrolladores implementan, modifican la funcionalidad del kernel modificando, aadiendo, nuevo cdigo. Problemas: el tamao del cdigo y sus dependencias. Ver siguiente transparencia. Mdulos de carga dinmica podemos enlazar un mdulo en tiempo de ejecucin junto con el resto del cdigo del kernel.
Diseo de SOs - 5 Ing. Informtica
43
44
Mdulos
El planificador de procesos tambin suministra soporte para la carga dinmica de mdulos (cada mdulo representa funcionalidad kernel que puede ser cargada despus de que el kernel inicie su ejecucin). Esta funcionalidad se utiliza para: Implementar manejadores de dispositivos, La abstraccin de interfaces que utilizan el sistema virtual de archivos y la interfaz de red, .. Para aadir nuestra propia funcionalidad
Diseo de SOs - 5 Ing. Informtica
45
Un ejemplo de mdulo
Un versin del Hola Mundo
#define MODULE #include <linux/module.h> int init_module(void) {printk(<1>Hola, Mundo\n);return 0;} void cleanup_module(void) {printk(<1>Adios mundo cruel\n);}
46
Enlazado de un mdulo
47
Anlisis final
Rendimiento: bueno Debemos prestar atencin al IPC en ejecucin. Hay pocas capas-> pocas traducciones y conversiones. Modificabilidad: mala un cambio en el kernel puede afectar a todos los componentes. Reusabilidad: mala sistema de archivos y red fuertemente acoplados e integrados al kernel. Portabilidad: buena unos pocos componentes confinan el manejo de dispositivos. Integrabilidad: buena el kernel puede soportar diferentes sistemas de archivos y dispositivos.
Diseo de SOs - 5 Ing. Informtica
49
Introduccin
En la primera parte del tema hemos visto la estructura general de un sistema microkernel, ahora describiremos dos implementacin concretas: Windows 2000, XP, etc. veremos la arquitectura interna y el funcionamiento de los componentes de ncleo, y el papel de los subsistemas y su funcionamiento. Hurd veremos su estructura interna.
51
System Processes
Services
Interface DLL
User Apps
Subsystem DLL
Environment Subsystems
Object Management
Kernel
Registry
52
Subsistemas de entorno
Tres subsistemas: OS/2, Posix, y Win32. Suministra la interfaz documentada entre las aplicaciones y la API nativa de 2000. Cada subsistema define una API. Los ejecutables estn ligados a un nico subsistema. Las aplicaciones de usuario no invocan directamente los servicios de Windows lo hacen va subsistemas DLL.
56
User Apps
Subsystem DLL
2
OS/2 Win32
POSIX
User Kernel
Executive
Device Kernel Drivers Hardware Abstraction Layer (HAL)
Win32 User/GDI
57
Subsistema Win32
Implementado en el proceso CSRSS.EXE (subsistema cliente/servidor): Soporta ventanas consola (texto) Crea y destruye procesos y hebras Win32 El manejador en modo kernel WIN32K.SYS contiene: Gestor de ventanas Entrada de teclado/ratn, salida pantalla, .. Interfaz de Dispositivo Grfico (GDI) Los subsistemas DLLs proyectan las funciones de la API Win32 sobre llamadas de servicio al sistema en modo kernel USER32.DLL, KERNEL32.GDI -> NTOSKRNL
59
Subsistema POSIX
Portable Operating System Interface based on Unix Incluido para satisfacer los requistos del Gobierno de EEUU. Windows 2000 implementa POSIX 1003.1 Suministra un conjunto limitado de servicios: No se pueden crear hebras, ventanas o utilizar sockets. Los ejecutables se enlazan con la biblioteca del subsistema POSIX (Psxdll.dll) Las bibliotecas comerciales Unix-a-Win32 son una mejor solucin para portar aplicaciones.
Diseo de SOs - 5 Ing. Informtica
60
Invocacin de un subsistema
Environment Subsystems
System & Service Processes
User Apps
Subsystem DLL
OS/2
Win32
POSIX
1
User Kernel
NtDll.dll
Executive
Device Kernel Drivers Hardware Abstraction Layer (HAL)
Win32 User/GDI
1 2 3
La mayora de APIs kernel Win32 La mayora de APis Win32 User/GDI Unas pocas APIs Win32
61
Cabeceras de imgenes
Subsistemas especificados en las cabeceras de las imagenes .exe:
IMAGE_SUBSYSTEM_UNKNOWN IMAGE_SUBSYSTEM_NATIVE IMAGE_SUBSYSTEM_WINDOWS_GUI IMAGE_SUBSYSTEM_WINDOWS_CUI IMAGE_SUBSYSTEM_OS2_CUI IMAGE_SUBSYSTEM_POSIX_CUI 0 1 2 3 5 7 Subsitema desconocido No necesita imagen Win32 sub.(app grfica) Win32 sub.(app caracter) Subsistema OS/2 Subsistema POSIX
62
Imgenes nativas
.EXE no enlazados contra ningn subsistema Interfaz directa con el el Ejecutivo via NTDLL.DLL Dos ejemplos: Smss.exe (Session Manager) Csrss.exe (Win32 subsystem)
63
Call WriteFile() Call NtWriteFile Return Return alto llamador caller Int 2E Return Return alto llamador caller
Especfica Win32
Usuario Kernel
Call NtWriteFile Retorna Dismiss interrupcin interrupt Realiza Do the la operation operacin Return Return alto llamador caller
NtWriteFile en NtosKrnl.exe
64
66
67
Hurd es un SO multiservidor compatible POSIX que se ejecurta sobre Mach. Proyecto para disponer de un SO libre desarrollado integramente por GNU para sustituir a Unix: http://hurd.gnu.org Esta basado en el microkernel de Mach .Si bien se esta trabajando en su construccin sobre L4 (www.nongnu.org/l4hurd/). Debian GNU/Hurd versin binaria de Hurd ms fcil de instalar ( www.debian.org/ports/hurd).
Diseo de SOs - 5 Ing. Informtica
69
HURD: arquitectura
Aplicacin Servidores Hurd
Autentificacin Red
GNUMach Hebras de tareas MMU Mensajes OSKit Manejador dispositivos Hardware Manejador dispositivos
70
Servidores Hurd
La funcionalidad suministrada por Hurd corre a cabo de un conjunto de servidores: Cada servidor ejecuta una labor concreta. Una funcin realizada por varios servidores. Podemos sustituir los servidores dinmicamente un usuario normal puede instalar y construir sus propios servidores (existen algunas bibliotecas de apoyo) Ejemplos: auth, exec, ext2fs, fifo, mouse, proc, streamio, symlink, term, tmpfs, ufs, usermux,
Diseo de SOs - 5 Ing. Informtica
71
OSKit
Es un marco y un conjunto de 34 bibliotecas de componentes orientadas a la construccin de SO. OSKit permite ms fcilmente crear un SO, transportar un SO a un x86, o mejorar el soporte de un SO para un amplio rango de dispositivos, sistemas de archivos, formatos ejecutables, y servicios de red. http://www.cs.utah.edu/flux/oskit/
72
Mach
Suministra las abstracciones: Tarea y hebra Puerto o grupo de puertos Mensaje Objeto memoria
Biblioteca de emulacin archivo fd Hebras de dispositivos Paginador inodos Servidor Unix multihebrado Hebras de servicio
Aplicacin
73
Trabajos actuales
Despus de los microkernels han surgido los sistemas exokernels, nanokernels, Sistemas operativos orientados a componentes. Sistemas operativos orientados a aspectos.
74