Professional Documents
Culture Documents
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
Mark Weiser
http://www.ubiq.com/hypertext/weiser/UbiHome.html
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
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
acitmrofnI .gnI 5 - sOS ed oesiD
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
acitmrofnI .gnI 5 - sOS ed oesiD
! ! ! ! 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
01
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?
21
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.
31
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
41
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
51
61
71
81
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
91
02
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
12
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.
32
Arquitectura microkernel
Aplicacin Sistema de archivos Manejador de dispositivo -kernel Aplicacin Protocolos Manejador de dispositivo Modo privilegiado
52
Comentario: Esto es verdadero para la primera generacin de sistemas, como son: Mach (CMU, OSF) Chorus (INRIA, Sun) Amoeba (Vrije Universiteit) L3 (GMD)
62
72
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)
82
write_file(nombre, reg)
Manejador de disco Sistema de archivos
get_disk_block()
Hardware
92
03
13
23
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
43
63
Arquitectura de Linux
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.
73
83
Componente: Planificador
93
Componente: Memoria
04
14
Componente: IPC
24
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.
acitmrofnI .gnI 5 - sOS ed oesiD
34
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
54
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);}
74
Enlazado de un mdulo
84
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.
94
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.
15
System Processes
Services
Interface DLL
User Apps
Subsystem DLL
Environment Subsystems
Object Management
Kernel
Registry
25
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.
65
User Apps
Subsystem DLL
2
OS/2 Win32
POSIX
User Kernel
Executive
Device Kernel Drivers Hardware Abstraction Layer (HAL)
Win32 User/GDI
75
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
95
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.
06
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
16
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
26
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)
36
Call WriteFile() Call NtWriteFile Return alto caller Return llamador Int 2E Return alto caller Return llamador
Especfica Win32
Usuario Kernel
Call NtWriteFile Retorna interrupcin Dismiss interrupt Realiza la operacin Do the operation Return alto caller Return llamador
NtWriteFile en NtosKrnl.exe
46
66
76
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).
96
HURD: arquitectura
Aplicacin Servidores Hurd
Autentificacin Red
GNUMach Hebras de tareas MMU Mensajes OSKit Manejador dispositivos Hardware Manejador dispositivos
07
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,
17
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/
27
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
Trabajos actuales
Despus de los microkernels han surgido los sistemas exokernels, nanokernels, Sistemas operativos orientados a componentes. Sistemas operativos orientados a aspectos.
47