710

CARRETERO Jesus - Sistemas Operativos Libro

Embed Size (px)

Citation preview

SISTEMAS OPERATIVOS Una visin aplicada

Digitalizacin realizada con propsito acadmico

CONSULTOR EDITORIAL REA DE INFORMTICA Y COMPUTACIN Gerardo Quiroz Vieyra Ingeniero de Comunicaciones y Electrnica Por la ESIME del Instituto Politcnico Nacional Profesor de la Universidad Autnoma Metropolitana Unidad Xochimilco MXICO

Digitalizacin realizada con propsito acadmico

SISTEMAS OPERATIVOS Una visin aplicadaJess Carretero Prez Flix Garca CarballeiraUniversidad Carlos II de Madrid

Pedro Miguel Anasagasti Fernando Prez CostoyaUniversidad Politcnica de Madrid

MADRID * BUENOS AIRES * CARACAS * GUATEMALA * LISBOA * MXICO NUEVA YORK * PANAM * SAN JUAN * SANTAF DE BOGOT * SANTIAGO * SAO PAULO AUCLAND * HAMBURGO * LONDRES * MILAN * MONTREAL * NUEVA DELHI PARS * SAN FRANCISCO * SIDNEY * SINGAPUR * ST. LUIS * TOKIO * TORONTO

Digitalizacin realizada con propsito acadmico

SISTEMAS OPERATIVOS. Una visi{on aplicada No est permitida la reproduccin total o parcial de este libro, ni su tratamiento informtico, ni la transmisin de ninguna forma o cualquier medio, ya sea electrnico, mecnico, por fotocopia, por registro u otros mtodos, sin el permiso previo y por escrito de los titulares del Copyright. DERECHOS RESERVADOS 2001, respecto a la primera edicin en espaol, por McGRAW-HILL/INTERAMERICANA DE ESPAA, S.A.U. Edificio Valrealty, 1. planta Basauri, 17 28023 Aravaca (Madrid) ISBN: 84-481-3001-4 Depsito legal: M. 13.413-2001 Editora: Concepcin Fernndez Madrid Diseo de cubierta: Dima Preimpresin: MonoComp, S.A. Impreso en Impresos y revistas, S.A. (IMPRESA) IMPRESO EN ESPAA PRINTED IN SPAIN

Digitalizacin realizada con propsito acadmico

ContenidoPrlogo 1. CONCEPTOS ARQUITECTNICOS DE LA COMPUTADORA 1.1. 1.2. Estructura y funcionamiento de la computadora Modelo de programacin de la computadora 1.2.1. Niveles de ejecucin 1.2.2. Secuencia de funcionamiento de la computadora 1.2.3. Registros de control y estado 1.3. Interrupciones 1.4. El reloj 1.5. Jerarqua de memoria 1.5.1. Migracin de la informacin 1.5.2. Parmetros caractersticos de la jerarqua de memoria 1.5.3. Coherencia 1.5.4. Direccionamiento 1 .5.5. La proximidad referencial 1.6. La memoria virtual 1.6.1. Concepto de memoria virtual 1.6.2. La tabla de pginas 1.6.3. Caso de varios programas activos 1.6.4. Asignacin de memoria principal y memoria virtual 1.7. Entrada/salida 1.7.1. Perifricos 1.7.2. E/S y concurrencia 1.7.3. E/S y memoria virtual 1.8. Proteccin 1.8.1. Mecanismos de proteccin del procesador 1.8.2. Mecanismos de proteccin de memoria 1.9. Multiprocesador y multicomputadora 1.10. Puntos a recordar 1.11. Lecturas recomendadas 1.12. Ejercicios XV 1 2 3 4 5 6 7 9 10 11 12 12 12 13 15 16 18 22 22 23 23 25 27 27 27 28 30 31 31 32

Digitalizacin realizada con propsito acadmico

v

vi

Contenido

2.

INTRODUCCIN A LOS SISTEMAS OPERATIVOS 2.1. Qu es un sistema operativo 2.1.1. Mquina desnuda 2.1.2. Funciones del sistema operativo 2.1.3. Concepto de usuario y de grupo de usuarios Arranque de la computadora Componentes y estructura del sistema operativo 2.3.1. Componentes del sistema operativo 2.3.2. Estructura del sistema operativo Gestin de procesos 2.4.1. Servicios de procesos Gestin de memoria 2.5.1. Servicios Comunicacin y sincronizacin entre procesos 2.6.1. Servicios de comunicacin y sincronizacin Gestin de la E/S 2.7.1. Servicios Gestin de archivos y directorios 2.8.1. Servicio de archivos 2.8.2. Servicio de directorios 2.8.3. Sistema de archivos Seguridad y proteccin Activacin del sistema operativo Interfaz del programador 2.11.1. POSIX 2.11.2. Win32 Interfaz de usuario del sistema operativo 2.12.1. Funciones de la interfaz de usuario 2.12.2. Interfaces alfanumricas 2.12.3. Interfaces grficas Historia de los sistemas operativos Puntos a recordar Lecturas recomendadas Ejercicios

33 34 34 34 37 38 41 41 42 44 45 46 47 47 48 49 50 50 50 53 55 55 56 59 59 60 61 62 63 65 67 72 74 74

2.2. 2.3. 2.4. 2.5. 2.6. 2.7. 2.8.

2.9. 2.10. 2.11. 2.12.

2.13. 2.14. 2.15. 2.16.

3. PROCESOS 77 3.1. Concepto de proceso 78 3.2. Multitarea 79 3.2.1. Base de la multitarea 80 3.2.2. Ventajas de la multitarea 82 3.2.3. Grado de multiprogramacin y necesidades de memoria principal 82 3.3. Informacin del proceso 84 3.3.1. Estado del procesador 84 3.3.2. Imagen de memoria del proceso 85 3.3.3. Informacin del BCP 90 3.3.4. Tablas del sistema operativo 91 3.4. Formacin de un proceso 93

Digitalizacin realizada con propsito acadmico

Contenido

vii

3.5. 3.6.

3.7.

3.8. 3.9. 3.10. 3.11.

3.12.

3.13. 3.14. 3.15. 4.

Estados del proceso 3.5.1. Cambio de contexto Procesos ligeros 3.6.1. Estados del proceso ligero 3.6.2. Paralelismo 3.6.3. Diseo con procesos ligeros Planificacin 3.7.1. Algoritmos de planificacin 3.7.2. Planificacin en POSIX 3.7.3. Planificacin en Windows NT/2000 Seales y excepciones 3.8.1. Seales 3.8.2. Excepciones Temporizadores Servidores y demonios Servicios POSIX 3.11.1. Servicios POSIX para la gestin de procesos 3.11.2. Servicios POSIX de gestin de procesos ligeros 3.11.3. Servicios POSIX para la planificacin de procesos 3.11.4. Servicios POSIX para gestin de seales y temporizadores Servicios de W1N32 3.12.1. Servicios de Win32 para la gestin de procesos 3.12.2. Servicios de Win32 para la gestin de procesos ligeros 3.12.3. Servicios de planificacin en Win32 3.12.4. Servicios de Win32 para el manejo de excepciones 3.12.5. Servicios de temporizadores Puntos a recordar Lecturas recomendadas Ejercicios

93 95 98 99 100 101 102 105 107 108 110 110 111 112 112 114 114 131 136 139 146 146 152 154 155 157 159 160 160 163 164 172 172 178 182 183 186 187 188 197 198 199 201 204 205 207 208

GESTIN DE MEMORIA 4.1. Objetivos del sistema de gestin de memoria 4.2. Modelo de memoria de un proceso 4.2.1. Fases en la generacin de un ejecutable 4.2.2. Mapa de memoria de un proceso 4.2.3. Operaciones sobre regiones 4.3. Esquemas de memoria basados en asignacin contigua 4.4. Intercambio 4.5. Memoria virtual 4.5.1. Paginacin 4.5.2. Segmentacin 4.5.3. Segmentacin paginada 4.5.4. Paginacin por demanda 4.5.5. Polticas de reemplazo 4.5.6. Poltica de asignacin de marcos de pgina 4.5.7. Hiperpaginacin 4.5.8. Gestin del espacio de swap 4.5.9. Operaciones sobre las regiones de un proceso

Digitalizacin realizada con propsito acadmico

viii

Contenido

4.6. 4.7.

Archivos proyectados en memoria Servicios de gestin de memoria 4.7.1. Servicios genricos de memoria 4.7.2. Servicios de memoria de POSIX 4.7.3. Servicios de memoria de Win32 4.8. Puntos a recordar 4.9. Lecturas recomendadas 4.10. Ejercicios 5. COMUNICACIN Y SINCRONIZACIN DE PROCESOS 5.1. Procesos concurrentes 5.1.1. Tipos de procesos concurrentes 5.2. Problemas clsicos de comunicacin y sincronizacin 5.2.1. El problema de la seccin crtica 5.2.2. Problema del productor-consumidor 5.2.3. El problema de los lectores-escritores 5.2.4. Comunicacin cliente-servidor 5.3. Mecanismos de comunicacin y sincronizacin 5.3.1. Comunicacin mediante archivos 5.3.2. Tuberas 5.3.3. Sincronizacin mediante seales 5.3.4. Semforos 5.3.5. Memoria compartida 5.3.6. Mutex y variables condicionales 5.4. Paso de mensajes 5.5. Aspectos de implementacin de los mecanismos de sincronizacin 5.5.1. Implementacin de la espera pasiva 5.6. Interbloqueos 5.7. Servicios POSIX 5.7.1. Tuberas 5.7.2. Semforos POSIX 5.7.3. Mutex y variables condicionales en POSIX 5.7.4. Colas de mensajes POSIX 5.8. Servicios Wjn32 5.8.1. Tuberas 5.8.2. Secciones crticas 5.8.3. Semforos 5.8.4. Mutex y eventos 5.8.5. Mailslots 5.9. Puntos a recordar 5.10. Lecturas recomendadas 5.11. Ejercicios 6. INTERBLOQUEOS 6.1. Los interbloqueos: una historia basada en hechos reales 6.2. Los interbloqueos en un sistema informtico 6.2.1. Tipos de recursos

210 212 212 212 216 219 220 221 223 224 225 226 226 230 230 231 232 232 233 237 237 242 243 248 253 254 257 258 258 265 270 274 285 286 294 295 299 303 305 306 306 309 310 311 311

Digitalizacin realizada con propsito acadmico

Contenido

ix

6.3.

Un modelo del sistema 6.3.1. Representacin mediante un grafo de asignacin de recursos 6.3.2. Representacin matricial 6.4. Definicin y caracterizacin del interbloqueo 6.4.1. Condicin necesaria y suficiente para el interbloqueo 6.5. Tratamiento del interbloqueo 6.6. Deteccin y recuperacin del interbloqueo 6.6.1. Deteccin del interbloqueo 6.6.2. Recuperacin del interbloqueo 6.7. Prevencin del interbloqueo 6.7.1. Exclusin mutua 6.7.2. Retencin y espera 6.7.3. Sin expropiacin 6.7.4. Espera circular 6.8. Prediccin del interbloqueo 6.8.1. Concepto de estado seguro 6.8.2. Algoritmos de prediccin 6.9. Tratamiento del interbloqueo en los sistemas operativos 6.10. Puntos a recordar 6.11. Lecturas recomendadas 6.12. Ejercicios

317 318 322 324 325 326 327 328 334 334 335 336 336 337 337 338 339 345 347 349 349

7. ENTRADA/SALIDA 351 7.1. Introduccin 352 7.2. Caracterizacin de los dispositivos de E/S 354 7.2.1. Conexin de un dispositivo de E/S a una computadora 354 7.2.2. Dispositivos conectados por puertos o proyectados en memoria 355 7.2.3. Dispositivos de bloques y de caracteres 356 7.2.4. E/S programada o por interrupciones 357 7.2.5. Mecanismos de incremento de prestaciones 361 7.3. Arquitectura del sistema de entrada/salida 363 7.3.1. Estructura y componentes del sistema de E/S 363 7.3.2. Software de E/S 364 7.4. Interfaz de aplicaciones 369 7.5. Almacenamiento secundario 373 7.5.1. Discos 374 7.5.2. El manejador de disco 379 7.5.3. Discos en memoria 384 7.5.4. Fiabilidad y tolerancia a fallos 385 7.6. Almacenamiento terciario 387 7.6.1. Tecnologa para el almacenamiento terciario 388 7.6.2. Estructura y componentes de un sistema de almacenamiento terciario 389 7.6.3. Estudio de caso: Sistema de almacenamiento de altas prestaciones (HPSS) 391 7.7. El reloj 393 7.7.1. El hardware del reloj 393 7.7.2. El software del reloj 394

Digitalizacin realizada con propsito acadmico

x

Contenido7.8. El terminal 7.8.1. Modo de operacin del terminal 7.8.2. El hardware del terminal 7.8.3. El software del terminal 7.9. La red 7.10. Servicios de entrada/salida 7.10.1. Servicios genricos de entrada/salida 7.10.2. Servicios de entrada/salida en POSIX 7.10.3. Servicios de entrada/salida en Win32 7.11. Puntos a recordar 7.12. Lecturas recomendadas 7.13. Ejercicios 397 397 398 400 404 405 405 406 410 414 416 417 419 420 420 421 423 424 427 428 429 429 432 435 437 438 439 440 443 445 449 451 451 454 456 458 459 461 465 468 469 472 474 477 479 483

8.

GESTIN DE ARCHIVOS Y DIRECTORIOS 8.1. Visin de usuario del sistema de archivos 8.2. Archivos 8.2.1. Concepto de archivo 8.2.2. Nombres de archivos 8.2.3. Estructura de un archivo 8.2.4. Mtodos de acceso 8.2.5. Semnticas de coutilizacin 8.3. Directorios 8.3.1. Concepto de directorio 8.3.2. Estructuras de directorio 8.3.3. Nombres jerrquicos 8.3.4. Construccin de la jerarqua de directorios 8.4. Servicios de archivos y directorios 8.4.1. Servicios genricos para archivos 8.4.2. Servicios POSIX para archivos 8.4.3. Ejemplo de uso de servicios POSIX para archivos 8.4.4. Servicios Win32 para archivos 8.4.5. Ejemplo de uso de servicios Win32 para archivos 8.4.6. Servicios genricos de directorios 8.4.7. Servicios POSIX de directorios 8.4.8. Ejemplo de uso de servicios POSIX para directorios 8.4.9. Servicios Win32 para directorios 8.4.10. Ejemplo de uso de servicios Win32 para directorios 8.5. Sistemas de archivos 8.5.1. Estructura del sistema de archivos 8.5.2. Otros tipos de sistemas de archivos 8.6. El servidor de archivos 8.6.1. Estructura del servidor de archivos 8.6.2. Estructuras de datos asociadas con la gestin de archivos 8.6.3. Mecanismos de asignacin y correspondencia de bloques a archivos 8.6.4. Mecanismos de gestin de espacio libre 8.6.5. Mecanismos de incremento de prestaciones 8.6.6. Montado de sistemas de archivos e interpretacin de nombres

Digitalizacin realizada con propsito acadmico

Contenido8.6.7. Fiabilidad y recuperacin 8.6.8. Otros servicios Puntos a recordar Lecturas recomendadas Ejercicios

xi485 489 491 493 493 497 498 499 500 501 501 502 503 504 504 505 505 507 508 509 509 512 515 518 519 519 522 524 524 526 526 528 531 534 535 538 540 540 541 543 545 548 550 552 556

8.7. 8.8. 8.9. 9.

SEGURIDAD Y PROTECCIN 9.1. Conceptos de seguridad y proteccin 9.2. Problemas de seguridad 9.2.1. Uso indebido o malicioso de programas 9.2.2. Usuarios inexpertos o descuidados 9.2.3. Usuarios no autorizados 9.2.4. Virus 9.2.5. Gusanos 9.2.6. Rompedores de sistemas de proteccin 9.2.7. Bombardeo 9.3. Polticas de seguridad 9.3.1. Poltica militar 9.3.2. Polticas comerciales 9.3.3. Modelos de seguridad 9.4. Diseo de sistemas operativos seguros 9.4.1. Principios de diseo y aspectos de seguridad 9.4.2. Tcnicas de diseo de sistemas seguros 9.4.3. Controles de seguridad externos al sistema operativo 9.4.4. Controles de seguridad del sistema operativo 9.5. Criptografa 9.5.1. Conceptos bsicos 9.5.2. Sistemas de clave privada y sistemas de clave pblica 9.6. Clasificaciones de seguridad 9.6.1. Clasificacin del Departamento de Defensa (D0D) de Estados Unidos 9.7. Seguridad y proteccin en sistemas operativos de propsito general 9.7.1. Autenticacin de usuarios 9.7.2. Palabras clave o contraseas 9.7.3. Dominios de proteccin 9.7.4. Matrices de proteccin 9.7.5. Listas de control de accesos 9.7.6. Capacidades 9.8. Servicios de proteccin y seguridad 9.8.1. Servicios genricos 9.8.2. Servicios POSIX 9.8.3. Ejemplo de uso de los servicios de proteccin de POSIX 9.8.4. Servicios de Win32 9.8.5. Ejemplo de uso de los servicios de proteccin de Win32 9.9. El sistema de seguridad de Windows NT 9.10. Kerberos 9.11. Puntos a recordar

Digitalizacin realizada con propsito acadmico

xii

Contenido9.12. Lecturas recomendadas 9.13. Ejercicios 557 557 561 562 562 563 564 566 570 570 582 592 593 593 596 598 598 599 601 601 602 603 604 606 607 609 609 611 612 613 614 615 616 616 617 617 619 620 620 621

10.

INTRODUCCIN A LOS SISTEMAS DISTRIBUIDOS 10.1. Sistemas distribuidos 10.1.1. Caractersticas de un sistema distribuido 10.1.2. Redes e interconexin 10.1.3. Protocolos de comunicacin 10.2. Sistemas operativos distribuidos 10.3. Comunicacin de procesos en sistemas distribuidos 10.3.1. Sockets 10.3.2. Llamadas a procedimientos remotos 10.3.3. Comunicacin de grupos 10.4. Sincronizacin de procesos en sistemas distribuidos 10.4.1. Ordenacin de eventos en sistemas distribuidos 10.4.2. Exclusin mutua en sistemas distribuidos 10.5. Gestin de procesos 10.5.1. Asignacin de procesos a procesadores 10.5.2. Algoritmos de distribucin de la carga 10.5.3. Planificacin de procesos en sistemas distribuidos 10.6. Sistemas de archivos distribuidos 10.6.1. Nombrado 10.6.2. Mtodos de acceso remotos 10.6.3. Utilizacin de cache en sistemas de archivos distribuidos 10.7. Gestin de memoria en sistemas distribuidos 10.8. Puntos a recordar 10.9. Lecturas recomendadas 10.10. Ejercicios ESTUDIO DE CASOS: LINUX 11.1. Historia de LINUX 11.2. Caractersticas y estructura de LINUX 11.3. Gestin de procesos 11.4. Gestin de memoria 11.5. Entrada/salida 11.6. Sistema de archivos 11.7. Puntos a recordar 11.8. Lecturas recomendadas ESTUDIO DE CASOS: WINDOWS NT 12.1. Introduccin 12.2. Principios de diseo de Windows NT 12.3. Arquitectura de Windows NT

11.

12.

Digitalizacin realizada con propsito acadmico

Contenido12.4. El ncleo de Windows NT 12.5. El ejecutivo de Windows NT 12.5.1. Gestor de objetos 12.5.2. Gestor de procesos 12.5.3. Gestor de memoria virtual 12.5.4. Llamada a procedimiento local 12.5.5. Gestor de entrada/salida 12.6. Subsistemas de entorno de ejecucin 12.7. Sistemas de archivos de Windows NT 12.7.1. Sistemas de archivos tipo FAT 12.7.2. Sistemas de archivos de alto rendimiento (HPFS) 12.7.3. NTFS 12.7.4. Comparacin de los sistemas de archivos PAT, HPFS y NTFS 12.8. El subsistema de seguridad 12.8.1. Autenticacin de usuarios 12.8.2. Listas de control de acceso en Windows NT 12.9. Mecanismos para tolerancia a fallos en Windows NT 12.10. Puntos a recordar 12.11. Lecturas recomendadas A. B. C. Comparacin de los servicios POSIX y Win32 Entorno de programacin de sistemas operativos Trabajos prcticos de sistemas operativos

xiii623 624 624 625 627 630 631 635 636 637 638 639 642 642 643 645 646 648 649 651 657 669 709 721

Bibliografa ndice

Digitalizacin realizada con propsito acadmico

o

Digitalizacin realizada con propsito acadmico

Prlogo

Los sistemas operativos son una parte esencial de cualquier sistema de computacin, por lo que todos los planes de estudio de informtica incluyen uno o ms cursos sobre sistemas operativos. La mayora de libros de sistemas operativos usados en estos cursos incluyen gran cantidad de teora general y aspectos de diseo, pero no muestran claramente cmo se usan. Este libro est pensado como un texto general de sistemas operativos, pudiendo cubrir tanto la parte introductoria como los aspectos de diseo de los mismos. En l se tratan todos los aspectos fundamentales de los sistemas operativos, tales como procesos, gestin de memoria, comunicacin y sincronizacin de procesos, entrada/salida, sistemas de archivos y seguridad y proteccin. Adems, en cada tema, se muestra la interfaz de programacin de los sistemas operativos POSIX y Win32, con ejemplos de uso de las mismas. Esta solucin permite que el lector no slo conozca los principios tericos, sino cmo se aplican en sistemas operativos reales.

CONTEXTO DE DESARROLLO DEL LIBROA principios de los noventa, los profesores del Departamento de Arquitectura y Tecnologa de la Facultad de Informtica de la Universidad de Politcnica de Madrid comenzaron a elaborar apuntes que incluan teora y problemas de Sistemas Operativos, con vistas a desarrollar un nuevo plan de estudios de informtica. Se revisaron cuidadosamente los planes de estudio existentes en dicha universidad, as como los de varias otras escuelas similares. Adems, se llev a cabo una revisin exhaustiva de bibliografa relacionada con los sistemas operativos. La motivacin para llevar a cabo este trabajo surgi de la insatisfaccin con los libros de texto existentes en su momento, que, en lneas generales, se caracterizaban por enfatizar en los siguientes aspectos: Teora general sobre sistemas operativos. Aspectos de diseo detallado, generalmente especficos de un sistema operativo. Desarrollo en un ambiente de sistemas operativos clsicos.

Comparando esta situacin con la del mundo real se observaban considerables diferencias: Demanda de los estudiantes para tener apoyo en las cuestiones tericas con ejemplos prcticos. Necesidad de conocer los sistemas operativos desde el punto de vista de programacin de sistemas. Visin generalista del diseo de los sistemas operativos, estudiando distintos sistemas.

Digitalizacin realizada con propsito acadmico

xv

xvi

Prlogo

Esta situacin obligaba a los autores a mezclar textos generales sobre sistemas operativos con otros libros que estudiaban sistemas operativos concretos y la forma de programarlos. Por esta razn, entre- otras, el cuerpo de los apuntes, mencionado anteriormente, fue creciendo y modernizndose hasta llegar a este libro.

ORGANIZACIN DEL LIBROEl libro est organizado en doce temas, cuyo ndice se muestra a continuacin. Su contenido cubre todos los aspectos de gestin de una computadora, desde la plataforma hardware hasta los sistemas distribuidos. Adems, se incluyen tres apndices. Los temas son los siguientes: Conceptos arquitectnicos de la computadora En este tema se hace una somera descripcin de la estructura y funcionamiento de una computadora, desde el punto de vista de la plataforma hardware. La motivacin para incluir este captulo es evitar la necesidad de que el lector posea conocimientos previos de estructura de computadoras. En l se tratan aspectos tales como el modelo de programacin de la computadora, tratamiento de interrupciones, jerarqua de memoria, entrada/salida y concurrencia. Adems, se comentan breve mente los mecanismos de proteccin hardware. Introduccin a los sistemas operativos En este tema se explica qu es un sistema operativo, cules son sus funciones principales, los tipos de sistemas operativos existentes actualmente y cmo se activa un sistema operativo. Tambin se introduce brevemente la estructura del sistema operativo y de sus componentes principales (procesos, memoria, archivos, comunicacin, etc.), que se describen en detalle en captulos posteriores. Adems, se ponen dos ejemplos concretos, como son LINUX y Windows NT. Para terminar, se muestra la interfaz de usuario y de programador del sistema operativo. Procesos El proceso es la entidad ms importante de un sistema operativo moderno. En este tema se estudia en detalle el concepto de proceso, la informacin asociada al mismo, sus posibles estados y las seales y temporizadores que pueden ser asociadas a un proceso. Un sistema operativo gestiona una coleccin de procesos que se ejecutan de forma concurrente. La planificacin de dichos procesos es crucial para la gestin de una computadora. Es esencial explotar los recursos de forma eficiente, equitativa y evitar bloqueos entre procesos. Adems, se estudia en este captulo el concepto de proceso ligero (thread) y su influencia sobre los aspectos anteriores del sistema. Todo ello se complementa con ejemplos de uso en POSIX y Windows NT Gestin de memoria Un proceso en ejecucin reside siempre en la memoria de la computadora. Por tanto, gestionar dicha memoria de forma eficiente es un aspecto fundamental de cualquier sistema operativo. En este tema se estudian los requisitos de la gestin de memoria, el modelo de memoria de un proceso,

Digitalizacin realizada con propsito acadmico

Prlogo

xvii

cmo se genera dicho modelo y diversos esquemas de gestin de memoria, incluyendo la memoria virtual. Este tema est relacionado con el Captulo 7, debido a que la gestin de la memoria virtual se apoya en los discos como medio auxiliar de almacenamiento de la imagen de los procesos que no cabe en memoria principal. Al final del tema se muestran los servicios de gestin de memoria existentes en POSIX y Win32 y algunos ejemplos de uso de los mismos. Comunicacin y sincronizacin de procesos Los procesos no son entidades aisladas, sino que en muchos casos cooperan entre s y compiten por los recursos. El sistema operativo debe ofrecer mecanismos de comunicacin y sincronizacin de procesos concurrentes. En este tema se muestran los principales mecanismos usados en sistemas operativos, tales como tuberas, semforos o el paso de mensajes, as como algunos aspectos de implementacin de los mismos. Al final del tema se muestran los servicios de comunicacin y sincronizacin existentes en POSIX y Win32 y algunos ejemplos de uso de los mismos. Interbloqueos Las comunicaciones, el uso de recursos compartidos y las sincronizaciones son causas bloqueos mutuos entre procesos, o interbloqueos. En este captulo se presenta el concepto interbloqueo, as como los principales mtodos de modelado de interbloqueos. Adems, describen los principales algoritmos existentes para gestin de interbloqueos, incluyendo los prevencin, deteccin y prediccin de interbloqueos. Entrada/salida El procesador de una computadora necesita relacionarse con el mundo exterior. Esta relacin se lleva a cabo mediante los dispositivos de entrada/salida (E/S) conectados a la computadora. El sistema operativo debe ofrecer una interfaz de acceso a dichos dispositivos y gestionar los detalles de bajo nivel de los mismos. En este tema se muestran aspectos del hardware y el software de E/S, estudiando una amplia gama de dispositivos, tales como los de almacenamiento secundario y terciario, los relojes o el terminal. Al final del tema se muestran los servicios de entrada/salida existentes en POSIX y Win32 y algunos ejemplos de uso de los mismos. Gestin de archivos y directorios El sistema operativo debe proporcionar al usuario mecanismos de alto nivel para acceder a la informacin existente en los dispositivos de almacenamiento. Para ello, todos los sistemas operativos incluyen un sistema de gestin de archivos y directorios. El archivo es la unidad fundamental de almacenamiento que maneja el usuario. El directorio es la unidad de estructuracin del conjunto de archivos. En este tema se muestran los conceptos fundamentales de archivos y directorios, la estructura de sus gestores y los algoritmos internos usados en los mismos. Al igual que en otros temas, se muestran los servicios de archivos y directorios existentes en POSIX y Win32 y algunos ejemplos de uso de los mismos. Seguridad y proteccin Un sistema de computacin debe ser seguro. El usuario debe tener la confianza de que las acciones internas o externas del sistema no van a ser un peligro para sus datos, aplicaciones o para las actividades de otros usuarios. El sistema operativo debe proporcionar mecanismos de proteccin de de se de

Digitalizacin realizada con propsito acadmico

xviii

Prlogo

entre los distintos procesos que ejecutan en un sistema y entre los distintos sistemas que estn conectados entre s. En este tema se exponen los conceptos de seguridad y proteccin, posibles problemas de seguridad, mecanismos de diseo de sistemas seguros, los niveles de seguridad que puede ofrecer un sistema y los controles existentes para verificar si el estado del sistema es seguro. Adems, se estudian los mecanismos de proteccin que se pueden usar para controlar el acceso a los distintos recursos del sistema, Al final del tema se muestran los servicios de proteccin existen en POSIX y Win32 y algunos ejemplos de uso de los mismos. Introduccin a los sistemas distribuidos Los sistemas de computacin actuales raramente estn aislados. Es habitual que estn conectados formando conjuntos de mquinas que no comparten la memoria ni el reloj, es decir, sistemas distribuidos. Este tema presenta una breve introduccin a dichos sistemas, estudiando las caractersticas de los sistemas distribuidos, sus problemas de diseo, su estructura y sus distintos elementos (redes, comunicacin, memoria distribuida, sistemas de archivo distribuido, etc.). Tambin se muestran distintas tcnicas de diseo de aplicaciones cliente-servidor en sistemas distribuidos. Estudio de casos: LINUX Este captulo muestra en detalle los aspectos de LINUX desarrollados a lo largo del libro. Para ello se describe, tema por tema, cmo es la arquitectura del sistema operativo LINUX, cmo son los procesos de LINUX, sus mecanismos de comunicacin y seguridad, etc. Estudio de casos: Windows NT Este captulo muestra en detalle los aspectos de Windows NT desarrollados a lo largo del libro. Para ello se describe, tema por tema, cmo es la arquitectura del sistema operativo Windows NT, cmo son los procesos de Windows NT, su sistema de E/S, sus mecanismos de comunicacin y seguridad, etctera. Apndice A. Comparacin de los servicios POSIX y Win32 Tabla de llamadas al sistema de POSIX y Win32. Para cada funcin del sistema se muestra la llamada POSIX y la de Win32 que lleva a cabo dicha funcin, junto a un breve comentario de la misma. Apndice B. Entorno de programacin de sistemas operativos En este apndice se describe cmo editar, compilar y ejecutar un programa C en UNIX/LINUX y Windows NT. Para el caso de LINUX se usa el compilador gcc. Para el caso de Windows NT, el Visual C++. Apndice C. Trabajos prcticos de sistemas operativos En este apndice se describen varios proyectos de prcticas de sistemas operativos desarrollados por los autores durante varios aos. Todos ellos se han llevado a efecto, por lo que se incluyen tambin comentarios acerca de la realizacin de los mismos por los alumnos.

Digitalizacin realizada con propsito acadmico

Prlogo

xix

Materiales suplementarios Existe una pgina Web con materiales suplementarios para el libro, situada en la direccin: http: //arcos.inf.uc3m.es/ La misma informacin se encuentra duplicada en: http://datsi.fi. upm. es/ ssoo-va. En esta pgina Web se puede encontrar el siguiente material: Informacin sobre el libro, como el prlogo, tabla de contenidos, captulos de ejemplo en PDF, erratas, etc. Informacin de los autores y direccin de contacto. Material para el profesor, como figuras del libro, transparencias, soluciones de ejercicios y problemas propuestos y material de prcticas. Las prcticas que se presentan han sido diseadas como trabajos de laboratorio para estudiantes de las asignaturas de Sistemas Operativos de la Universidad Politcnica de Madrid y de la Universidad Carlos III de Madrid. Se ha hecho un importante esfuerzo para generalizar sus enunciados, de forma que puedan desarrollarse fcilmente sobre sistemas operativos de amplia difusin como Linux, UNIX o Windows. En casi todos los trabajos prcticos expuestos se hace referencia al material de apoyo existente para las prcticas, que tambin se puede conseguir en las pginas Web anteriores. Material para el estudiante, como cdigo fuente de los programas, figuras en PowerPoint, problemas propuestos de sistemas operativos, etc.

Comentario de los autores Es un placer para nosotros poder presentar este texto a las personas interesadas en los sistemas operativos, su diseo y su programacin. La elaboracin de este texto ha supuesto un arduo trabajo para nosotros, tanto por la extensin de la obra como por los ejemplos prcticos incluidos en la misma. Adems, se ha hecho un esfuerzo importante para tratar de unificar la terminologa usada en distintos pases de habla hispana. Con todo, creemos que el resultado final hace que el esfuerzo realizado haya merecido la pena. El esfuerzo realizado por mostrar los dos sistemas operativos ms actuales, LINUX y Windows NT, ha dado como resultado final un texto didctico y aplicado, que puede ser usado tanto en cursos de introduccin como de diseo de sistemas operativos. En el libro se incluyen ejemplos que muestran el uso de las llamadas al sistema de POSIX y Win32. Dichos ejemplos han sido cuidadosamente compilados y enlazados en los dos entornos en que estaban disponibles: Visual C y gcc. Nos gustara mostrar nuestro agradecimiento a todas las personas que han colaborado en este texto con su ayuda y sus comentarios. Este agradecimiento se dirige especialmente a Francisco Rosales Garca, Alejandro Caldern Mateos y Jos Mara Prez Menor por su ayuda en la compilacin de los programas de ejemplo y en algunos proyectos de sistemas operativos. Jess Carretero Prez Flix Garca Caballeira Departamento de Informtica Escuela Politcnica Superior Universidad Carlos III de Madrid Madrid, Espaa Pedro de Miguel Anasagasti Fernando Prez Costoya Departamento de Arquitectura y Tecnologa de Sistemas Informticos Facultad de Informtica Universidad Politcnica de Madrid Madrid, Espaa

Digitalizacin realizada con propsito acadmico

Digitalizacin realizada con propsito acadmico

1Conceptos arquitectnicos de la computadoraEn este captulo se presentan los conceptos de arquitectura de computadoras ms relevantes desde el punto de vista de los sistemas operativos. El captulo no pretende convertirse en un tratado de arquitectura, puesto que su objetivo es el de recordar y destacar los aspectos arquitectnicos que afectan de forma directa al sistema operativo. Para alcanzar este objetivo, el captulo se estructura en los siguientes grandes temas: * Funcionamiento bsico de las computadoras y estructura de las mismas. * Modelo de programacin, con nfasis en su secuencia de ejecucin. * Concepto de interrupcin. * Diversas acepciones de reloj. * Aspectos ms relevantes de la jerarqua de memoria y, en especial, de la memoria . virtual . * Concurrencia de la LIS con el procesador. * Mecanismos de proteccin.

.

Digitalizacin realizada con propsito acadmico

1

2

Sistemas operativos. Una visin aplicada

1.1.

ESTRUCTURA Y FUNCIONAMIENTO DE LA COMPUTADORA

La computadora es una mquina destinada a procesar datos. En una visin esquemtica, como la que muestra la Figura 1.1, este procesamiento involucra dos flujos de informacin: el de datos y el de instrucciones. Se parte del flujo de datos que han de ser procesados. Este flujo de datos es tratado mediante un flujo de instrucciones de maquina, generado por la ejecucin de un programa, y produce el flujo de datos resultado.

Figura 1.1. Esquema de funcionamiento de la computadora.

Para llevar a cabo la funcin de procesamiento, una computadora con arquitectura von Neuman est compuesta por los cuatro componentes bsicos representados en la Figura 1.2. La memoria principal se construye con memoria RAM y memoria ROM. En ella han de residir los datos a procesar, el programa mquina (Aclaracin 1.1) a ejecutar y los resultados. La memoria est formada por un conjunto de celdas idnticas. Mediante la informacin de direccin se selecciona de forma nica la celda sobre la que se quiere realizar el acceso, pudiendo ser ste de lectura o de escritura. En las computadoras actuales es muy frecuente que el direccionamiento se realice a nivel de byte, es decir, que las direcciones 0, 1, 2,... identifiquen los bytes 0, 1, 2,... Sin embargo, el acceso se realiza sobre una palabra de varios bytes (tpi ente de 4 o de 8 bytes) cuyo primer byte se sita en la direccin utilizada.

Figura1.2. Componentes bsicos de la computadora

Digitalizacin realizada con propsito acadmico

Conceptos arquitectnicos de la computadora

3

ACLARACIN 1.1 Se denomina programa mquina (o cdigo) al conjunto de instrucciones mquina que tiene por objeto que la computadora realice una determinada funcin. Los programas escritos en cualesquiera de los lenguajes de programacin han de convertirse en programas mquina para poder ser ejecutados por la computadora

La unidad aritmtica permite realizar una serie de operaciones aritmticas y lgicas sobre uno o dos operandos. Los datos sobre los que opera esta unidad estn almacenados en un conjunto de registros, o bien provienen directamente de memoria principal. Por su lado, los resultados tambin se almacenan en registros o en memoria principal. La unidad de control es la que se encarga de hacer funcionar al conjunto, para lo cual realiza las siguientes funciones: Lee de memoria las instrucciones mquina que forman el programa. Interpreta cada instruccin leda. Lee los datos de memoria referenciados por cada instruccin. Ejecuta cada instruccin. Almacena el resultado de cada instruccin.

La unidad de control tiene asociados una serie de registros, entre los que cabe destacar: el contador de programa (PC, program counter), que indica la direccin de la siguiente instruccin de mquina a ejecutar, el puntero de pila (SP, snack pointer), que sirve para manejar cmodamente una pila en memoria principal, el registro de instruccin (RL), que permite almacenar la instruccin de maquina a ejecutar, y el registro de estado (RE), que almacena diversa informacin producida por la ejecucin de alguna de las ltimas instrucciones del programa (bits de estado aritmticos) e informacin sobre la forma en que ha de comportarse la computadora (bits de interrupcin, nivel de ejecucin, etc.). Finalmente, la unidad de entrada/salida (E/S) se encarga de hacer la transferencia de informacin entre la memoria principal (o los registros) y los perifricos. La entrad salida se puede hacer bajo el gobierno de la unidad de control (E/S programada) o de forma independiente (DMA), como se ver en la Seccin 1.7. Se denomina procesador, o unidad central de proceso (UCP), al conjunto de la unidad aritmtica y de control. Actualmente, el procesador suele construirse en un nico circuito integrado. Desde el punto de vista de los sistemas operativos, nos interesa ms profundizar en el funcionamiento interno de la computadora que en los componentes fsicos que la constituyen.

1.2.

MODELO DE PROGRAMACIN DE LA COMPUTADORA

El modelo de programacin a bajo nivel de una computadora se caracteriza por los siguientes aspectos, que se muestran grficamente en la Figura 1.3: Elementos de almacenamiento. En esta seccin se consideran aquellos elementos de almacenamiento de la computadora que son visibles a las instrucciones maquina. En esta categora estn incluidos los registros generales, el contador de programa, el puntero de pila, el registro de estado, la memoria principal y el mapa de E/S (Aclaracin 1.2).

Digitalizacin realizada con propsito acadmico

4

Sistemas operativos. Una visin aplicada

Figura 1.3. Modelo de programacin de una computadora. Juego de instrucciones con sus correspondientes modos de direccionamiento. El juego de instrucciones mquina define las operaciones que es capaz de hacer la computadora. Los modos de direccionamiento determinan la forma en que se especifica la identidad de los elementos de almacenamiento que intervienen en las instrucciones mquina. Secuencia de funcionamiento, Define el modo en que se van ejecutando las instrucciones mquina. Un aspecto crucial de las computadoras, que est presente en todas ellas menos en los modelos ms simples, e. que disponen de ms de un nivel de ejecucin, concepto que se analiza en la seccin siguiente.

ACLARACIN 1.2 Es muy frecuente que las computadoras incluyan el mapa de E/S dentro del mapa de memoria. En este caso, se reserva una parte del mapa de memoria para realizar la E/S.

1.2.1.

Niveles de ejecucin

La mayora de las computadoras actuales presentan dos o ms niveles de ejecucin. En el nivel menos permisivo, generalmente llamado nivel de usuario, la computadora ejecuta solamente un subconjunto de las instrucciones mquina, quedando prohibidas las dems. Adems, el acceso a determinados registros, o a partes de esos registros, y a determinadas zonas del mapa de memoria y de E/S t bien queda prohibido. En el nivel ms permisivo, denominado nivel de ncleo, la computadora ejecuta todas sus instrucciones sin ninguna restriccin y permite el acceso a todos los registros y mapas de direcciones.

Digitalizacin realizada con propsito acadmico

Conceptos arquitectnicos de la computadora

5

Figura 1.4. Modelos de programacin de usuario y de ncleo. Se puede decir que la computadora presenta mas de un modelo de programacin. Uno ms restrictivo, que permite realizar un conjunto limitado de acciones, y otros ms permisivos que permiten realizar un mayor conjunto de acciones. Uno o varios bits del registro de estado establecen el nivel en el que est ejecutando la mquina. Modificando esto. bits se cambia de nivel de ejecucin. Como veremos ms adelante, los niveles de ejecucin se incluyen en las computadoras para dar soporte al sistema operativo. Los programas de usuario, por razones de seguridad, no podrn realizar determinadas acciones al ejecutar en nivel de usuario. Por su lado, el sistema operativo, que ejecuta en nivel de ncleo, puede ejecutar todo tipo de acciones. Tpicamente, en el nivel de usuario la computadora no permite operaciones de E/S, ni modificar una gran parte del registro de estado, ni modificar los registros de soporte de gestin de memoria. La Figura 1.4 muestra un ejemplo de dos modelos de programacin de una computadora. 1.2.2. Secuencia de funcionamiento de la computadora

La unidad de control de la computadora es la que establece el funcionamiento del mismo. Este funcionamiento est basado en una secuencia sencilla, que se repite a alta velocidad (cientos de millones de veces por segundo). Como muestra la Figura 1.5, esta secuencia consiste en tres pasos: a) lectura de memoria principal de la instruccin mquina apuntada por el contador de programa, b) incremento del contador de programa para que apunte a la siguiente instruccin mquina y c) ejecucin de la instruccin. Esta secuencia tiene dos propiedades fundamentales: es lineal, es decir, ejecuta de forma consecutiva las instrucciones que estn en direcciones consecutivas, y forma un bucle infinito, Esto significa que la unidad de control de la computadora est continua e ininterrumpidamente realizando esta secuencia (Advertencia 1.1).

Digitalizacin realizada con propsito acadmico

6

Sistemas operativos. Una visin aplicada

Figura 1.5. Secuencia de ejecucin de la computadora.

ADVERTENCIA 1.1 Algunas computadoras tienen una instruccin HALT que hace que la unidad de control se detenga hasta que llega una interrupcin. Sin embargo, esta instruccin es muy poco utilizada, por lo que a efectos prcticos podemos considerar que la unidad de control no para nunca de realizar la secuencia de lectura de instruccin, incremento de PC y ejecucin de la instruccin.

Podemos decir, por tanto, que lo nico que sabe hacer la computadora es repetir a gran veloci- dad esta secuencia. Esto quiere decir que, para que realice algo til, se ha de tener adecuadamente cargados en memoria un programa mquina con sus datos y hemos de conseguir que el contador de programa apunte a la instruccin mquina inicial del programa. El esquema de ejecucin lineal es muy limitado, por lo que se aaden unos mecanismos que permiten alterar esta ejecucin lineal. En esencia todos ellos se basan en algo muy simple: modifi- can el contenido del contador de programa, con lo que se consigue que se salte o bifurque a otro segmento del programa o a otro programa (que, lgicamente, tambin ha de residir en memoria). Los tres mecanismos bsicos de ruptura de secuencia son los siguientes: Las instrucciones mquina de salto o bifurcacin, que permiten que el programa rompa su secuencia lineal de ejecucin pasando a otro segmento de si mismo. Las interrupciones externas o internas, que hacen que la unidad de control modifique valor el del contador de programa saltando a otro programa. La instruccin de mquina TRAP, que produce un efecto similar a la interrupcin, haciendo que se salte a otro programa.

Si desde el punto de vista de la programacin son especialmente interesantes las instrucciones de salto, desde el punto de vista de los sistemas operativos son mucho ms importantes las interrupciones y las instrucciones de TRAP. Por tanto, centraremos nuestro inters en resaltar los aspectos fundamentales de estos dos mecanismos. 1.2.3. Registros de control y estado

Como se ha indicado anteriormente, la unidad de control tiene asociada una serie de registros denominamos de control y estado. Estos registros dependen de la arquitectura de la computadora muchos de ellos se refieren a aspectos que se analizarn a lo largo del texto, por lo que no se intentar explicar aqu su funcin. Entre los ms importantes se pueden encontrar los siguientes: Contador de programa PC. Contiene la direccin de la siguiente instruccin de mquina. Puntero de pila SP. Contiene la direccin de la cabecera de la pila.

Digitalizacin realizada con propsito acadmico

Conceptos arquitectnicos de la computadora

7

Registro de instruccin RI. Contiene la instruccin en curso de ejecucin. Registro de estado, que contiene, entre otros, los bits siguientes: Bits de estado aritmticos:

Signo. Contiene el signo de la ultima operacin aritmtica realizada. Acarreo. Contiene el acarreo de la ultima suma o resta realizada, Cero. Se activa si el resultado de la ultima operacin aritmtica o lgica fue cero. Desbordamiento. Indica si la ltima operacin aritmtica produjo desbordamiento. Bits de nivel de ejecucin. Indican el nivel en el que ejecuta el procesador. Bits de control de interrupciones. Establecen las interrupciones que se pueden aceptar.

Registro identificador de espacio de direccionamiento RIED (Seccin 1.8.2). Identifica el espacio del mapa de memoria que puede utilizar el programa en ejecucin. Otros registros de gestin de memoria, como pueden ser los registros de proteccin de memoria (Seccin 1.8.2). Algunos de estos registros son visibles en el nivel de ejecucin de usuario, como el PC, el SP y parte del estado, pero otros no lo son, como el registro identificador de espacio de direccionamiento. 1.3. INTERRUPCIONES A nivel fsico, una interrupcin se solicita activando una seal que llega a la unidad de control. El agente generador o solicitante de la interrupcin ha de activar la mencionada seal cuando necesite que se le atienda, es decir, que se ejecute un programa que le atienda. Ante la solicitud de una interrupcin, siempre y cuando est habilitado ese tipo de interrupcin, la unidad de control realiza un ciclo de aceptacin de interrupcin. Este ciclo se lleva a cabo en cuanto termina la ejecucin de la instruccin maquina que se est ejecutando y consiste en las siguiente. operaciones: Salva algunos registros del procesador, como son el de estado y el contador de programa. Eleva el nivel de ejecucin del procesador, pasndolo a ncleo. Carga un nuevo valor en el contador de programa, por lo que pasa a ejecutar otro programa. La Figura 1.6 muestra la solucin ms usualmente utilizada para determinar la direccin de salto. Se puede observar que el agente que interrumpe ha de suministrar un vector, que especifica la direccin de comienzo del programa que desea que le atienda (programa que se suele denominar de tratamiento de interrupcin). La unidad de control, utilizando un direccionamiento indirecto, toma la mencionada direccin de una tabla de interrupciones y la carga en el contador de programa. El resultado de esta carga es que la siguiente instruccin maquina ejecutada es la primera del mencionado programa de tratamiento de interrupcin. Obsrvese que tanto la tabla de interrupciones como la rutina de tratamiento de la interrupcin se han considerado parte del sistema operativo. Esto suele ser as por razones de seguridad; en concreto, para evitar que los programas que ejecuta un usuario puedan perjudicar a los datos o programas de otros usuarios. Como se ver en el Captulo 2, la seguridad es una de las funciones primordiales del sistema operativo.

Digitalizacin realizada con propsito acadmico

8

Sistemas operativos. Una visin aplicada

Figura 1.6. Acceso a la rutina de tratamiento de la interrupcin Las interrupciones se pueden generar por diversas causas, que se pueden clasificar de la siguiente forma: Excepciones de programa. Hay determinadas causas que hacen que un programa presente un problema en su ejecucin, por lo que deber generarse una interrupcin, de forma que el sistema operativo trate dicha causa. Ejemplos son el desbordamiento en las operaciones aritmticas, la divisin por cero, el intento de ejecutar una instruccin con cdigo operacin incorrecto o de direccionar una posicin de memoria prohibida (Advertencia 1.2). Interrupciones de reloj, que se analizarn en la seccin siguiente. Interrupciones de E/S. Los controladores de los dispositivos de E/S necesitan interrumpir para indicar que han terminado una operacin o conjunto de ellas. Excepciones del hardware. La deteccin de un error de paridad en la memoria o un corriente se avisan mediante la correspondiente interrupcin. Instrucciones de TRAP. Estas instrucciones permiten que un programa genere una interrupcin. Como veremos ms adelante, estas instrucciones se emplean fundamentalmente solicitar los servicios del sistema operativo.

ADVERTENCIA 1.2 En este caso no existe un agente externo que suministre el vector necesario para entrar en la tabla de interrupciones. Ser la propia unidad de control del procesador la que genere este vector.

Como complemento al mecanismo de aceptacin de interrupcin, las computadoras incluyen una instruccin mquina para retorno de interrupcin, llamada RETI. El efecto de esta instruccin es restituir los registros de estado y PC, desde el lugar en que fueron salvados al aceptarse interrupcin (p. ej.: desde la pila). Las computadoras incluyen varias seales de solicitud de interrupcin, cada una de las les tiene una determinada prioridad. En caso de activarse al tiempo varias de estas sea tratar la de mayor prioridad, quedando las dems a la espera de ser atendidas, Adems, la computadora incluye un mecanismo de inhibicin selectiva que permite detener todas o determinas seales de interrupcin. Las seales inhibidas no son atendidas hasta que pasen a estar desinhibidas. La informacin de inhibicin de las interrupciones suele incluirse en la parte del registro estado que solamente es modificable en nivel de ncleo, por lo que su modificacin queda restringida al sistema operativo.

Digitalizacin realizada con propsito acadmico

Conceptos arquitectnicos de la computadora

9

1.4.

EL RELOJ

El trmino reloj se aplica a las computadoras con tres acepciones diferentes, si bien relacionadas, como se muestra en la Figura 1.7. Estas tres acepciones son las siguientes: Seal que gobierna el ritmo de ejecucin de las instrucciones mquina. Generador de interrupciones peridicas. Contador de fecha y hora,

El oscilador que gobierna las fases de ejecucin de las instrucciones mquina se denomina reloj. Cuando se dice que un microprocesador es de 600 MHz, lo que se est especificando es que el oscilador que gobierna el ritmo de su funcionamiento interno produce una onda cuadrada con una frecuencia de 600 MHz. La seal producida por el oscilador anterior, o por otro oscilador, se divide mediante un divisor de frecuencia para generar una interrupcin cada cierto intervalo de tiempo. Estas interrupciones, que se estn produciendo constantemente, se denominan interrupciones de reloj o ticks, dando lugar al segundo concepto de reloj. El objetivo de estas interrupciones es, como veremos ms adelante, hacer que el sistema operativo entre a ejecutar de forma sistemtica cada cierto intervalo de tiempo. De esta manera, el sistema operativo puede evitar que un programa monopolice el uso de la computadora y puede hacer que entren a ejecutarse programas en determinados instantes de tiempo. Estas interrupciones se producen cada varios milisegundos, por ejemplo cada 20 milisegundos. La tercera acepcin de reloj se aplica a un contador que permite conocer la fecha y la hora. Este contador se va incrementando con cada interrupcin de reloj de forma que, tomando como referencia un determinado instante (p. ej: O horas del 1 de enero de 1990 (Advertencia 1.3)], se puede calcular la hora y fecha en que estamos. Observe que este concepto de reloj es similar al del reloj electrnico de pulsera. En las computadoras actuales esta cuenta se hace mediante un circuito dedicado que, adems, est permanentemente alimentado, de forma que, aunque se apague la computadora, se siga manteniendo el reloj. En sistemas ms antiguos, el sistema operativo se encargaba de hacer esta cuenta, por lo que haba que introducir la fecha y la hora al arrancar la computadora.ADVERTENCIA 1.3 En el caso de UNIX se cuentan segundos y se toma como referencia las 0 horas del 1 de enero de 1970. si se utiliza una palabra de 32 bits, el mayor nmero que se puede almacenar es el 2.147.483.647, que se corresponde a las 3h 14m y 7s de enero de 2038. esto significa que, a partir de ese instante, el contador tomar el valor de 0 y la fecha volver a ser el 1 de enero de 1970.

Figura 1.7. Reloj de la computadora.

Digitalizacin realizada con propsito acadmico

10

Sistemas operativos. Una visin aplicada

1.5.

JERARQUA DE MEMORIA

Dado que la memoria de alta velocidad tiene un precio elevado y un tamao reducido, la memoria de la computadora se organiza en forma de una jerarqua como la mostrada en la Figura 1.8. En esta jerarqua se utilizan memorias permanentes de alta capacidad y baja velocidad, como son los cos, para almacenamiento permanente de la informacin. Mientras que se emplean memorias semiconductores de un tamao relativamente reducido, pero de alta velocidad, para almacenar la informacin que se est utilizando en un momento determinado.

Figura 1.8. Jerarqua de memoria. El funcionamiento de la jerarqua de memoria exige hacer adecuadas copias de informacin de los niveles ms lentos a los niveles ms rpidos, en los cuales son utilizadas (p. ej.: cuando se ejecutar un programa hay que leer el fichero ejecutable y almacenarlo en memoria principal). Inversamente, cuando se modifica o crea la informacin en un nivel rpido, y se desea su permanencia, hay que enviarla al nivel de disco o cinta. Para entender bien el objetivo y funcionamiento de la jerarqua de memoria, es muy importante tener presente siempre tanto el orden de magnitud de los tiempos de acceso de cada tecnologa de memoria como los tamaos tpicos empleados en cada nivel de la jerarqua. La Tabla 1.1 presenta algunos valor tpicos. La gestin de la jerarqua de memoria, puesto que a de tener en cuenta las copias de informacin que estn en cada nivel y a de realizar las trasferencias de informacin a niveles mas rpidos, as como las actualizaciones hacia los niveles permanentes. Una parte muy importante de esta gestin corre a cargo del sistema operativo, aunque, para hacerla correctamente, requiere de la ayuda de hardware. Por ello, se revisan en esta seccin los conceptos mas importantes de la

Digitalizacin realizada con propsito acadmico

Conceptos arquitectnicos de la computadora

11

jerarqua de memoria, para analizar ms adelante su aplicacin a la memoria virtual, de especial inters para nosotros dado que su gestin la realiza el sistema operativo.

1.5.1.

Migracin de la informacin

La explotacin correcta de la jerarqua de memoria exige tener, en cada momento, la informacin adecuada en el nivel adecuado. Para ello, la informacin ha de moverse de nivel, esto es, ha de migrar de un nivel a otro. Esta migracin puede ser bajo demanda explcita o puede ser automtica. La primera alternativa exige que el programa solicite explcitamente el movimiento de la informacin, como ocurre, por ejemplo, con un pro rama editor, que va solicitando la parte del archivo que est editando en cada momento el usuario. La segunda alternativa consiste en hacer la migracin transparente al programa, es decir, sin que este tenga que ser consciente de que se produce. La migracin automtica se utiliza en las memorias cache y en la memoria virtual, mientras que la migracin bajo demanda se utiliza en los otros niveles. Sean k y k + 1 dos niveles consecutivos de la jerarqua, siendo k el nivel mas rpido. La existencia de una migracin automtica de informacin permite que el programa referencia la informacin en el nivel k y que, en el caso de que no exista una copia adecuada de esa informacin en dicho nivel k, se traiga esta desde el nivel k + 1 sin que el programa tenga que hacer nada para ello. El funcionamiento correcto de la migracin automtica exige un mecanismo que consiga tener en el nivel k aquella informacin que necesita el programa en ejecucin en cada instante. Idealmente, el mecanismo debera predecir la informacin que ste necesite para tenerla disponible en el nivel rpido k. El mecanismo se basa en los siguientes aspectos: Tamao de los bloques transferidos. Poltica de extraccin. Poltica de reemplazo. Poltica de ubicacin.

Por razones de direccionamiento (Seccin 1.5.4), y para aprovechar la proximidad espacial (Seccin 1.5.5), la migracin automtica se hace en porciones de informacin de un t ao determinado. En concreto, para la memoria cache se transfieren lneas de unas pocas palabras, mientras que p a la memoria virtual se transfieren paginas de uno o varios KB. El tamao de estas porciones e una caracterstica muy importante de la jerarqua de memoria. La poltica de extraccin define qu informacin se sube del nivel k + 1 al k y cundo se sube. La solucin ms corriente es la denominada por demanda y consiste en subir aquella informacin que referencia el programa, justo cu do la referencia. El xito de esta poltica se basa en la proximidad espacial (Seccin 1.5.5), por lo que no se sube exclusivamente la informacin referenciada sino una porcin mayor (lnea o pgina). El nivel k tiene menor capacidad de almacenamiento que el nivel k + 1, por lo que normalmente est lleno. Por ello, cuando se sube una porcin de informacin hay que eliminar otra. La poltica de reemplazo determina qu porcin hay que eliminar, atando de seleccionar una que ya no sea de inters para el programa en ejecucin. Por razones constructivas pueden existir limitaciones en cuanto al lugar en el que se pueden almacenar las diversas porciones de informacin; la poltica de ubicacin determina dnde almacenar cada porcin.

Digitalizacin realizada con propsito acadmico

12

Sistemas operativos. Una visin aplicada

1.5.2.

Parmetros caractersticos de la jerarqua de memoria

La eficiencia de la jerarqua de memoria se mide mediante los dos parmetros siguientes: Tasa de aciertos o hit ratio (Hr). Tiempo medio de acceso efectivo (Tef).

La tasa d aciertos (Hrk) del nivel k de la jerarqua se define como la probabilidad de encontrar en ese nivel la informacin referenciada. La tasa de fallos Frk es 1 - Hrk. La tasa de aciertos ha de ser alta para que sea rentable el uso del nivel k de la jerarqua. Los factores ms importantes que determinan Hrk son los siguientes: Tamao de la porcin de informacin que se transfiere al nivel k. Capacidad de almacenamiento del nivel k. Poltica de reemplazo. Poltica de ubicacin. Programa especfico que se est ejecutando (cada programa tiene un comportamiento propio).

El tiempo de acceso a una informacin depende de que se produzca o no un fallo en el nivel k. Denominaremos tiempo de acierto al tiempo de acceso cuando la informacin se encuentra en nivel k. mientras que denominaremos penalizacin de fallo al tiempo que se tarda en realizar migracin de la porcin cuando se produce fallo. El tiempo medio de acceso efectivo (Tef) de un programa se obtiene promediando los tiempos de todos los accesos que realiza el programa a largo de su ejecucin. Tef depende bsicamente de los factores siguientes: 1.5.3. Tiempo de acierto. Penalizacin de fallo. Tasa de aciertos (Hrk) del nivel k. Coherencia

Un efecto colateral de la jerarqua de memoria es que existen varias copias de determinadas porcio- nes de informacin en distintos niveles. Al escribir sobre la copia del nivel k, se produce una discrepancia con la copia del nivel k + 1; esta situacin se denomina falta de coherencia. Se dice que una porcin de informacin est sucia si ha sido escrita. La coherencia de la jerarqua de memoria exige medidas para eliminar la falta de coherencia. En concreto, una porcin sucia en el nivel k ha de ser escrita en algn momento al nivel k + 1 para eliminar la falta de coherencia. Con esta operacin de escritura se limpia la porcin del nivel k. Existen diversas polticas de actualizacin de la informacin creada o modificada, que se caracterizan por el instante en el que se copia la informacin al nivel permanente. 1.5.4. Direccionamiento

La jerarqua de memoria presenta un problema de direccionamiento. Supngase que el programa en ejecucin genera la direccin X del dato A al que quiere acceder. Esta direccin X est referida al nivel k + 1, pero se desea acceder al dato A en el nivel k, que es ms rpido. Para ello se necesitara conocer la direccin Y que ocupa A en el nivel k, por lo que ser necesario establecer un mecanismo de traduccin de direcciones X en sus correspondientes Y. La Figura 1.9 presenta este problema de direccionamiento.

Digitalizacin realizada con propsito acadmico

Conceptos arquitectnicos de la computadora

13

Figura 1.9. Traduccin de direcciones. El problema de traduccin no es trivial, supngase que el espacio de nivel k + 1 es de 2 GB, lo que equivale a suponer que n = 31, y que el espacio de nivel k es de 8 MB, lo que supone que m = 23. El traductor tiene aproximadamente dos mil millones de valores de entrada distintos y ocho millones de direcciones finales. Para simplificar la traduccin, y aprovechar la proximidad espacial, se dividen los mapas de direcciones de los espacios k + 1 y k en porciones de tamao Y. Estas porciones constituyen la unidad de informacin mnima que se transfiere de un nivel al otro. El que la porcin tenga tamao 2p permite dividir la direccin en dos partes: los m ~ p bits mas significativos sirven para identificar la porcin, mientras que los p bits menos significativos sirven para especificar el byte dentro de la porcin (Fig. 1.10). Por su parte, la Figura 1.11 muestra el caso de la memoria virtual que se divide en pginas. Suponiendo, para el ejemplo anterior, que las pginas son de 1 KB (p = 10), el problema de direccionamiento queda dividido por 1.024, pero si e siendo inviable plantear la traduccin mediante una tabla directa completa, pues sera una tabla de unos dos millones de entradas y con slo 8.192 salidas no nulas. 1.5.5. La proximidad referencial La proximidad referencial es la caracterstica que hace viable la jerarqua de memoria, de ah su importancia. En trminos globales, la proximidad referencial establece que un programa en ejecucin utiliza en cada momento una pequea p te de toda la informacin que usa. Para exponer el concepto de proximidad referencial de forma ms especfica, partimos del concepto de traza. La traza de un programa en ejecucin es la lista ordenada en el tiempo de las direcciones de memoria que referencia para llevar a cabo su ejecucin. Esta traza R estar compuesta por las direcciones de las instrucciones que se van ejecutando y por las direcciones de los datos empleados, es decir: Re = re(l), re(2), re(3), ... re(j) donde re(i) es la i-sima direccin generada por la ejecucin del programa e.

Figura 1.10. El uso de porciones de 2 facilita la traduccin.

Digitalizacin realizada con propsito acadmico

14

Sistemas operativos. Una visin aplicada

Figura 1.11. Divisin en pginas de los espacios de memoria. Adicionalmente, se define el concepto de distancia d(u, y) entre dos direcciones u y y como diferencia en valor absoluto | u v|. La distancia entre dos elementos j y k de una traza re es, por tanto, d(re(j), re(k)) = |re(j) re(k)|. Tambin se puede hablar de traza de E/S, refirindonos, en este caso, a la secuencia de la direcciones empleadas en operaciones de E/S. La proximidad referencial presenta dos facetas: la proximidad espacial y la proximidad temporal. La proximidad espacial de una traza postula que, dadas dos referencias re(j) y re(i) prximas en el tiempo (es decir, que i j sea pequeo), existe una alta probabilidad de que su distancia d(re(j), re(i)) sea muy pequea. Adems, como muchos trozos de programa y muchas es estructuras datos se recorren secuencialment, existe una gran probabilidad de que la referencia siguiente re(j) coincida con la direccin de memoria siguiente (Recordatorio 1.1). Este tipo especial de proximidad espacial recibe el nombre de proximidad secuencial.

RECORDATORIO 1.1 Aqu conviene incluir una aclaracin. Dado que las memorias principales se direccional a nivel de byte pero se acceden a nivel de palabra, la direccin siguiente no es la direccin actual mas 1. Para palabras de 4 bytes la direccin siguiente es la actual mas 4.

La proximidad espacial se explica si se tienen en cuenta los siguientes argumentos:

Los programas son fundamentalmente secunciales, a excepcin de las bifurcaciones, por que su lectura genera referencias consecutivas. Adicionalmente, la gran mayora de los bucles son muy pequeos, de unas pocas instrucciones mquina, por lo que su ejecucin genera referencias con distancias pequeas.

Digitalizacin realizada con propsito acadmico

Conceptos arquitectnicos de la computadora

15

Figura 1.12.

Proximidad referencial.

Las estructuras de datos que se recorren de forma secuencial o con referencias muy prximas son muy frecuentes. Ejemplos son los vectores, las listas, las pilas, las matrices, etc. Adems, las zonas de dato suelen estar agrupadas, de manera que las referencias que se generan suelen estar prximas.

La proximidad temporal postula que un programa en ejecucin tiende a referenciar direcciones empleadas en un pasado prximo. Esto es, existe una probabilidad muy alta de que la prxima referencia re( j + 1) este entre las n referencias anteriores re( j n + 1), re(j n + 2),............, re(j -2), re( j 1), re (j). La proximidad temporal se explica si se tienen en cuenta los siguientes argumentos: Los bucles producen proximidad temporal, adems de proximidad espacial. El uso de datos o parmetros de forma repetitiva produce proximidad temporal. Las llamadas repetidas a subrutinas tambin son muy frecuentes y producen proximidad temporal. Esto es muy tipico con las funciones o subrutinas aritmticas, de conversin de cdigos, etc.

En la prctica, esto significa que las referencias producidas por la ejecucin de un programa estn agrupadas en unas pocas zonas, tal y como muestra la Figura 1,12. Puede observarse tambin que, a medida que avanza la ejecucin del programa, van cambiando las zonas referenciadas. El objetivo principal de la gestin de la jerarqua de memoria ser conseguir que residan en las memorias ms rpidas aquellas zonas de los programas que estn siendo referenciadas en cada instante. 1.6. MEMORIA VIRTUAL En un sistema sin memoria virtual, el sistema operativo divide la memoria principal en trozos y asigna uno a cada uno de los programas que estn ejecutando en un instante determinado. La Figura 1.13 muestra el reparto tpico de la memoria para el caso de un solo programa o de varios programas. Observe que el espacio asignado a un programa consiste en una zona de memoria principal

Digitalizacin realizada con propsito acadmico

16

Sistemas operativos. Una visin aplicada

Figura 1.13. Asignacin de memoria en un sistema sin memoria virtual. contigua, es decir, no se asignan varios trozos disjuntos de memoria a un mismo programa. Por el contrario, como se ver ms adelante, en los sistemas con memoria virtual no es necesario que los espacios de memoria asignados a los programas sean contiguos.

1.6.1.

Concepto de memoria virtual La memoria virtual utiliza dos niveles de la jerarqua de memoria: la memoria principal y una memoria de respaldo (que suele ser el disco, aunque puede ser una memoria expandida). Sobre memoria de respaldo se establece un mapa uniforme de memoria virtual. Las direcciones generadas por el procesador se refieren a este mapa virtual, pero, sin embargo, los accesos reales se realiza sobre la memoria principal. Para su funcionamiento, la memoria virtual exige una gestin automtica de la parte de la jerarqua de memoria formada por los niveles de memoria principal y de disco. Insistimos en que la gestin de la memoria virtual es automtica y la realiza el sistema operativo con ayuda del hardware de la mquina. Como muestra la Figura 1.14, esta gestin incluye toda la memoria principal y una parte del disco, que sirve de respaldo a la memoria virtual. Los aspectos principales en los que se basa la memoria virtual son los siguientes: Las direcciones generadas por las instrucciones mquina, tanto para referirse a datos como a otras instrucciones, estn referidas al espacio virtual, es decir, forman parte del mapa de memoria virtual. En este sentido se suele decir que el procesador genera direcciones virtuales

Figura 1.14. Fundamento de la memoria virtual.

Digitalizacin realizada con propsito acadmico

Conceptos arquitectnicos de la computadora

17

El mapa virtual asociado a un programa en ejecucin esta soportado fsicamente por una zona del disco, denominada de intercambio o swap, y por una zona de la memoria principal. Tenga en cuenta que toda la informacin del programa ha de residir obligatoriamente en algn soporte fsico, ya sea disco o memoria principal (tambin puede estar duplicada en ambos). Aunque el programa genera direcciones virtuales, para que ste pueda ejecutarse, han de residir en memoria principal las instrucciones y los datos utilizados en cada momento. Si, por ejemplo, un dato referenciado por una instruccin mquina no reside en la memoria principal es necesario realizar un trasvase de informacin (migracin de informacin) entre el disco y la memoria principal antes de que el programa pueda seguir ejecutando. Los espacios virtual y fsico se dividen en pginas, como se mostr en la Figura 1.11. Se denominan pginas virtuales a las pginas del espacio virtual, paginas de intercambio a las pginas residentes en el disco y marcos de pgina a los espacios en los que se divide la memoria principal. Cada marco de pgina es capaz de albergar una pgina virtual cualquiera, sin ninguna restriccin de direccionamiento. Existe una unidad hardware, denominada MMU (Memo Management Unit), que traduce las direcciones virtuales a direcciones de memoria principal. Aplicando lo visto anteriormente, se puede decir que esta traduccin se restringe a traducir el nmero de pgina virtual en el correspondiente nmero de marco de pgina. Insistimos en que esta traduccin hay que hacerla por hardware dada la alta velocidad a la que debe hacerse (una fraccin del tiempo de acceso de la memoria principal). Dado que en cada instante determinado solamente reside en memoria principal una fraccin de las pginas del programa, la traduccin no siempre es posible. Por tanto, la MMU producir una excepcin de fallo de pgina cuando sta no est en memoria principal.

Los fallos de pgina son atendidos por el sistema operativo (Prestaciones 1.1) que se encarga de realizar la adecuada migracin de pginas, para traer la pgina requerida por el programa a un marco de pgina. Se denomina paginacin al proceso de migracin necesario para atender los fallos de pagina.

Finalmente, conviene resaltar que el tamao del espacio virtual suele ser muy grande. En la actualidad se emplean direcciones de 32, 48 o hasta 64 bits, lo que significa espacios virtuales de 232, 248 y 264 bytes. Dado que los programas requieren en general mucho menos espacio, una de las funciones que realiza el sistema operativo es la asignacin de espacio virtual a los programas para su ejecucin. El programa no podr utilizar todo el espacio virtual sino que ha de restringirse a la zona o zonas que le asigne el sistema operativo. La Figura 1.15 muestra que el espacio virtual reservado al programa A puede estar en una nica zona o puede estar dividido en varias zonas, que se denominan segmentos. .

Digitalizacin realizada con propsito acadmico

18

Sistemas operativos. Una visin aplicada

Figura 1.15. Asignacin de memoria en un sistema con memoria virtual. Una de las caractersticas importantes de los lenguajes de programacin actuales es que permiten la asignacin dinmica de memoria. Esto significa que no se conoce a priori la cantidad de memoria que necesitar el programa para su ejecucin. Por tanto, el sistema operativo ha de ser capa de aumentar o reducir el espacio asignado a un programa de acuerdo a las necesidades que vayan surgiendo en su ejecucin. 1.6.2. La tabla de paginas La tabla de pginas es una estructura de informacin que contiene la informacin de dnde residen las pginas de un programa en ejecucin. Esta tabla permite, por tanto, saber si una pgina esta en memoria principal y, en su caso, en que marco especfico reside. Segn se ha visto anteriormente, dado que el tamao del espacio virtual suele ser muy grande, el tamao de la correspondiente tabla de pginas puede ser muy grande (de millones de elementos). Sin embargo, como hemos visto, el sistema operativo se encarga de asignar a cada programa en ejecucin un espacio virtual de tamao ajustado a su: necesidades. De esta forma, la tabla de pginas queda reducida al valor necesario para que ejecute el programa. La Figura 1.16 muestra la solucin ms sencilla de tabla de pginas de un nivel. En este caso se supone que toda la memoria asignada al programa es contigua. El nmero de la pgina virtual se utiliza como ndice para entrar en la tabla. Cada elemento de la tabla tiene un bit para indicar si la pgina est en memoria principal y el nmero de marco en el que se encuentra la mencionada pgina o un valor nulo.

Figura 1.16. Tabla de pginas de un nivel y espacio virtual asignado

Digitalizacin realizada con propsito acadmico

Conceptos arquitectnicos de la computadora

19

Figura 1.17.Ejemplo de traduccin mediante tabla de pginas de un nivel La Figura 1.17 muestra un ejemplo de traduccin para el caso de tabla de paginas de un nivel. Se supone que las pgina son de 2 KB, por lo que los 11 bits inferiores de la direccin virtual sirven para especificar el byte dentro de la pagina, mientras que el resto especifican la pgina virtual, que en este caso es la 5. Entrando en la posicin N0 5 de la tabla observamos que la pgina est en memoria principal y que esta en el marco numero 6.738. Concatenando el nmero de marco con los 11 bits inferiores de la direccin virtual se obtiene la direccin de memoria principal donde reside la informacin buscada. El mayor inconveniente de la tabla de un nivel es su falta de flexibilidad. Toda la memoria virtual asignada ha de ser contigua (Advertencia 1.4) y la ampliacin de memoria asignada solamente puede hacerse final de la existente.

Sin embargo, los programas estn compuestos por varios elementos, como son el propio programa objeto, la pila y los bloques de datos. Adems, tanto la pila como los bloques de datos han de poder crecer. Por ello, un esquema de tabla de un nivel obliga a dejar grandes huecos de memoria virtual sin utilizar , pero que estn presentes en la tabla con el consiguiente desperdicio de espacio. Por ello se emplean esquemas de tablas de pginas de ms de un nivel. La Figura 1.18 muestra el caso de tabla de pginas de dos niveles. Con este tipo de tabla, la memoria asignada esta compuesta por una serie de bloques de memoria virtual, es decir, por unos segmentos. Cada segmento est formado por una serie contigua de byte. que puede variar su tamao, siempre y cuando no choque con otro segmento. La direccin se divide en tres pres. La primera identifica el segmento de memoria donde esta la informacin que se desea acceder. Con este valor se entra en una subtabla de segmentos, que contiene un puntero por segmento, puntero que indica el comienzo de la subtabla de paginas del segmento. Con la segunda parte de la direccin se entra en la subtabla de pginas seleccionada. Esta subtabla es similar a la tabla mostrada en la Figura 1.18, lo que permite obtener el marco en el que est la informacin deseada.

Digitalizacin realizada con propsito acadmico

20

Sistemas operativos. Una visin aplicada

Figura 1.18. Tabla de pginas de dos niveles. Obsrvese que se ha aadido a cada subtabla su tamao. De esta forma se detectan las llamadas violaciones de memoria, producidas cuando el programa en ejecucin intenta acceder una direccin que no pertenezca a los espacios asignados por el sistema operativo. La ventaja del diseo con varios niveles es que permite una asignacin de memoria ms flexible que con un solo nivel, puesto que se pueden asignar bloques de memoria virtual disjuntos, por lo que pueden crecer de forma a independiente. Adems, la tabla de pginas no tiene espacios vacos, por lo que ocupa solamente el espacio imprescindible. Las computadoras actuales suelen proporcionar tablas de varios niveles, algunos llegan asta cuatro, con lo que se consigue una mayor flexibilidad en la asignacin de espacio de memoria. La Figura 1.19 muestra un ejemplo de traduccin mediante tabla de pginas de dos niveles. El segmento direccionado es el 5, por lo que hay que leer la entrada 5 de la tabla de segmentos. Con ello se obtiene la direccin donde comienza la tabla de pginas de este segmento. La pgina direccionada es la 3, por lo que entramos en el elemento 3 de la tabla anterior. En esta tabla encontramos que el marco es el Hex4A24 (Advertencia 1.5), por lo que se puede formar la direccin fsica en la que se encuentra la informacin buscada.

Digitalizacin realizada con propsito acadmico

Conceptos arquitectnicos de la computadora

21

Figura 1.19, Tabla de pginas de dos niveles. Por el contrario, las direcciones de la Figura 1.20 son incorrectas, puesto que el segmento 5 (101) no tiene la pgina 7 (111) y no existe el segmento 21(10101). Traduccin de direcciones La asignacin de memoria y, por tanto, la construccin de la tabla de pginas es misin del sistema operativo. Sin embargo, es la MMU la que se encarga de realizar la traduccin de las direcciones. Esta divisin de trabajo es necesaria puesto que la traduccin de direcciones hay que hacerla de forma muy rpida para que no afecte negativamente al tiempo de acceso a la memoria. Para que una computadora con memoria virtual pueda competir con una sin memoria virtual, la traduccin ha de tardar una fraccin del tiempo de acceso a memoria. En caso contrario, sera mucho ms rpido y por ende mas econmico el sistema sin memoria virtual. Suponiendo una memoria principal de 100 ns y un traductor de 5 ns, el tiempo de acceso para el caso de memoria virtual es de 105 ns, es decir, un 5 por 100 ms lento que en el caso de no tener memoria virtual. Sin embargo, si la traduccin tardase 100 ns, la computadora con memoria virtual sera la mitad de rpida, algo que la hara imposible de competir. La tabla de pginas es una estructura que mantiene el sistema operativo y que reside en memoria principal (a veces, hay una parte en la propia MMU y otra en memoria principal). Observe que esto parece un contrasentido, puesto que para acceder a memoria hay que traducir la direccin virtual, lo que supone realizar un acceso a memoria por cada nivel que tenga la tabla de pginas. Segn se ha visto, esto supona un retardo inadmisible en los accesos a memoria. Para resolver este problema se dota a la MMU de una memoria muy rpida que permite hacer la traduccin para la mayora de los casos en una fraccin del tiempo que se tarda en acceder a la memoria principal (Prestaciones 1.2).

Figura 1.20. Ejemplo de direcciones incorrectas.

Digitalizacin realizada con propsito acadmico

22

Sistemas operativos. Una visin aplicada

Finalmente, hay que destacar que la encargada de mantener la informacin de que pgina estn sucias es la MMU. En efecto, al mismo tiempo que hace la traduccin, en caso de que acceso sea de escritura marca a esa pagina como sucia (Advertencia 1.6).

1.6.3. Caso de varios programas activos Como se ver en el Captulo 2, los sistemas operativos permiten que existan varios programa activos al tiempo. De estos programas solamente puede haber uno en ejecucin en cada instante, encargndose el sistema operativo de ir poniendo en ejecucin uno detrs de otro de forma ordenada. Sin embargo, cada uno de los programas ha de tener asignado un espacio de memoria, por lo que ha de tener su propia tabla de pginas. La MMU ha de utilizar la tabla de paginas correspondiente al programa que est en ejecucin. Para ello, como muestra la Figura 1.21, el procesador tiene un registro identificador de espacio de direccionamiento (RIED). Este registro contiene la direccin en la cual est almacenada la tabla de ndices o segmentos del programa. Cuando el sistema operativo pone en ejecucin un programa ha de actualizar el valor del RIED para que apunte a la tabla de pginas adecuada. 1.6.4. Asignacin de memoria principal y memoria virtual En un sistema con memoria virtual, un programa en ejecucin tiene asignado un espacio virtual, parte del cual reside en unos marcos de pagina de la memoria principal. El objetivo de la polticas de extraccin y de reemplazo que utilice el sistema operativo para hacer la migracin de informacin entre el intercambio y la memoria principal tiene como objetivo conseguir, con el mnimo trabajo posible, que e estn en cada momento en memoria principal las pginas que necesitan los programas en ejecucin. Se denomina conjunto de trabajo (working set) W(k,q) de un programa en ejecucin en el intervalo [k;q] al conjunto de pginas referenciadas entre el elemento k y el q de su traza. Por otro lado, se denomina conjunto residente R(t) a la parte del proceso que est realmente almacenada u memoria principal en el instante t.

Digitalizacin realizada con propsito acadmico

Conceptos arquitectnicos de la computadora

23

Figura 1.21 El registro RIED permite determinar la tabla de pginas en uso. Supngase que en el instante t el programa est por su referencia k y que el conjunto residente R(t) coincide con el conjunto de trabajo W(k,q). Esto significara que ese programa tiene la garanta de que sus prximas q k referencias se refieren a pagina: que estn en memoria principal, por lo que no se generara ningn fallo de pgina. Dado que el sistema operativo no conoce de antemano cuales van a ser las referencias que generar un programa, ha de basan e en la trayectoria pasada de la ejecucin del mismo para mantener un conjunto reciente que sea lo ms parecido posible a su futuro conjunto de trabajo, para as minimizar la paginacin. 1.7. ENTRADA-SALIDA Los mecanismo: de E/S de la computadora tienen por objetivo el intercambio de informacin entre los perifricos y la memoria o los registros del procesador. En este captulo se presentan los dos aspectos de la E/S que revisten mayor relevancia de cara al sistema operativo: la concurrencia de la E/S con el procesador y el impacto de la memoria virtual. 1.7.1. Perifricos La Figura 1.22 muestra el esquema general de un perifrico, compuesto por el dispositivo y su controlador. Este ltimo tiene una serie de registros incluidos en el mapa de E/S de la computadora, por lo que e pueden acceder mediante instrucciones de maquina de entrad salida. El registro de datos sirve para el intercambio de datos. En l ira cargando el controlador los datos ledos y de l ira extrayendo lo datos para su escritura en el perifrico. Un bit del registro de estado sirve para indicar que el controlador puede transferir una palabra. En las operaciones de lectura esto significa que ha cargado en el registro de datos un nuevo valor, mientras que en las de escritura significa que necesita un nuevo dato. Otro: bits de este registro sirven para que el controlador indique los problemas que ha encontrado en la ejecucin de la ltima operacin de entrada/salida.

Digitalizacin realizada con propsito acadmico

24

Sistemas operativos. Una visin aplicada

Figura 1.22 Modelo de Perifrico El registro de control sirve para indicarle al controlador las operaciones que ha de realizar. Los distintos bits de este registro indican distintas accione que ha de realizar el perifrico. El disco magntico El disco magntico es, para el sistema operativo, el perifrico ms importante, puesto que sirve de espacio de intercambio a la memoria virtual y sirve de almacenamiento permanente para los programa y los datos, encargndose el sistema operativo de la gestin de este tipo de dispositivo. Para entender la forma en que el sistema operativo trata a los discos magnticos es necesario conocer las caractersticas de los mismos, entre las que destacaremos tres: organizacin de la informacin, tiempo de acceso y velocidad de transferencia. La organizacin de la informacin del disco se realiza en contenedores de tamao fijos denominados sectores (tamaos tpicos del sector son 256, 512 o 1.024 bytes). Como muestra Figura 1.23, el disco se divide en pistas que, a su vez, se dividen en sectores. Las operaciones se realizan a nivel de sector, es decir, no se puede escribir o leer una palabra o byte individual: hay que escribir o leer de golpe uno o varios sectores. El tiempo de acceso de estos dispositivos viene dado por el tiempo que tardan en Posicionar el brazo en la pista deseada, esto es, por el tiempo de bsqueda, ms el tiempo que tarda la informacin de la pista en pasar delante de la cabeza por efecto de la rotacin del disco, esto es, mas la

Figura 1.23. Organizacin del disco.

Digitalizacin realizada con propsito acadmico

Conceptos arquitectnicos de la computadora

25

latencia. Obsrvese que estos tiempos dependen de la posicin de partida y de la posicin deseada. No se tarda lo mismo en mover el brazo de la pista 1 a la 2 que de la 1 a la 1.385. Por ello, los fabricantes suelen dar los valores medios y los peores. Un sistema de cabeza fija presenta solamente latencia sin tiempo de sincronizacin. por tanto, suponiendo que gira a 10.000 rpm, tendr un tiempo medio de acceso de 3 ms (1/2 revolucin). Dispositivos de bloques y caracteres El disco magntico requiere que se lea o escriba un bloque de informacin (uno o varios sectores), por lo que se denomina dispositivo de bloques. Existen otros dispositivos de bloques como las cintas magnticas, los DVD, los CD y los controladores de red. Todos ellos se caracterizan por tener un tiempo de acceso importante comparado con el tiempo de transferencia de una palabra, por lo que interesa amortizar este tiempo de acceso transfiriendo bastantes palabras. Otros dispositivos como el teclado se denominan de caracteres. puesto que la operacin bsica de acceso es de un carcter. Estos dispositivos se cauterizan por ser lentos y por no tener un tiempo de acceso apreciablemente mayor que el tiempo de transferencia de una palabra. 1.7.2. E/S y concurrencia

Los perifricos son sensiblemente ms lentos que el procesador, por ejemplo, durante el tiempo que se tarda en acceder a una informacin almacenada en un disco, un procesador moderno es capaz de ejecutar varios millones de instrucciones de mquina (Prestaciones 1.3). Es, por tanto, muy conveniente que mientras se est esperando a que se complete una operacin de E/S el procesador est ejecutando un programa til y no un bucle de espera.

Las computadoras presentan tres modos bsicos de realizar operaciones de E/S: E/S programada, E/S por interrupciones y E/S por DMA (direct memory access). La E/S programada exige que el procesador est ejecutando un programa de E/S, por lo que no existe ninguna concurrencia entre el procesador y la E/S. Sin embargo, en los otros dos modos de E/S el procesador no tiene que estar tendiendo directamente a la E/S, por lo que puede estar ejecutando otro programa. Se dice, entonces, que existe concurrencia entre la E/S y el procesador. Esta concurrencia permite optimizar el uso del procesador, pero exige que las unidades de control de los perifricos sean ms inteligentes, lo que supone que sean ms complejas y ms caras. En trminos generales, una operacin de E/S se compone de tres fases, envo de la orden al perifrico, lectura o escritura de los datos y fin de la operacin. La fase de envo de la orden consiste en escribir la orden en los registros del

Digitalizacin realizada con propsito acadmico

26

Sistemas operativos. Una visin aplicada

controlador del perifrico, operacin que puede hacerse mediante unas cuantas instrucciones de salida, Dado que el controlador es un dispositivo electrnico, estas escrituras se pueden hacer a la velocidad de procesador, sin esperas intermedias.

En la fase de transferencia de los datos interviene el perifrico, tpicamente mucho ms lento que el procesador. Imaginemos una lectura a disco. En caso de realizar esta operacin con E/S programada debemos ejecutar un bucle que lea el registro de estado del controlador, observe si esta activo el bit de dato disponible y, en caso positivo, lo lea. El bucle podra tener la estructura que se muestra en el Programa 1.1.

Programa 1.1. Bucle de E/S programada. n= O while n < m read registro_control if (registro_control = datoAisponible) read registro_datos store en memoria principal n=n+ 1 endi f endwhile

Observe que, hasta que se disponga del primer dato, el bucle puede ejecutarse cerca del milln de veces y que, entre dato y dato, se repetir varias decenas de veces. Al llegar a completar nmero m de datos a leer, se termina la operacin de E/S. Se denomina espera activa cuando un programa queda en un bucle hasta que ocurra un evento. La espera activa consume tiempo del procesador, por lo que es muy poco recomendable cuando el tiempo de espera es grande en comparacin con el tiempo de ejecucin de una instruccin En caso de utilizar E/S con interrupciones, el procesador, tras enviar la orden al controlador del perifrico, puede dedicarse a ejecutar otro programa. Cuando el controlador disponga de un dato generar una interrupcin. La rutina de interrupcin deber hacer la lectura del dato y su almacenamiento en memoria principal, lo cual conlleva un cierto tiempo del procesador. En este caso se dice que se hace espera pasiva, puesto que el programa que espera el evento no esta ejecutndose la interrupcin se encarga de al programa cuando ocurre el evento. Finalmente, en caso de utilizar E/S por DMA, el controlador se encarga directa de ir transfiriendo los datos del perifrico a memoria sin molestar al procesador. Una vez terminada la transferencia de todos los datos, genera una interrupcin de forma que se sepa que ha terminado (Recordatorio 1.2).

La Tabla 1.2 presenta la ocupacin del procesador en la realizacin de las distintas actividades de una operacin de E/S segn el modelo de FIS utilizado.

Digitalizacin realizada con propsito acadmico

Conceptos arquitectnicos de la computadora

27

Tabla 1.2. Ocupacin del procesador en operaciones de entrada/salida Puede observarse que la solucin que presenta la mxima concurrencia y que descarga al mximo al procesador es la de E/S por DMA. Por otro lado, es la que exige una mayor inteligencia por parte del controlador. Un aspecto fundamental de esta concurrencia es su explotacin. En efecto, de nada sirve descargar al procesador del trabajo de E/S si durante ese tiempo no tiene nada til que hacer. Ser una funcin importante del sistema operativo el explotar esta concurrencia la E/S y el procesador, haciendo que este ultimo tenga trabajo til el mayor tiempo posible. 1.7.3. E/S y memoria virtual La memoria virtual presenta un problema importante frente a la entrada/salida. En efecto, el programa que solicita una operacin de E/S especific