3560598 Diseno y Simulacion de Sistemas Operativos

Embed Size (px)

Citation preview

ESTUDIOS CON RECONOCIMIENTO DE VALIDEZ OFICIAL NUMERO 00922681 DE FECHA 23 DE JUNIO DE 1992

DISEO Y SIMULACIN DE SISTEMAS OPERATIVOS

TESISQUE PARA OBTENER EL GRADO DE MAESTRIA EN CIENCIAS DE LA COMPUTACIN PRESENTA: EUGENIO JACOBO HERNNDEZ VALDELAMAR

ASESOR: ENRIQUE CALDERN ALZATI

MXICO, D.F.

AGOSTO, 2003

Diseo y simulacin de sistemas operativos Eugenio Jacobo Hernndez Valdelamar

DISEO Y SIMULACIN DE SISTEMAS OPERATIVOS EUGENIO JACOBO HERNNDEZ VALDELAMAR

http://creativecommons.org/licenses/by-nc-nd/2.5/mx/legalcode

Cualquier comentario o sugerencia es bien recibido en [email protected]

2

Diseo y simulacin de sistemas operativos Eugenio Jacobo Hernndez Valdelamar

Contemplando una idea. Vladimir Islas Valdelamar

i

Diseo y simulacin de sistemas operativos Eugenio Jacobo Hernndez Valdelamar

AgradecimientosA mi familia, en especial a mi madre Guadalupe Valdelamar, a mi padre Jacobo Hernndez y a mi ta Maria Luisa por su apoyo. A mi esposa y compaera Mar Sallago por su alegra y aliento (gracias por mostrarme otras perspectivas); y a toda la familia y amigos en Argentina, en especial a Pedro, Lis y Leo por su amistad. A mis profesores: Enrique Caldern, Carlos Caldern, Miguel Orozco, Alejandro Domnguez, Miguel Leal; Marcos Caldern y Edgar Herrador (despus de todo, se superaron las dudas de ese mtico curso). A mis colegas: Jorge Vasconcelos por su ejemplo de perseverancia en la vida acadmica y sus comentarios a este trabajo; Miguel Armas por compartir muchos alucines acadmicos y a Roberto Murcio por sus comentarios a este trabajo en sus inicios. A los buenos amigos del Instituto de Qumica de la UNAM, en especial a Jaime Lagunez por abrirme la perspectiva de las consideraciones biolgicas en cuestiones de sistemas cmputo. A los alumnos de licenciatura de la FAR del curso de sistemas operativos en el periodo 2002-3 (Gonzalo, Humberto, Gerardo, Josu, Hctor, Enrique, Luis) y 2003-1 (Lizethe, Rodrigo, Oscar, Christian, J. Ignacio, Josu), por la oportunidad de poner en prctica los resultados de este trabajo y el reto de transmitirles los conocimientos de un tema complejo y apasionante. A Paco Otero, Hugo Gutirrez y a Rodrigo Herrera por su amistad. A Antonio Martinez por demostrarnos que es posible vivir la vida fuera del sistema. A la familia Morn; Alfonso Sr. y Jr., Manolo: gracias por su apoyo y amistad. Al profesor Rubn Lara por su gran labor en la enseanza del kendo. To Rachael Dunne, Oisin & friends, (thanks for the opportunity of visiting Ireland, even when I preferred to stay in Mxico; it was a great time) and Alan Armijo (thanks for offer me the opportunity of going to the US even when the odds were against the idea).

ii

Diseo y simulacin de sistemas operativos Eugenio Jacobo Hernndez Valdelamar

Resumen

Estamos en una poca donde parece que el inters por cmo funcionan las cosas o cmo hacerlas, pasa a un segundo plano a raz de estar ms ocupados utilizndolas. El software no es la excepcin. Toda aplicacin que se use tiene un proceso de desarrollo, y ms an, cuenta con un sistema que soporta su ejecucin. Estas piezas de ingeniera de software que nos hacen la vida ms amable son los sistemas operativos, y vale mencionar que sin ellos, seguramente seguiramos requiriendo de operadores de computadora sper especializados. Este trabajo es una investigacin acerca de los sistemas operativos. El objetivo es proveer una visin integral de este tipo de sistemas; desde sus antecedentes y fundamentos, hasta un anlisis de sus componentes y el establecimiento de criterios de diseo. He tratado de mantener un balance entre la teora y la prctica, incluyendo algunos proyectos de desarrollo que han arrojado como producto no solo el cdigo de los simuladores propuestos, sino la experiencia de las consideraciones involucradas en hacer un sistema operativo; experiencia que he tenido oportunidad de compartir con mis estudiantes. Adems de los temas clsicos como administracin de memoria, procesos y dispositivos, se incluye una seccin dedicada al diseo de sistemas operativos, as como una completa referencia de las arquitecturas existentes en este tipo de sistemas, y las tendencias a futuro. Este trabajo ser de utilidad para todos aquellos usuarios, administradores y desarrolladores de sistemas operativos, as como para cualquier profesional de las ciencias de la computacin.

iii

Diseo y simulacin de sistemas operativos Eugenio Jacobo Hernndez Valdelamar

iv

Diseo y simulacin de sistemas operativos Eugenio Jacobo Hernndez Valdelamar

Contenido

Introduccin ___________________________________________________________ 1 Capitulo 1.1.11.1.1 1.1.2

Fundamentos de los Sistemas Operativos _______________________ 7Definiciones ______________________________________________________________ 8 Caractersticas principales__________________________________________________ 10 Administracin de procesos _________________________________________________ 12 Administracin de memoria _________________________________________________ 13 La gestin de la integridad __________________________________________________ 13 Administracin de dispositivos ______________________________________________ 14 Almacenamiento secundario ________________________________________________ 14 Transmisin de datos e informacin __________________________________________ 15 Ncleo del sistema (Kernel)_________________________________________________ 15 Comunicacin con el usuario ________________________________________________ 16

Qu es un sistema operativo? ___________________________________________ 7

1.2

Principales conceptos de los Sistemas Operativos___________________________ 11

1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8

1.3

Desarrollo histrico de los Sistemas Operativos ____________________________ 18

1.3.1 1.3.2 1.3.3 1.3.4

En el principio...__________________________________________________________ 20 Procesamiento por lotes y monitores __________________________________________ 21 Sistemas de operacin simultanea de perifricos en lnea __________________________ 23 Sistemas de Multiprogramacin______________________________________________ 24 Sistemas de tiempo compartido (Timesharing) ____________________________________ 25 Sistemas de Tiempo Real _____________________________________________________ 27 1.3.5 Sistemas Multiprocesador, distribuidos y en red _________________________________ 28 1.3.6 Computadoras Personales __________________________________________________ 30

1.4 1.5

Comentarios _________________________________________________________ 32 Obras consultadas ____________________________________________________ 33

Capitulo 2.2.12.1.1 2.1.2 2.1.3 2.1.4

Funcionamiento bsico de un sistema operativo_________________ 35

El hardware y la ejecucin de programas _________________________________ 35La unidad central de procesamiento___________________________________________ 36 La memoria _____________________________________________________________ 38 Ejecucin de programas ____________________________________________________ 39 Interaccin entre los componentes de hardware__________________________________ 41 Tipos de interrupciones ______________________________________________________ 45

2.2

Software para el control del hardware____________________________________ 46

2.2.1

El papel del BIOS ________________________________________________________ 46 Rutinas del BIOS ___________________________________________________________ 47 Secuencia de arranque _______________________________________________________ 48 El BIOS y el sistema operativo ________________________________________________ 49 2.2.2 Cargador del sistema ______________________________________________________ 49 Carga desde un CD-ROM ____________________________________________________ 50 Carga por medio de conexin en red ____________________________________________ 51 2.2.3 Inicio de la ejecucin del sistema operativo_____________________________________ 52 2.2.4 Proteccin del hardware____________________________________________________ 54 Funcionamiento del kernel____________________________________________________ 55

2.3

Comentarios _________________________________________________________ 55

v

Diseo y simulacin de sistemas operativos Eugenio Jacobo Hernndez Valdelamar

2.4

Obras consultadas ____________________________________________________ 57

Capitulo 3.3.1 3.2

Simulacin de Hardware y Sistemas Operativos _________________ 59

La simulacin en el diseo de sistemas operativos __________________________ 60 Emulacin y Simulacin de hardware ____________________________________ 63

3.2.1

Emulacin de hardware ____________________________________________________ 63 Cmo se instrumenta un emulador? ____________________________________________ 65 3.2.2 Simulacin de hardware____________________________________________________ 65

3.3 3.4

Mquinas virtuales ____________________________________________________ 66El sistema P _____________________________________________________________ 67

3.3.1 3.4.1 3.4.2

Plataformas de simulacin de Sistemas Operativos _________________________ 68

Java Operating System Simulation ___________________________________________ 68 NachOS ________________________________________________________________ 71 La mquina Nachos _________________________________________________________ 72 3.4.3 RCOS __________________________________________________________________ 73

3.5

Simulacin de un Sistema Operativo mnimo ______________________________ 75El hardware: URM ________________________________________________________ 76 El software: SOM_________________________________________________________ 78 Consideraciones para el modelado de dispositivos de E/S__________________________ 81 Resultados ______________________________________________________________ 83 morfo-Hardware__________________________________________________________ 84

3.5.1 3.5.2 3.5.3 3.5.4 3.5.5

3.6 3.7

Comentarios _________________________________________________________ 86 Obras consultadas ____________________________________________________ 87

Capitulo 4.4.14.1.1 4.1.2

Administracin de la memoria _______________________________ 89

La memoria__________________________________________________________ 89

Asignacin de direcciones __________________________________________________ 90 La unidad de administracin de memoria (MMU)________________________________ 91 Memoria asociativa _________________________________________________________ 92 4.1.3 Manejo esttico y dinmico de la memoria _____________________________________ 93 4.1.4 Carga de programas en memoria _____________________________________________ 93 Overlays __________________________________________________________________ 94 Relocalizacin _____________________________________________________________ 95

4.2

Administracin de la memoria __________________________________________ 96

4.2.1 4.2.2 4.2.3

Administracin manual ____________________________________________________ 97 Administracin automtica _________________________________________________ 98 Esquemas de Administracin ________________________________________________ 98 Monoprogramacin sin intercambio ____________________________________________ 99 Multiprogramacin con particiones fijas ________________________________________ 100 Particiones de Longitud Variable______________________________________________ 101 Registro del Uso de la Memoria_______________________________________________ 102 Intercambio de procesos entre memoria y disco __________________________________ 103 Intercambio (Swapping)_____________________________________________________ 104 Memoria virtual ___________________________________________________________ 105 4.2.4 Problemas de la administracin de memoria ___________________________________ 107 4.2.5 Caso de estudio: Sistema de administracin de memoria de Linux __________________ 108

4.3

Asignacin de la memoria _____________________________________________ 110Alojamiento contiguo y no contiguo _________________________________________ 110 Estrategias de asignacin __________________________________________________ 111 Fragmentacin y compactacin _____________________________________________ 111

4.3.1 4.3.2 4.3.3

vi

Diseo y simulacin de sistemas operativos Eugenio Jacobo Hernndez Valdelamar

Subalojadores_____________________________________________________________ 112 Paginacin _____________________________________________________________ 112 Reemplazo de pginas ______________________________________________________ 115 4.3.5 Segmentacin ___________________________________________________________ 116 4.3.6 Segmentacin con paginacin ______________________________________________ 117 4.3.4

4.4 4.5 4.5

Simulacin del servicio de administracin de memoria _____________________ 119 Comentarios ________________________________________________________ 122 Obras consultadas ___________________________________________________ 123

Capitulo 5.5.15.1.1 5.1.2 5.1.3 5.1.4 5.1.5 5.1.6 5.1.7

Administracin de procesos ________________________________ 125

Ejecucin de programas y procesos _____________________________________ 125

Modelos de ejecucin_____________________________________________________ 125 Procesos _______________________________________________________________ 127 Hilos__________________________________________________________________ 128 Representacin de los procesos _____________________________________________ 129 Creacin de procesos _____________________________________________________ 130 Estados de un proceso ____________________________________________________ 132 Colas de procesos________________________________________________________ 133 Llamadas de servicios ______________________________________________________ 134 5.1.8 Operaciones de manipulacin de procesos_____________________________________ 134 5.1.9 Por qu usar procesos? ___________________________________________________ 135

5.2

Planificacin de procesos ______________________________________________ 136

5.2.1

Tipos de planificacin ____________________________________________________ 137 Planificacin del CPU ______________________________________________________ 138 Planificacin de largo plazo __________________________________________________ 139 Planificacin de mediano plazo _______________________________________________ 140 Caso de estudio: Sistema de planificacin de procesos de Linux _____________________ 141 5.2.2 Algoritmos de planificacin ________________________________________________ 142 Algoritmo de planificacin FCFS (First Come - First Served) _______________________ 143 Algoritmo Round-robin _____________________________________________________ 145 Planificacin por prioridad___________________________________________________ 146 Algoritmo del trabajo ms corto primero (Shortest Job First) ________________________ 147 Mltiples colas de prioridad (MPQ)____________________________________________ 148 Planificacin de dos niveles __________________________________________________ 150 Planificacin por herencia (Inheritance scheduling) _______________________________ 151 Planificacin evolutiva______________________________________________________ 151

5.3 5.4

Simulacin del servicio de administracin de procesos _____________________ 152 Procesos concurrentes ________________________________________________ 155

5.4.1

Sincronizacin de procesos ________________________________________________ 159 Semforos _______________________________________________________________ 161 Candados (Locks) _________________________________________________________ 162 Monitores y variables de condicin ____________________________________________ 163 Interbloqueos _____________________________________________________________ 167 Prevencin y tratamiento ____________________________________________________ 168 5.4.2 Comunicacin entre procesos ______________________________________________ 170 El esquema productor-consumidor_____________________________________________ 170 Mensajes ________________________________________________________________ 171 Tuberas (pipes) ___________________________________________________________ 173 Caso de estudio: Comunicacin entre procesos en Linux ___________________________ 174 5.4.3 Comunicacin entre procesos en Sistemas Distribuidos __________________________ 175 5.4.4 Modelo cliente-servidor ___________________________________________________ 177 Direccionamiento __________________________________________________________ 177

vii

Diseo y simulacin de sistemas operativos Eugenio Jacobo Hernndez Valdelamar

5.4.5

Llamadas a Procedimientos Remotos (RPC) ___________________________________ 178

5.5 5.6

Comentarios ________________________________________________________ 180 Obras consultadas ___________________________________________________ 181

Capitulo 6.6.16.1.1 6.1.2 6.1.3 6.1.4 6.1.5

Administracin de dispositivos, almacenamiento y comunicaciones. 183Dispositivos de Entrada - Salida ____________________________________________ 185 Controladores de Dispositivos ______________________________________________ 185 Manejadores de dispositivos (device drivers) __________________________________ 187 Acceso Directo a Memoria_________________________________________________ 190 Caso de estudio: Manejo de dispositivos en UNIX ______________________________ 191

Administracin de dispositivos y perifricos ______________________________ 184

6.2

Administracin de archivos____________________________________________ 193

6.2.1 6.2.2 6.2.3 6.2.4

Medios de almacenamiento ________________________________________________ 194 Manejador de discos______________________________________________________ 195 Archivos_______________________________________________________________ 196 El sistema de archivos ____________________________________________________ 197 Representacin de archivos y estructura del sistema de archivos _____________________ 199 Operaciones soportadas por el sistema de archivos ________________________________ 202 Asignacin del espacio de almacenamiento ______________________________________ 204 Mtodos de acceso en los sistemas de archivos ___________________________________ 205 Algoritmos de planificacin de lectura y escritura_________________________________ 205 Tolerancia a fallas _________________________________________________________ 206 El concepto de sistema virtual de archivos ______________________________________ 206 6.2.5 Nuevos enfoques en el manejo de archivos ____________________________________ 207 6.2.6 Caso de estudio: Sistema de archivos y control de dispositivos en Linux _____________ 208

6.3

Comunicaciones en red _______________________________________________ 210

6.3.1

Redes de computadoras ___________________________________________________ 211 Estructura y configuraciones de redes __________________________________________ 212 Interconexin de computadoras _______________________________________________ 214 6.3.2 Organizacin del software de red____________________________________________ 215 Protocolos _______________________________________________________________ 216 Caso de estudio: TCP/IP ____________________________________________________ 218 Sockets __________________________________________________________________ 219 6.3.3 Caso de estudio: Windows 9X en red ________________________________________ 221 Interfaces de dispositivos de red ______________________________________________ 221 Arquitectura para protocolos _________________________________________________ 222 Arquitectura para clientes de redes ____________________________________________ 222 Mecanismos de comunicacin entre procesos (IPC) _______________________________ 223 Instalacin y configuracin de las tarjetas de red__________________________________ 223

6.4 6.5

Comentarios ________________________________________________________ 223 Obras consultadas ___________________________________________________ 225

Capitulo 7.7.17.1.1 7.1.2

Diseo de sistemas operativos_______________________________ 227Por qu es necesario un sistema operativo? ___________________________________ 229 Para qu escribir un sistema operativo? ______________________________________ 230

El software y sus caractersticas ________________________________________ 228

7.2

Desarrollo de sistemas de software ______________________________________ 230Proceso de desarrollo de software ___________________________________________ 230 Ingeniera de software ____________________________________________________ 231 Concepto de ciclo de vida ___________________________________________________ 232 Fases genricas de la ingeniera de software _____________________________________ 233

7.2.1 7.2.2

viii

Diseo y simulacin de sistemas operativos Eugenio Jacobo Hernndez Valdelamar

El proceso de diseo _______________________________________________________ 235 Etapas del diseo de sistemas ________________________________________________ 235

7.3

Arquitectura de software______________________________________________ 237

7.3.1 Importancia de la arquitectura de software ____________________________________ 238 7.3.2 El diseo de la arquitectura ________________________________________________ 239 7.3.3 Elementos de una arquitectura de software ____________________________________ 241 Vistas (estructuras)_________________________________________________________ 242 El modelo de arquitectura 4+1 vistas ___________________________________________ 244 Vista de la arquitectura por capas _____________________________________________ 245 Estilos arquitectnicos ______________________________________________________ 246 7.3.4 Patrones arquitectnicos___________________________________________________ 248 El patrn Layers ___________________________________________________________ 249 El patrn Microkernel ______________________________________________________ 249 El patrn Broker___________________________________________________________ 251 7.3.5 Desarrollo basado en la arquitectura _________________________________________ 251

7.4

Diseo sistemas operativos: enfoque orientado a la arquitectura _____________ 252Preguntas importantes: en busca de requerimientos______________________________ 252 Metas del diseo_________________________________________________________ 254 Estructura del sistema operativo ____________________________________________ 255 Mecanismos y polticas ___________________________________________________ 257

7.4.1 7.4.2 7.4.3 7.4.4

7.5

Diseo de sistemas operativos: el enfoque de los desarrolladores _____________ 257

7.5.1 7.5.2 7.5.3

El enfoque de diseo ms simple ____________________________________________ 258 Consideraciones de diseo de sistemas operativos ______________________________ 260 Diseo de kernels ________________________________________________________ 262 Clasificacin de los kernels __________________________________________________ 263 Criterios de planificacin ____________________________________________________ 265 7.5.4 Consideraciones sobre la codificacin del sistema ______________________________ 266 7.5.5 Uso de estndares y portabilidad ____________________________________________ 266

7.6

Diseo de sistemas operativos: la interaccin con el usuario _________________ 267

7.6.1 Interaccin humano-computadora_______________________________________________ 268 7.6.2 Interfaz basada en texto_______________________________________________________ 269 7.6.3 Interfaz grfica de usuario ____________________________________________________ 270 7.6.4 Interfaces alternativas ________________________________________________________ 273 7.6.5 Diseo de interfaces de usuario_________________________________________________ 274

7.7 7.8 7.9

Diseo de sistemas operativos: la administracin de sistemas ________________ 276 Comentarios ________________________________________________________ 277 Obras consultadas ___________________________________________________ 280

Capitulo 8.8.1 8.2 8.3 8.4 8.5 8.6 8.7

Arquitecturas de Sistemas Operativos ________________________ 285

Representacin de la arquitectura ______________________________________ 286 Arquitecturas de Sistemas Operativos ___________________________________ 287 Arquitectura de kernel monoltico ______________________________________ 288 Arquitectura de capas y anillos_________________________________________ 290 Arquitectura de mquina virtual _______________________________________ 293 Arquitectura de microkernel y multihilado _______________________________ 295 Arquitecturas Orientadas a Objetos_____________________________________ 298Sistemas operativos basados en componentes __________________________________ 301

8.7.1

ix

Diseo y simulacin de sistemas operativos Eugenio Jacobo Hernndez Valdelamar

8.8 8.9

Arquitectura cliente-servidor __________________________________________ 302Implantacin del modelo C/S para sistemas operativos distribuidos ___________________ 304

Arquitecturas en red y distribuidas _____________________________________ 305Criterios de diseo de sistemas distribuidos____________________________________ 308 Mach _________________________________________________________________ 309

8.9.1 8.9.2

8.10 8.11 8.12 8.13 8.14

Arquitecturas adaptables____________________________________________ 312 Arquitectura de Exokernel __________________________________________ 314 Arquitecturas orientadas a agentes____________________________________ 317 Comentarios ______________________________________________________ 319 Obras consultadas__________________________________________________ 321

Resultados, conclusiones y perspectivas ___________________________________ 325a. b. c.c.1 c.2 c.3

Resultados __________________________________________________________ 325 Aportaciones ________________________________________________________ 326 Conclusiones __________________________________________________________ 328Por qu seguir desarrollando nuevos sistemas operativos? _________________________ 329 Los sistemas operativos y el desarrollo de marcos conceptuales (frameworks)___________ 330 Tendencias en el desarrollo de sistemas operativos ________________________________ 330

d. e.

Perspectivas_________________________________________________________ 330 Referencias ___________________________________________________________ 332

Bibliografa__________________________________________________________ 333 Glosario_____________________________________________________________ 335 Apndices ___________________________________________________________ 341Apndice A. Programacin de Cargadores (sectores de arranque) _________________ 341 Apndice B. Simulacin de un sistema mnimo de hardware y su sistema operativo___ 346 Apndice C. Simulador del servicio de administracin de la memoria ______________ 357 Apndice D. Simulador del servicio de administracin de procesos_________________ 372 Apendice E. Caso de estudio: Implementacin de un microkernel _________________ 384

x

Diseo y simulacin de sistemas operativos Eugenio Jacobo Hernndez Valdelamar

Lista de figuras y tablasOrganizacin del trabajo. ................................................................................................................................ 3 Figura 1.1 Vista de los programas de sistema y de aplicacin........................................................................ 8 Figura 1.2 El SO administra los recursos de hardware y software de la computadora, y provee un medio estable y consistente donde las aplicaciones puedan usar el hardware. .................................................. 8 Figura 1.3 Soporte de software necesario para aprovechar los recursos del hardware. ................................ 11 Tabla 1. Recursos de la arquitectura, administracin del sistema operativo y abstracciones del usuario. .... 12 Figura 1.4 Esquema de los diferentes tipos de memoria en un sistema de cmputo..................................... 13 Figura 1.5 Niveles de interaccin de un shell ............................................................................................... 17 Figura 1.6 Ejemplos de interfaz grfica de usuario: (a) el sistema NeXT; (b) Mac OS X............................ 18 Figura 1.7 Cronologa del desarrollo de las computadoras y los sistemas operativos. ................................ 19 Figura 1.8 Esquema de operacin de las primeras computadoras................................................................. 20 Figura 1.9 Esquema bsico de la memoria de una computadora con procesamiento por lotes (monitor residente)............................................................................................................................................... 22 Figura 1.10 Esquemas bsicos de procesamiento. Ntese como el tiempo desperdiciado ha ido disminuyendo........................................................................................................................................ 23 Figura 1.11 Esquema de sistema de multiprogramacin (o multitarea), donde varias tareas son ejecutadas simultneamente. .................................................................................................................................. 24 Figura 1.12 Esquema de ejecucin de dos procesos con y sin multiprogramacin....................................... 25 Figura 1.13 Esquema de un sistema de tiempo compartido. ......................................................................... 26 Figura 1.14 Esquema de un sistema de control, en donde deben ser aceptados y procesados gran cantidad de sucesos. ................................................................................................................................................. 27 Figura 1.15 Configuraciones de multiprocesamiento asimtrico(a) y simtrico(b). ..................................... 28 Figura 1.16 Esquema de un sistema operativo distribuido........................................................................... 30 Figura 1.17 Las primeras PCs: (a) MITS Altair (1974), (b) Radio Shack TRS-80 (1977), (c) Apple I (1976), (d) Apple Lisa (1983)............................................................................................................................ 31 Figura 2.1 Modelo de Von Neumann............................................................................................................ 36 Figura 2.2 El procesador y dems dispositivos se conectan por medio de enlaces fsicos conocidos como buses. .................................................................................................................................................... 36 Figura 2.3 Modelo de un microprocesador simple....................................................................................... 37 Figura 2.4 El CPU accede diferentes tipos de memoria................................................................................ 39 Tabla 2. Comparacin de un programa en lenguaje de alto nivel, ensamblador y cdigo mquina............. 40 Figura 2.5 Esquema de la ejecucin de un programa.................................................................................... 41 Figura 2.6 Los componentes de hardware pueden comunicarse con el CPU mediante controladores.......... 42 Figura 2.7 Software relacionado al control del hardware. ............................................................................ 46 Figura 2.8 Secuencia del inicio de ejecucin del sistema operativo. ............................................................ 52 Figura 3.1a Esquema de la arquitectura del FLUX OSKit........................................................................... 61 Figura 3.1b Esquema de la arquitectura del Palm OS................................................................................... 62 Figura. 3.2 Emulacin interpretativa............................................................................................................. 64 Figura 3.3 Emulacin de compilacin dinmica........................................................................................... 64 Figura 3.4 Clases y mtodos del JOSS.......................................................................................................... 69 Figura 3.5 Forma en que los diferentes componentes de Nachos estn ligados durante la ejecucin........... 72 Figura 3.6 Arquitectura del RCOS................................................................................................................ 75 Figura 3.7 Modelo del simulador con un cargador de programas................................................................. 78 Figura 3.8 Modelo del simulador con un SOM para una URM modificada, basado en el concepto de un monitor residente. ................................................................................................................................. 80 Figura 3.9 Patrn de diseo Modelo-Vista-Controlador............................................................................... 84 Figura 3.10 Esquema del modelo morfo-Hardware ..................................................................................... 85 Figura 3.11 Modelo de clases de morfo-Hardware v.0.1 .............................................................................. 85 Figura 3.12 Modelo de clases de morfo-Hardware v.0.2 .............................................................................. 86 Figura 4.1 Vista simplificada del espacio de direcciones en la memoria...................................................... 90 Figura 4.2 La MMU se sita justo entre el CPU y la memoria.................................................................... 92 Figura 4.3 Cuando el CPU quiere acceder a la memoria, le manda la direccin que quiere a la MMU quien

xi

Diseo y simulacin de sistemas operativos Eugenio Jacobo Hernndez Valdelamar

la traduce en otra direccin que le pasa a la unidad de memoria. ......................................................... 92 Figura 4.4 Carga de un programa en memoria virtual .................................................................................. 94 Figura 4.5 Esquema de un sistema que implementa recubrimientos............................................................ 95 Figura 4.6 Esquemas de organizacin de memoria con manejo de dos particiones...................................... 99 Figura 4.7 Administracin con particiones fijas ......................................................................................... 100 Figura 4.8 Administracin con particiones variables.................................................................................. 101 Figura 4.9 Administracin con mapa de bits .............................................................................................. 102 Figura 4.10 Administracin con listas ligadas ............................................................................................ 102 Figura 4.11 Intercambio.............................................................................................................................. 105 Figura 4.12 Administracin con memoria virtual ....................................................................................... 106 Figura 4.13 Dependencias y flujos de control y datos en el administrador de memoria............................. 109 Figura 4.14 Estructura del administrador de memoria de Linux................................................................. 110 Figura 4.15 En la paginacin el tamao de la pgina debe ser una potencia de 2....................................... 113 Figura 4.16 Traduccin de direcciones en un sistema de paginacin ......................................................... 113 Figura 4.17 Direccionamiento en MS-DOS usando segmentacin (8086-16 bits). Capacidad de direccionamiento 220=1'048,576=1MB............................................................................................... 114 Figura 4.18 Traduccin de direcciones en la segmentacin........................................................................ 116 Figura 4.19 Traduccin de direcciones en un sistema con segmentacin ................................................... 117 Figura 4.20 Mtodo de segmentacin y paginacin.................................................................................... 118 Figura 4.21 Traduccin de direcciones en un sistema con segmentacin y paginacin.............................. 118 Figura 4.22 Los esquemas de particiones fijas, variables y paginacin manejan programas como bloques nicos. ................................................................................................................................................. 119 Figura 4.23 La segmentacin y la segmentacin con paginacin son ms aptos para manejar programas y mdulos dinmicos. ............................................................................................................................ 120 Figura 4.24 Modelo de clases del simulador de administracin de memoria.............................................. 121 Figura 4.25 Ejecucin del simulador. ......................................................................................................... 122 Figura 5.1 Modelos de ejecucinen sistemas de cmputo .......................................................................... 126 Figura 5.1a Esquema de un sistema monotarea .......................................................................................... 126 Figura 5.1b Esquema de un sistema multitarea........................................................................................... 127 Figura 5.2 Esquema del intercambio de procesos con el CPU en un sistema multitarea. .......................... 129 Figura 5.3 Esquemas de estados y transiciones de un proceso .................................................................. 132 Figura 5.4 Niveles de planificacin ............................................................................................................ 137 Figura 5.5 Esquema de las dependencias y flujos de control y datos en el planificador de procesos ......... 141 Figura 5.6 Estructura del planificador de procesos de Linux...................................................................... 142 Figura 5.7 Para un quantum=1 se presenta la secuencia de ejecucin de procesos .................................... 146 Figura 5.8 Ejemplo de los algoritmos SJF y SRTF..................................................................................... 148 Figura 5.9 Colas mltiples de prioridad...................................................................................................... 149 Figura 5.10 Planificacin de 2 niveles ........................................................................................................ 151 Figura 5.11 Esquema del funcionamiento de la administracin de procesos.............................................. 152 Figura 5.11a Modelo de clases del simulador de administracin de procesos. ........................................... 154 Figura 5.12 Ejecucin del simulador. ......................................................................................................... 155 Figura 5.12 Los procesos P1 y P2, as como P2 y P3 son concurrentes, en cambio P3 y P1 no lo son ...... 155 Figura 5.13 Interbloqueo............................................................................................................................. 167 Figura 5.14 Esquema donde los procesos que requieren acceder a un recurso compartido ........................ 170 Figura 5.15 Entrega de mensajes con mltiples colas................................................................................. 173 Figura 5.16 Estructura del subsistema IPC de Linux .................................................................................. 175 Figura 5.17 Esquema de procesos que se ejecutan en una computadora y en un sistema distribuido......... 176 Figura 5.18 Modelo cliente-servidor en un escenario distribuido.............................................................. 177 Figura 5.19 Esquema de invocacin local y remota de procedimientos ..................................................... 179 Figura 6.1 Capas del sistema de entrada-salida........................................................................................... 184 Figura 6.2 Arquitecturas de entrada-salida y disposiciones de los dispositivos conectados al bus............. 186 Figura 6.3 Esquemas de E/S y su acceso mediante instrucciones en ensamblador..................................... 186 Figura 6.4 Capas del software de entrada-salida......................................................................................... 188 Figura 6.5 Flujo de operaciones en un manejador de dispositivo. .............................................................. 189 Figura 6.6 Flujos de E/S por el DMA ......................................................................................................... 190 Figura 6.7 Estructura de un manejador de discos........................................................................................ 195

xii

Diseo y simulacin de sistemas operativos Eugenio Jacobo Hernndez Valdelamar

Figura 6.8 Objetos del sistema operativo y sus operaciones relacionadas con archivos. ............................ 197 Figura 6.9 Esquema del sistema de almacenamiento secundario............................................................... 197 Figura 6.10 Esquema del sistema de almacenamiento terciario.................................................................. 199 Figura 6.11 Formato de un archivo ejecutable............................................................................................ 200 Figura 6.12 Organizacin de archivos con directorios................................................................................ 200 Figura 6.13 Representaciones de archivos en UNIX, MS-DOS y Windows NT ........................................ 201 Figura 6.14 Ejemplos de estructuras en sistemas operativos como UNIX, MS-DOS y Windows. ............ 202 Figura 6.15 Esquema de la aplicacin de operaciones de acceso y manipulacin en un archivo .............. 204 Figura 6.16 Sistema virtual de archivos de Linux....................................................................................... 209 Figura 6.17 Estructura del administrador de archivos de Linux ................................................................. 210 Figura 6.18a Algunas ejemplos de las topologas que una red puede adoptar. .......................................... 213 Figura 6.18b Modelo OSI y los equivalentes en el modelo de protocolos TCP/IP..................................... 214 Figura 6.19 Arquitectura de Netware 2.2.................................................................................................... 214 Figura 6.20 Estructura del subsistema de red de Linux .............................................................................. 216 Figura 6.21 Conjunto de protocolos TCP/IP y su relacin con el modelo OSI........................................... 218 Tabla 3. Relacin de dispositivos de cmputo y sus sistemas operativos................................................... 229 Figura 7.1 Esquema del proceso unificado de desarrollo (RUP) ................................................................ 231 Figura 7.2 Ciclo de vida en cascada............................................................................................................ 232 Figura 7.3 Visiones de un sistema de software ........................................................................................... 237 Figura 7.4 La definicin de la arquitectura est entre el anlisis del sistema y su diseo........................... 240 Figura 7.5 Descomposicin de elementos de diseo................................................................................... 241 Tabla 4. Estructuras de una arquitectura de software.................................................................................. 243 Figura 7.6 Vistas posibles de un elemento de diseo (lgica, concurrente o de instalacin)...................... 244 Figura 7.7 Algunos tipos de estilos arquitectnicos.................................................................................... 247 Figura 7.8 Diagrama de clase del patrn microkernel ................................................................................ 250 Figura 7.9 Vista de capas de la arquitectura de un sistema operativo ......................................................... 256 Figura 7.10 Dispositivos de interfaz ........................................................................................................... 268 Figura 7.11 Interfaz de usuario del MS-DOS ............................................................................................. 269 Figura 7.12 Patrn de diseo Interpreter..................................................................................................... 270 Figura 7.13 Interfaz de la aplicacin shell de MS-DOS.............................................................................. 270 Figura 7.14 Interfaz grfica GNOME en Linux[7.87] ................................................................................ 271 Figura 7.15 Patrn MVC como base de una GUI ...................................................................................... 272 Figura 7.16 Elementos de la interfaz de usuario de Swing en Java ............................................................ 272 Figura 7.17 Arquitectura de la GUI del WCEfA ........................................................................................ 273 Figura 7.18 Arquitectura del Mac OS X y su interfaz de usuario Aqua ..................................................... 275 Figura 7.19 Consideraciones para el desarrollo de software....................................................................... 278 Figura 7.20 Diseo de sistemas operativos ................................................................................................. 279 Figura 8.1 Arquitectura de Windows NT representada en un esquema de mdulos................................... 286 Figura 8.2 Especificacin formal de alto nivel de la arquitectura de Windows NT usando UML (paquetes y relaciones)........................................................................................................................................... 287 Figura 8.3 Arquitectura de kernel monoltico ............................................................................................. 289 Figura 8.4 Arquitectura conceptual de Linux ............................................................................................. 290 Figura 8.5 Esquema de la organizacin en capas de un sistema operativo ................................................. 291 Figura 8.6 Organizacin del sistema operativo en anillos........................................................................... 291 Figura 8.7 La caracterstica central de la arquitectura de Mac OS X es la divisin en capas del software del sistema ................................................................................................................................................ 292 Figura 8.8 Esquema de una arquitectura de mquina virtual ...................................................................... 293 Figura 8.9 Niveles de mquinas virtuales ................................................................................................... 294 Figura 8.10 Convivencia entre el sistema operativo nativo y ..................................................................... 295 el creado por la mquina virtual.................................................................................................................. 295 Figura 8.11 Esquema de la arquitectura de un microkernel. Pueden identificarse los modos de operacin (modo kernel y modo usuario), as como los procesos del sistema y los procesos de usuario............ 296 Figura 8.12 Esquema de la arquitectura del Palm OS. El ncleo de este sistema es el microkernel AMX (Kadak) que implementa multiprocesamiento .................................................................................... 297 Figura 8.13 La arquitectura de paso de mensajes del QNX RTOS forma un bus de software que permite conectar o desconectar los mdulos del SO que se necesiten, sin reiniciar el sistema........................ 298

xiii

Diseo y simulacin de sistemas operativos Eugenio Jacobo Hernndez Valdelamar

Figura 8.14 En el corazn del JavaOS se encuentra la mquina virtual de Java (JVM). Los servicios del sistema, manejadores, applets y aplicaciones se ejecutan en la VM y un microkernel provee los servicios bsicos de la plataforma....................................................................................................... 300 Figura 8.15 La red de mdulos de software que forma una aplicacin puede visualizarse en distintos niveles ............................................................................................................................................................ 301 Figura 8.16 Arquitectura del sistema operativo Go .................................................................................... 302 Figura 8.17 Arquitectura del sistema X Window, para el intercambio de mensajes de interfaz grfica de usuario................................................................................................................................................. 304 Figura 8.18 Esquema de operacin de un sistema operativo de red............................................................ 305 Figura 8.18a Arquitectura de Windows NT en referencia al modelo OSI .................................................. 306 Figura 8.19 Esquema de operacin de un sistema operativo distribuido .................................................... 307 Figura 8.20 Esquema del middleware y entornos distribuidos .................................................................. 308 Figura 8.21 Esquema de la arquitectura de Mach ....................................................................................... 310 Figura 8.22 Arquitectura del microkernel Darwin del Mac OS X que integra el kernel Mach 3.0 y servicios del BSD UNIX.................................................................................................................................... 312 Figura 8.23 Estructura de un sistema exokernel. Las aplicaciones usan sus propias libreras de Sistema Operativo (Library Operating System (LibOS)) que a su vez usan el exokernel para cargar y descargar recursos de hardware........................................................................................................................... 314 Figura 8.24 Esquema de un servidor Web montado en un SO convencional ............................................. 315 Figura 8.25 El solicitar una pgina HTML desencadena una serie de procesos que el SO tiene que hacer para darle el soporte a la aplicacin, lo cual no necesariamente puede ser ptimo. En el segundo diagrama pueden apreciarse las dependencias del sistema de administracin de memoria de Linux. 315 Figura 8.26 El exokernel provee la proteccin del hardware y las libreras de aplicacin, pero el control lo tiene la aplicacin, lo que elimina procesos que el servidor Web no necesita .................................... 316 Figura 8.27 Un sistema de exokernel simplificado con dos aplicaciones, cada una ligada con su propia libOS y compartiendo pginas por medio de un registro .................................................................... 316 Figura 8.28 Arquitecturas de sistemas operativos y sus caractersticas ...................................................... 320 Figura 9.1 Simulador de administracin de memoria con particiones fijas (Oscar Cecea)....................... 328 Figura 9.2 Simulador de administracin de procesos (Christian Islas) ....................................................... 328 Figura 9.3 Simulador de administracin de procesos (Josu Huizar) ......................................................... 328

xiv

Diseo y simulacin de sistemas operativos Eugenio Jacobo Hernndez Valdelamar

IntroduccinAlgunos ven las cosas como son y preguntan:Por qu? Yo sueo en lo que nunca existi y pregunto:Por qu no?Robert F. Kennedy

Las computadoras desde un principio han sido mquinas complejas (y un gran logro tcnico iniciado por Babbage en el siglo XIX y desarrollado en el siglo XX), compuestas de diversas partes fsicas (el hardware), las cuales realizan acciones cuando se les dan instrucciones (el llamado software). Los conjuntos ordenados de instrucciones son llamados programas, y son los que le dicen a la computadora como debe hacer diferentes cosas con objetivos especficos y particulares. Es un tipo especial de programas llamados sistemas operativos, los que permiten a la computadora brindar una plataforma para realizar una gran variedad de tareas complejas. La idea de realizar notas y hasta un libro de sistemas operativos naci en 1997 cuando daba un curso relacionado al tema en la Fundacin Arturo Rosenblueth (el titulo de ese proyecto era "Sistemas operativos: Teora y prctica"), sin embargo por motivos de trabajo la idea qued en el bal. Fue hasta 1999 (tal vez un poco antes) con el advenimiento de un movimiento importante en el pas respaldando a Linux (por parte de entusiastas estudiantes de diversas universidades) que decid retomar el tema de los sistemas operativos. Una motivacin adicional apareci durante el tiempo que pas colaborando en el Instituto de Qumica de la UNAM; hubo una pregunta que me intrig cuando charlbamos sobre las analogas de los mecanismos celulares con las computadoras: "Si el ncleo celular era el hardware, cul era el software (y el sistema operativo) de la clula?" Aunque se coment que el ADN poda considerarse como el software de control, me pareci que deba estudiar a fondo la teora de los sistemas operativos para un anlisis futuro del tema. Despus de investigar ca en cuenta de algunos hechos importantes: El desarrollo de este tipo de sistemas est en manos de una lite de desarrolladores (ya sean los apoyados por universidades o compaas, o los que lo hacen como pasatiempo; esfuerzos sin duda, loables). Aunque hacer sistemas operativos no es una de las ofertas de trabajo que salgan a menudo en los peridicos, el conocimiento de este tema es obligado para cualquier profesional del rea de cmputo. La bibliografa relacionada es escasa e importada (aunque hay traducciones) y en general ms terica que prctica. Esto ltimo no ha tenido un balance (hay obras con mucha teora y otras con la mitad de la publicacin con listados de cdigo fuente) y ante todo, no ha reportado la experiencia de las personas o equipos de trabajo, exponiendo cmo es que llegaron a sus soluciones (es decir, a sistemas que actualmente se usan en ambientes de produccin). Un experto en sistemas operativos debe tener una perspectiva amplia sobre los diferentes sistemas operativos existentes. Alguien que trata o logra recompilar el kernel de Linux, o que

1

Diseo y simulacin de sistemas operativos Eugenio Jacobo Hernndez Valdelamar

obtiene una certificacin en el uso o administracin de algn otro sistema, no necesariamente sabe cmo est funcionando dicho sistema, cmo est construido o cmo puede modificarse para mejorar su rendimiento. Deben tomarse en cuenta los avances en otras reas de las ciencias de la computacin, para aplicarlos a los problemas clsicos de los sistemas operativos, o para proveerlos de nuevas funcionalidades o incluso para proponer nuevos enfoques en su desarrollo (p.ej. tcnicas de IA, agentes, etc.). Al no tener una referencia prctica sobre el desarrollo de este tipo de sistemas, se limita el avance e innovacin potencial que pudiera lograrse, por falta de conocimiento. No solo hay pocos libros, sino que hay poco inters. Es necesario crear y difundir una cultura sobre los sistemas operativos para reducir la dependencia tecnolgica del extranjero (cosa difcil a estas alturas, pero no imposible), y mejorar los criterios de consumo de los usuarios finales (por qu debo cambiar de sistema si el que uso funciona? qu mejoras tiene la nueva versin? qu otras opciones existen?).

Por todo lo anterior, decid llevar a cabo una investigacin que lograra, ante todo, aclarar muchas dudas que creo compartir con muchas personas (sin ir mas lejos, preguntas sobre qu son o cmo funcionan los sistemas operativos) con respuestas convincentes que vayan a la mdula de la principal interrogante de todo estudiante de ciencias de la computacin: cmo se

disea y construye un sistema operativo?Para ello, me he apoyado en toda la bibliografa a mi alcance y sobre todo en la informacin disponible en Internet (la cual de unos aos para ac se ha incrementado, afortunadamente), as como en mi experiencia como desarrollador de software (que es donde hay que lidiar con los sistemas operativos, y donde surgen los retos). El objetivo es organizar y analizar la informacin existente sobre los sistemas operativos, en aspectos tales como: la conceptualizacin general de este tipo de sistemas, la integracin de algoritmos y subsistemas que forman parte de ellos, la concepcin y la implementacin en cdigo de todos sus elementos conceptuales, pues como desarrollador de sistemas s apreciar la importancia de hacer las cosas para entenderlas, el aprendizaje de tcnicas de un rea de conocimiento, sirve para aplicarlas en la solucin de problemas en otros contextos.

No he querido tomar un solo sistema como caso de estudio, pues esto sera limitado, dada la variedad que existe (adems tratar de adivinar por qu se codific de cierta manera un programa, o conjeturar sobre las decisiones de diseo del sistema puede ser poco objetivo). Por el contrario, he tratado de integrar las diversas visiones en torno a los sistemas operativos para ejemplificar (en lo posible), las ideas y tcnicas ms representativas aplicadas a estos sistemas (a nivel de sus componentes y su estructura general). Con base en lo anterior, la propuesta de elementos de los sistemas operativos implementacin de estos sistemas, para concepcin, su diseo y su construccin. este trabajo es identificar los principales y analizar las tcnicas de diseo e establecer lineamientos precisos para su Aunque hay varias obras que hablan de cmo

2

Diseo y simulacin de sistemas operativos Eugenio Jacobo Hernndez Valdelamar

hacer un sistema operativo, ninguna de las exposiciones establece una metodologa clara, por lo que es difcil abordar un proyecto de este tipo. La comprensin es bsica si se desea analizar o construir uno de estos sistemas (hay muchos detalles entre lneas que pueden ser omitidos y que son importantes en la arquitectura del sistema); no slo se trata de que cada quien haga su sistema operativo (pues esto no tendra mucho sentido), sino de tener los elementos necesarios para que con el advenimiento de nuevas tecnologas, se pueda colaborar en su desarrollo, o por lo menos entender cul es el sentido y capacidades de las nuevas soluciones. Los objetivos concretos de este trabajo son: 1. Exponer los principales conceptos de la teora de sistemas operativos con un enfoque prctico. 2. Analizar diversas arquitecturas de sistemas operativos y sus subsistemas, con el fin de establecer criterios para el diseo de nuevos sistemas operativos, as como para evaluar los existentes. 3. Proponer algunos modelos de simulacin que integren a los elementos relacionados con el funcionamiento de un sistema operativo.

Organizacin del trabajo.Este trabajo est organizado en tres grandes partes: I. Conceptos fundamentales de los sistemas operativos y su funcionamiento general. Los primeros dos captulos exponen los principales conceptos relacionados a los sistemas operativos, su evolucin, sus principales componentes y su funcionamiento integral desde una perspectiva general. Esto permitir comprender que elementos debern ser estudiados a detalle, y a limitar el alcance del simulador propuesto. El capitulo 1 presenta los conceptos fundamentales sobre sistemas operativos:

3

Diseo y simulacin de sistemas operativos Eugenio Jacobo Hernndez Valdelamar

- definicin de conceptos de sistemas operativos - evolucin histrica de los SOs y su clasificacin - identificacin de las principales partes que en general los conforman El captulo 2 presenta el funcionamiento general de los sistemas operativos explorando a los elementos de hardware y software que trabajan en la computadora para que contemos con un sistema de este tipo. El capitulo 3 expone la justificacin del uso de la simulacin para el estudio de los SO, y se analizan algunas de las plataformas de simulacin ms usadas, con el fin de establecer los criterios y elementos de diseo para la simulacin de los conceptos generales de funcionamiento expuestos en el capitulo 2. Para ello primero se presentan las consideraciones para la simulacin de hardware y sistemas operativos, y un primer prototipo del simulador, el cual fue hecho sin tener un fundamento arquitectnico. II. Sistemas y servicios de administracin de recursos. En la gran mayora de los libros de sistemas operativos, se dedican 7 10 captulos al estudio de los sistemas de administracin de memoria, procesos, almacenamiento, perifricos, etc. Para no volver a repetir lo que varios libros exponen, decid que era mejor un enfoque donde se expongan estos sistemas como la definicin de requerimientos que se necesitarn para el simulador. De esta manera, contaremos con un enfoque ms prctico (pues inclusive se incluyen algunas pruebas de concepto) Los captulos 4, 5 y 6 abordan el anlisis de los principales componentes de los sistemas operativos, a nivel de sistemas de administracin. En el capitulo 4 se analiza la administracin de memoria. En el capitulo 5 se analiza la administracin de procesos. En el captulo 6 la administracin de dispositivos del sistema. Todo esto brinda una perspectiva de los servicios que por lo general los sistemas operativos ofrecen (y que el usuario espera). III. Diseo de sistemas operativos. Una vez que contamos con el conocimiento de lo que es y cmo funciona un sistema operativo, y partes que lo integran, llega el momento de aplicarlo. En principio cre que el principal producto sera un simulador, pero de hecho hay un vaco ms importante que llenar: la metodologa de diseo de los sistemas operativos. Por ello, se presentan algunos casos de estudio de varios sistemas operativos para identificar los principales componentes de las diversas arquitecturas que existen, con el fin de establecer criterios metodolgicos de diseo. El capitulo 7 plantea las consideraciones de diseo de sistemas operativos, y expone todo un marco de referencia para su diseo. El capitulo 8 revisa las principales arquitecturas de sistemas operativos y se presentan algunos casos de estudio, que relacionan a sus partes con la disposicin que pueden adoptar en un sistema especifico. Esto ser de utilidad como una paleta de elementos de diseo que el lector podr aplicar al proceso de diseo.

4

Diseo y simulacin de sistemas operativos Eugenio Jacobo Hernndez Valdelamar

La ltima seccin contiene los resultados del trabajo, la experiencia del desarrollo, las conclusiones obtenidas, as como las perspectivas a futuro del proyecto. Adicionalmente los apndices contienen varios ejemplos y referencias prcticas interesantes, relativas a diversos tpicos como: a. Simulacin de sistemas operativos (modelado del hardware y software que se relaciona al SO). b. Implementacin de servicios del sistema operativo (administracin de la memoria y procesos). c. Casos de estudio de implementaciones (un microkernel).

Temas relacionados Sistemas operativos. Sistemas distribuidos. Arquitectura de computadoras. Compiladores y lenguajes de programacin. Simulacin y modelado. Simulacin y emulacin de hardware. Ingeniera de software. Arquitectura de software.

5

Diseo y simulacin de sistemas operativos Eugenio Jacobo Hernndez Valdelamar

6

Diseo y simulacin de sistemas operativos Eugenio Jacobo Hernndez Valdelamar

Capitulo 1. Fundamentos de los Sistemas OperativosTodo aquel que desee saber qu ocurrir debe examinar qu ha ocurrido: todas las cosas de este mundo, en cualquier poca, tienen su rplica en la antigedad.Maquiavelo.

Para entrar en materia, este primer captulo est dedicado a dar respuesta a las preguntas ms comunes relacionadas a los sistemas operativos, tales como: Qu son los sistemas operativos? Cules son sus principales caractersticas? Cundo aparecen y para qu? Cul ha sido su desarrollo histrico? Cules son los principales conceptos que intervienen en su estructura?

Se han tratado de incluir todos los aspectos que puedan requerirse para entender estas cuestiones, y para tener las bases para comprender la disertacin de los siguientes captulos. Adems, puesto que uno de los principales objetivos de este trabajo es el diseo de este tipo de sistemas, es esencial que se comprenda cuales son sus antecedentes, los elementos conceptuales a manejar y la interaccin entre ellos, para as pasar a cuestiones ms especficas.

1.1

Qu es un sistema operativo?

Aunque en las ltimas dcadas se han hecho propuestas en cuanto a nuevos tipos de computadoras, el hecho es que sin el software (o programas, que son conjuntos de instrucciones que una mquina ejecuta) una computadora es solo un ingenio electrnico incapaz de realizar tareas tiles. Con el software, una computadora puede almacenar, procesar y recuperar informacin. El software para computadoras puede clasificarse en general como: Programas de sistema, que controlan la operacin de la computadora en s. Programas de aplicacin, los cuales definen la forma en que los recursos de la computadora se emplean para resolver los problemas de computacin de los usuarios (compiladores, sistemas de bases de datos, juegos de video y programas para negocios).

7

Diseo y simulacin de sistemas operativos Eugenio Jacobo Hernndez Valdelamar

Figura 1.1 Vista de los programas de sistema y de aplicacin.El elemento fundamental de todos los programas de sistema es el Sistema Operativo (SO), que controla todos los recursos de la computadora y proporciona la base sobre la cual pueden escribirse y ejecutarse los programas de aplicacin.

Figura 1.2 El SO administra los recursos de hardware y software de la computadora, y provee un medio estable y consistente donde las aplicaciones puedan usar el hardware.Puesto que hay una gran variedad de puntos de vista respecto a lo que es un sistema operativo, es prudente presentar algunas de las definiciones ms representativas para empezar a comprender la amplitud de funciones de este tipo de sistemas.

1.1.1 DefinicionesA continuacin se presenta un conjunto de definiciones que contienen diferentes perspectivas de lo que es (o debera ser) un sistema operativo (SO).

8

Diseo y simulacin de sistemas operativos Eugenio Jacobo Hernndez Valdelamar

I. Un SO es el programa que se ejecuta en todo instante en la computadora. II. Un SO es un programa que acta como intermediario entre el usuario y el hardware de la computadora. Su propsito es proveer un ambiente en el cual el usuario pueda ejecutar programas. III. Un SO es un conjunto de programas de control del sistema de cmputo, cuyas funciones son: - Administracin y control de los dispositivos del sistema de cmputo. - Solucin a problemas tales como el tiempo de procesador, espacio en memoria, espacio para almacenamiento de archivos, dispositivos E/S, etc. - Ambiente de ejecucin de los programas. Un programa que controla la ejecucin de los programas del usuario previniendo errores y usos indebidos de la computadora. - Interfaz entre: - Programas y hardware (llamadas al SO). - Programador-usuario (lenguaje). - Proveer cmputo a bajo costo al compartir recursos e informacin. IV. Un SO es una coleccin integrada de rutinas que sirven para el secuenciamiento y procesamiento de programas por medio de una computadora. Un sistema operativo puede proveer varios servicios, como el alojamiento de recursos, planificacin, control de la entrada/salida y administracin de datos. Aunque los sistemas operativos son software predominantemente, implementaciones parciales o totales pueden ser hechas en forma de firmware (software escrito en ROM). V. Un sistema de cmputo puede ser definido en trminos de varias funciones de supervisin y control que provee para los procesos (programas en ejecucin) creados por el usuario, tales como: 1. Crear y quitar procesos. 2. Controlar el progreso de los procesos (p.ej. asegurando que no existan bloqueos entre los procesos activos). 3. Actuar en condiciones excepcionales que ocurran durante la ejecucin de un proceso (errores aritmticos, de direccionamiento). 4. Asignar recursos de hardware a los procesos. 5. Dar acceso a los recursos de software (archivo, compiladores, etc.). 6. Proveer proteccin, control de acceso y seguridad a la informacin. 7. Proveer comunicacin entre procesos y sincronizacin. Estas funciones deben ser provistas por el sistema ya que no siempre pueden ser manejadas adecuadamente por los mismos procesos. El software encargado de asistir al hardware en estas funciones es conocido como el sistema operativo. Todas estas definiciones son complementarias, y en resumen, se puede decir que los Sistemas Operativos son un conjunto de programas que crean la interfaz del hardware con el usuario, y que tienen como funciones primordiales:

9

Diseo y simulacin de sistemas operativos Eugenio Jacobo Hernndez Valdelamar

Administrar el hardware. Se refiere al hecho de administrar de una forma ms eficiente los recursos de la mquina. Facilitar el trabajo al usuario. Permite una comunicacin con los dispositivos de la mquina. Controlar la ejecucin de programas y proveer los servicios necesarios para hacerlo. A continuacin veremos las caractersticas principales de los sistemas operativos.

1.1.2

Caractersticas principales

Algunas de las principales caractersticas generales de los sistemas operativos actuales son: a. Concurrencia. Es la existencia de varias actividades simultneas (o paralelas). Algunos ejemplos son la coexistencia en memoria de varias aplicaciones del usuario y la ejecucin simultanea de operaciones de E/S y procesos de cmputo. La concurrencia plantea problemas tales como el cambio de una actividad a otra (switching), la proteccin de una actividad contra los efectos de otra y la sincronizacin de actividades que son mutuamente dependientes. b. Compartir recursos o informacin entre las actividades concurrentes. Algunas de las razones son: i) ii) iii) iv) Costos. A causa de que proveer con equipo suficiente a varios usuarios resulta muy caro. Reutilizacin. Utilizacin de de programas o rutinas ya existentes para desarrollar nuevas aplicaciones. Compartir datos de una misma base de datos para diferentes programas. Evitar la redundancia de utilizar copias individuales de un programa en vez de compartir una sola.

c. Almacenamiento a largo plazo de programas e informacin. d. Un sistema operativo debe ser determinista, en el sentido de que al correr un programa con los mismos datos en diferentes das, debe obtenerse el mismo resultado. Por otra parte debe responder a eventos que ocurren en orden impredecible. Tales eventos pueden ser requerimientos de recursos, errores de tiempo de ejecucin en los programas e interrupciones de los dispositivos perifricos. Por lo tanto el SO debe ser escrito para manejar cualquier secuencia de eventos probable. e. Multiplexado. Una tcnica en la que el tiempo es dividido en varios intervalos donde un recurso es asignado a un proceso durante cada intervalo. Algunas otras caractersticas deseables son las siguientes: 1. Eficiencia. Algunos de los criterios a tomar en cuenta son: a) Tiempo mnimo entre procesos.

10

Diseo y simulacin de sistemas operativos Eugenio Jacobo Hernndez Valdelamar

2.

3.

4. 5. 6.

b) Tiempo de respuesta (en sistemas multiusuario) c) Utilizacin de recursos. d) Libre de errores. Fcil mantenimiento. Debe ser posible mantener un SO (mejorndolo o corrigiendo errores) sin emplear un ejercito de programadores, por lo que el sistema debe ser modular, con interfaces claras y bien definidas entre los mdulos, y contar con una documentacin completa. Tamao. El espacio utilizado para cargar en memoria al sistema operativo, es desperdiciado en lo que respecta a procesos productivos. Si el sistema es grande, se tiene la desventaja de que sea ms susceptible a errores, y tome ms tiempo de codificacin que uno pequeo. Interoperabilidad. Es la habilidad del sistema de facilitar intercambio de informacin entre los componentes heterogneos en el sistema. Transparencia. Es la propiedad que permite a los usuarios ver al conjunto de mquinas en las que esta trabajando como una sola mquina. Autonoma. Es la independencia de los sistemas operativos con respecto al hardware, lo que permite que el sistema trabaje con unidades autnomas.

En la siguiente seccin se revisan los principales conceptos relacionados a los sistemas operativos, los cuales sern explorados con ms detalle en captulos subsecuentes.

1.2

Principales conceptos de los Sistemas Operativos

Bsicamente el sistema operativo ensea a la computadora como comportarse, es decir, como controlar y coordinar su procesador, la memoria, los dispositivos perifricos y como comunicarse con los usuarios.

Figura 1.3 Soporte de software necesario para aprovechar los recursos del hardware.

Obras consultadas: [1.11] [1.12]

11

Diseo y simulacin de sistemas operativos Eugenio Jacobo Hernndez Valdelamar

La idea de crear un sistema tan grande y complejo como un SO, solo puede manejarse partindolo en pequeos mdulos, los cuales poseen una funcin bien definida en el sistema, con sus correspondientes entradas y salidas. Hardware Procesador Ejemplos de servicios de SO Administracin de Procesos, Planificacin (scheduling), Excepciones, Proteccin, Sincronizacin Administracin, Proteccin, Memoria Virtual Concurrencia con el CPU, Manejo de Interrupciones Administracin, Persistencia Seguridad en red Sistema de archivos distribuido Abstraccin del usuario Proceso

Memoria Dispositivos de E/S Sistema de archivos

Espacio de direcciones Terminal, Mouse, Impresora, (Llamadas al sistema) Archivos Llamadas al sistema, llamado remoto de procedimientos (RPC), Acceso transparente de archivos (Transparent file sharing)

Sistemas distribuidos

Tabla 1. Recursos de la arquitectura, administracin del sistema operativo y abstracciones del usuario.En las siguientes secciones se define el objetivo y actividades de cada uno de esos mdulos (el criterio de seleccin de los mdulos expuestos es que en su mayora aparecen de forma constante en casi cualquier sistema operativo).

1.2.1 Administracin de procesosUno de los conceptos fundamentales en casi todo SO es el de proceso. Como se mencion anteriormente, un proceso es un programa en ejecucin, y el SO debe encargarse de proveer los medios para controlar dicha ejecucin. De ah nace el concepto de administracin de procesos. El microprocesador no hace las cosas por si solo; el sistema operativo es el que determina que proceso se debe ejecutar y cuanto tiempo debe estar ejecutndose. A todo esto se le denomina administracin de procesos. El SO es responsable de las siguientes actividades relacionadas con la administracin de procesos: Creacin y borrado de procesos del sistema y el usuario. La suspensin y rehabilitacin de procesos. Proveer mecanismos para la sincronizacin de procesos. Proveer mecanismos para la comunicacin entre procesos (IPC). Proveer mecanismos para el manejo de bloqueos (deadlocks).

12

Diseo y simulacin de sistemas operativos Eugenio Jacobo Hernndez Valdelamar

1.2.2 Administracin de memoriaPara que los programas se ejecuten, deben ser almacenados en la memoria de la mquina, por lo que el SO debe ser capaz de interactuar con la memoria primaria de la computadora, as como con las abstracciones que el sistema realice con ella (p.ej. estructuras de datos) para gestionar los datos que van entrando y saliendo de la memoria de la computadora (fig. 1.4).

Figura 1.4 Esquema de los diferentes tipos de memoria en un sistema de cmputo.El SO es responsable de las siguientes actividades relacionadas con la administracin de memoria: Mantener un seguimiento de que partes de la memoria estn uso y por quin. Decidir que procesos sern cargados en memoria cuando exista espacio disponible. Asignar y quitar espacio en memoria como sea requerido.

Una de las abstracciones ms importantes relacionadas con la administracin de la memoria, es el concepto de memoria virtual. La administracin de la memoria virtual se encarga de mantener el mapeo de la memoria virtual y fsica, decidir en el tamao de la memoria asignada a los procesos y reforzar la poltica de reemplazo.

1.2.3 La gestin de la integridadHay que tener en cuenta que cualquier programa puede, aunque no sea deseable, hacer mencin a recursos, direcciones y otros accesos indebidos; si dichos accesos no son controlados, se producira un error que dara como origen algo que no nos podramos imaginar (reinicio de la mquina, bloqueo, etc.). Para evitar todos estos problemas, los sistemas operativos tienen distintos niveles de seguridad:

a. En la memoria: Hemos dicho que los programas se cargan en la memoria, pero imaginemosque un programa hace una escritura en una zona de memoria que es de otro programa, para evitar esto el sistema operativo realiza una gestin de la memoria entre los usuarios.

b. En el uso del CPU: Los programas se dividen en procesos que se ejecutan en elmicroprocesador (CPU), pero si varios procesos intentaran ejecutarse a la vez se producira un

13

Diseo y simulacin de sistemas operativos Eugenio Jacobo Hernndez Valdelamar

efecto imprevisible. Para ello el sistema operativo controla la ejecucin de los procesos, la duracin de cada uno de ellos y cuando deben entrar o salir de la ejecucin. c. En el uso de las entradas y salidas (E/S): En realidad no es que el sistema operativo controle la E/S aunque si lo haga cuando es necesario, lo que ocurre es que si hay un proceso ejecutndose en la cpu y va a imprimir en la impresora algo, el sistema operativo, bloquea el uso de la impresora hasta que el proceso no termine con ella para que no haya otro proceso enviando informacin a la impresora por que si fuera as entonces provocara un conflicto en la impresora, y al mismo tiempo saca del procesador el proceso que esta imprimiendo, por que sino los dems procesos tendran que esperar a que el proceso terminara de imprimir para seguir con el CPU y entonces el CPU estara bloqueado perdiendo tiempo intilmente, por que el proceso consume el tiempo del procesador, cuando en realidad no hace nada con l pues est imprimiendo.

1.2.4 Administracin de dispositivosPuesto que las configuraciones de hardware de las computadoras varan segn las necesidades y desarrollo tecnolgico, un rea de constante desarrollo es la construccin de nuevos dispositivos perifricos que permitan a las computadoras expandir sus capacidades bsicas. Para ello, es necesario que un SO cuente con subsistemas que permitan acceder a tales dispositivos. Dichos subsistemas son los siguientes: 1. Administracin del sistema de E/S (I/O). Puesto que uno de los propsitos del SO es hacer transparente las peculiaridades del hardware al usuario, se tiene un sistema de E/S que consiste de: Una interfaz general dispositivo-controlador (device-driver). Manejadores para dispositivos especficos de hardware.

2. Manejadores de dispositivos (device drivers): Los manejadores son piezas de cdigo especiales que se encargan de la comunicacin de todos los perifricos de la computadora (como terminales, impresoras, discos, etc.) Debe existir un manejador especial para cada diferente tipo de dispositivo conectado, y puesto que hay tantas posibilidades y cada da aparecen nuevos perifricos, no se pueden construir directamente en el kernel. Es necesario hacerlos una parte diferente que pueda ser sustituida o removida de la computadora.

1.2.5 Almacenamiento secundarioTal vez los dispositivos perifricos ms usados, sean los de almacenamiento secundario (cintas, discos, etc.). Como la informacin se ha vuelto un bien vital para los usuarios, se requiere que los sistemas operativos provean servicios que hagan seguro, fcil y transparente el manejo y almacenamiento de informacin. Los servicios implementados por el SO son los siguientes: a. Administracin de almacenamiento secundario. El SO es responsable de las siguientes actividades relacionadas con la administracin de discos: Manejo del espacio libre.

14

Diseo y simulacin de sistemas operativos Eugenio Jacobo Hernndez Valdelamar

Distribucin de almacenamiento. Organizacin del disco.

b. Administracin de archivos. El SO es responsable de las siguientes actividades relacionadas con la administracin y organizacin de archivos: La creacin y borrado, de archivos y directorios. Bloqueo y proteccin de archivos y directorios. Soporte de operaciones primitivas para la manipulacin de archivos y directorios. El mapeo de archivos en almacenamiento secundario. El respaldo de archivos en un medio estable de almacenamiento.

La principal abstraccin que provee el SO para el manejo del almacenamiento secundario es el sistema de archivos, el cual permite ordenar los datos en una forma estructurada, fcil de recordar y manejar (p.ej. archivos de tamao variable, directorios, etc.). El sistema de archivos trabaja sobre los manejadores de dispositivos para proveer una interfaz abstracta con los diferentes manejadores. Define la forma de almacenar informacin en dispositivos de almacenamiento, por lo que no es necesario aprender un nuevo mtodo de almacenamiento para cada dispositivo posible.

1.2.6 Transmisin de datos e informacinAdems de almacenar informacin, otra necesidad imperiosa es la de transmitirla. Cuando las computadoras cuentan con los dispositivos necesarios, pueden ser conectadas entre si, formando redes. Nuevamente el SO debe ofrecer la capacidad de conectarse a estas redes, y transmitir y recibir informacin de forma segura. Para ello se necesitan: a. Servicios de Comunicacin en Red (networking). Se refiere a la conexin de mltiples procesadores por medio de una red, que puede ser configurada de diferentes maneras, y debe tomar en cuenta estrategias de conexin y ruteo, as como casos de contencin y seguridad, adems de dar soporte a varios protocolos y medios de comunicacin. b. Proteccin del sistema. Se refiere a mecanismos para controlar el acceso de programas, procesos o usuarios a los recursos definidos por un sistema de cmputo. c. Programas Auxiliares. Estos programas se encargan de ayudar al SO a llevar a cabo sus tareas. Estos programas pueden encargarse de controlar comunicaciones, seguridad, etc. Algunos son visibles como el programa de autentificacin de usuarios (login), pero muchos otros trabajan escondidos en el trasfondo (en algunos sistemas son llamados demonios).

1.2.7 Ncleo del sistema (Kernel)Una abstraccin fundamental hecha con base en los conceptos anteriores, es la de organizar todos estos mdulos de forma que pueda contarse con un mayor o menor nmero de servicios por parte del SO. Tal abstraccin es llamada ncleo o kernel del sistema operativo.

15

Diseo y simulacin de sistemas operativos Eugenio Jacobo Hernndez Valdelamar

El kernel (o ncleo) es la parte del sistema que en realidad se encarga de los aspectos ms bsicos de la funcionalidad, principalmente con la forma en que la computadora se comportar. Comnmente, el kernel establecer las polticas de trabajo (tarea simple o multi-tarea; mtodos de planificacin), como manejar a los componentes bsicos (p.ej. polticas de manejo de memoria como el uso de la memoria virtual), las medidas de seguridad bsica y como iniciar, comunicarse y apagar todos los dems componentes. Toda esta gestin la realiza para atender al funcionamiento y peticiones de los trabajos que se ejecutan en el sistema. El ncleo normalmente representa slo una pequea parte de lo que por lo general se piensa que es todo el sistema operativo, pero es el cdigo que ms se utiliza. Por esta razn el ncleo reside por lo regular en la memoria principal, mientras que otras partes del sistema operativo son cargadas en la memoria principal slo cuando se necesitan.

1.2.8 Comunicacin con el usuarioUna vez establecidos los conceptos relativos al control de los recursos de hardware y software, podemos hablar de la forma en que una computadora con sistema operativo se comunica con el usuario. a. Interfaz de usuario. La Interfaz de usuario es la parte del sistema que provee una forma en que la computadora capte y reaccione a las acciones del usuario, y transmita la informacin que el usuario produce. Es el componente que se encarga de traducir los datos binarios en nmeros y caracteres en la pantalla, o interpretar los cdigos binarios del teclado, y si se trata de una interfaz grafica de usuario (GUI), se encarga de dibujar las ventanas y otros objetos en la pantalla. Ntese que una computadora puede tener varias interfaces de usuario para adaptarse a diferentes modelos de terminales o preferencias del usuario. b. Shells - Sistema interprete de comandos (Command Language Interpreter, CLI). El SO esta diseado para trabajar en conjunto con otros programas, y no se pretende que sea accedido directamente por el usuario. As que por lo menos se requiere un programa que sirva de interfaz entre el usuario y el sistema para permitir el uso de la computadora. La mayor parte de los sistemas operativos cuentan con uno o mas de estos programas (los cuales solo reciben comandos y los traducen en instrucciones del SO). Varias ordenes le son dadas al SO por medio de sentencias de control. Cuando un nuevo trabajo comienza en un sistema batch, o cuando un usuario accede en un sistema de tiempo compartido, un programa que lee e interpreta dichas ordenes es ejecutado inmediatamente. Se le llama tambin intrprete de tarjetas de control, intrprete de comandos en lnea, el shell (en UNIX), etc. Su funcin es bastante simple: obtener el siguiente comando y ejecutarlo.

Obras consultadas: [1.29]

16

Diseo y simulacin de sistemas operativos Eugenio Jacobo Hernndez Valdelamar

Figura 1.5 Niveles de interaccin de un shellLos SOs se distinguen frecuentemente en el rea de interpretacin de comandos, por interpretes ms amigables que hacen ms agradable el sistema a los usuarios. Un ejemplo es el intrprete de Mac, que es un sistema basado en ventanas que es exclusivamente activado en ciertas regiones (iconos) por el ratn. c. Interfaz grfica de usuario (GUIs -Graphical User Interfaces). Las GUIs despliegan objetos grficos en la pantalla (imgenes, iconos, botones, etc.) y el usuario interacta con ellos usando un dispositivo apuntador (por lo general un ratn (mouse)). Las interfaces grficas modernas usan una "metfora de escritorio" en las que reas conocidas como ventanas, contienen actividades de trabajo, como hojas de papel sobre un escritorio real. Las GUIs hacen uso extensivo de los grficos por computadora para organizar el rea de trabajo del usuario, y presentan formas intuitivas para realizar diversas tareas. En 1968 Doug Engelbart del Stanford Research Center's Augmentation Research Center, patrocinado por la Agencia de Proyectos de Investigacin Avanzados del Departamento de Defensa (ARPA), instrument el primer sistema de ventanas (windowing system). En 1970, investigadores del Centro de Investigacin de Palo Alto (XEROX PARC) disearon la primera computadora con interfaz grfica (Alto Computer).

17

Diseo y simulacin de sistemas operativos Eugenio Jacobo Hernndez Valdelamar

(a)

(b)

Figura 1.6 Ejemplos de interfaz grfica de usuario: (a) el sistema NeXT; (b) Mac OS X.Por lo anterior, se puede decir que aunque el SO es una parte muy importante del sistema de computo, este queda fuera de la vista de los usuarios, los cuales lo notan de forma indirecta por medio de las capacidades que el SO provee y las cosas que permite y no permite hacer, cuando lo acceden por medio de otros programas como los shells o las GUIs, que son los que comprenden e interpretan las acciones que el usuario quiere realizar. Para entender cmo es que aparecieron este tipo de sistemas, revisaremos la historia de la computacin con la intencin de entender las motivaciones que condujeron al desarrollo de los sistemas operativos.

1.3

Desarrollo histrico de los Sistemas Operativos

Para tener una perspectiva completa de los sistemas operativos, es importante revisar su historia, la cual es paralela al desarrollo del hardware de las computadoras, pues los nuevos avances requeran de nuevas soluciones. Basado en algunas referencias relativas a la historia y evolucin de las com