carretero-jesus sistemas operativos una visión aplicada xa

710
 

Upload: boris-cornejo

Post on 12-Oct-2015

24 views

Category:

Documents


0 download

TRANSCRIPT

  • Digitalizacin realizada con propsito acadmico

    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 aplicada

    Jess Carretero Prez Flix Garca Carballeira

    Universidad Carlos II de Madrid

    Pedro Miguel Anasagasti Fernando Prez Costoya

    Universidad 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 v

    Contenido Prlogo XV 1. CONCEPTOS ARQUITECTNICOS DE LA COMPUTADORA 1

    1.1. Estructura y funcionamiento de la computadora 2 1.2. Modelo de programacin de la computadora 3

    1.2.1. Niveles de ejecucin 4 1.2.2. Secuencia de funcionamiento de la computadora 5 1.2.3. Registros de control y estado 6

    1.3. Interrupciones 7 1.4. El reloj 9 1.5. Jerarqua de memoria 10

    1.5.1. Migracin de la informacin 11 1.5.2. Parmetros caractersticos de la jerarqua de memoria 12 1.5.3. Coherencia 12 1.5.4. Direccionamiento 12 1 .5.5. La proximidad referencial 13

    1.6. La memoria virtual 15 1.6.1. Concepto de memoria virtual 16 1.6.2. La tabla de pginas 18 1.6.3. Caso de varios programas activos 22 1.6.4. Asignacin de memoria principal y memoria virtual 22

    1.7. Entrada/salida 23 1.7.1. Perifricos 23 1.7.2. E/S y concurrencia 25 1.7.3. E/S y memoria virtual 27

    1.8. Proteccin 27 1.8.1. Mecanismos de proteccin del procesador 27 1.8.2. Mecanismos de proteccin de memoria 28

    1.9. Multiprocesador y multicomputadora 30 1.10. Puntos a recordar 31 1.11. Lecturas recomendadas 31 1.12. Ejercicios 32

  • vi Contenido

    Digitalizacin realizada con propsito acadmico

    2. INTRODUCCIN A LOS SISTEMAS OPERATIVOS 33

    2.1. Qu es un sistema operativo 34 2.1.1. Mquina desnuda 34 2.1.2. Funciones del sistema operativo 34 2.1.3. Concepto de usuario y de grupo de usuarios 37

    2.2. Arranque de la computadora 38 2.3. Componentes y estructura del sistema operativo 41

    2.3.1. Componentes del sistema operativo 41 2.3.2. Estructura del sistema operativo 42

    2.4. Gestin de procesos 44 2.4.1. Servicios de procesos 45

    2.5. Gestin de memoria 46 2.5.1. Servicios 47

    2.6. Comunicacin y sincronizacin entre procesos 47 2.6.1. Servicios de comunicacin y sincronizacin 48

    2.7. Gestin de la E/S 49 2.7.1. Servicios 50

    2.8. Gestin de archivos y directorios 50 2.8.1. Servicio de archivos 50 2.8.2. Servicio de directorios 53 2.8.3. Sistema de archivos 55

    2.9. Seguridad y proteccin 55 2.10. Activacin del sistema operativo 56 2.11. Interfaz del programador 59

    2.11.1. POSIX 59 2.11.2. Win32 60

    2.12. Interfaz de usuario del sistema operativo 61 2.12.1. Funciones de la interfaz de usuario 62 2.12.2. Interfaces alfanumricas 63 2.12.3. Interfaces grficas 65

    2.13. Historia de los sistemas operativos 67 2.14. Puntos a recordar 72 2.15. Lecturas recomendadas 74 2.16. Ejercicios 74

    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

  • Contenido vii

    Digitalizacin realizada con propsito acadmico

    3.5. Estados del proceso 93 3.5.1. Cambio de contexto 95

    3.6. Procesos ligeros 98 3.6.1. Estados del proceso ligero 99 3.6.2. Paralelismo 100 3.6.3. Diseo con procesos ligeros 101

    3.7. Planificacin 102 3.7.1. Algoritmos de planificacin 105 3.7.2. Planificacin en POSIX 107 3.7.3. Planificacin en Windows NT/2000 108

    3.8. Seales y excepciones 110 3.8.1. Seales 110 3.8.2. Excepciones 111

    3.9. Temporizadores 112 3.10. Servidores y demonios 112 3.11. Servicios POSIX 114

    3.11.1. Servicios POSIX para la gestin de procesos 114 3.11.2. Servicios POSIX de gestin de procesos ligeros 131 3.11.3. Servicios POSIX para la planificacin de procesos 136 3.11.4. Servicios POSIX para gestin de seales y temporizadores 139

    3.12. Servicios de W1N32 146 3.12.1. Servicios de Win32 para la gestin de procesos 146 3.12.2. Servicios de Win32 para la gestin de procesos ligeros 152 3.12.3. Servicios de planificacin en Win32 154 3.12.4. Servicios de Win32 para el manejo de excepciones 155 3.12.5. Servicios de temporizadores 157

    3.13. Puntos a recordar 159 3.14. Lecturas recomendadas 160 3.15. Ejercicios 160

    4. GESTIN DE MEMORIA 163

    4.1. Objetivos del sistema de gestin de memoria 164 4.2. Modelo de memoria de un proceso 172

    4.2.1. Fases en la generacin de un ejecutable 172 4.2.2. Mapa de memoria de un proceso 178 4.2.3. Operaciones sobre regiones 182

    4.3. Esquemas de memoria basados en asignacin contigua 183 4.4. Intercambio 186 4.5. Memoria virtual 187

    4.5.1. Paginacin 188 4.5.2. Segmentacin 197 4.5.3. Segmentacin paginada 198 4.5.4. Paginacin por demanda 199 4.5.5. Polticas de reemplazo 201 4.5.6. Poltica de asignacin de marcos de pgina 204 4.5.7. Hiperpaginacin 205 4.5.8. Gestin del espacio de swap 207

    4.5.9. Operaciones sobre las regiones de un proceso 208

  • viii Contenido

    Digitalizacin realizada con propsito acadmico

    4.6. Archivos proyectados en memoria 210 4.7. Servicios de gestin de memoria 212

    4.7.1. Servicios genricos de memoria 212 4.7.2. Servicios de memoria de POSIX 212 4.7.3. Servicios de memoria de Win32 216

    4.8. Puntos a recordar 219 4.9. Lecturas recomendadas 220 4.10. Ejercicios 221

    5. COMUNICACIN Y SINCRONIZACIN DE PROCESOS 223

    5.1. Procesos concurrentes 224 5.1.1. Tipos de procesos concurrentes 225

    5.2. Problemas clsicos de comunicacin y sincronizacin 226 5.2.1. El problema de la seccin crtica 226 5.2.2. Problema del productor-consumidor 230 5.2.3. El problema de los lectores-escritores 230 5.2.4. Comunicacin cliente-servidor 231

    5.3. Mecanismos de comunicacin y sincronizacin 232 5.3.1. Comunicacin mediante archivos 232 5.3.2. Tuberas 233 5.3.3. Sincronizacin mediante seales 237 5.3.4. Semforos 237 5.3.5. Memoria compartida 242 5.3.6. Mutex y variables condicionales 243

    5.4. Paso de mensajes 248 5.5. Aspectos de implementacin de los mecanismos de sincronizacin 253

    5.5.1. Implementacin de la espera pasiva 254 5.6. Interbloqueos 257 5.7. Servicios POSIX 258

    5.7.1. Tuberas 258 5.7.2. Semforos POSIX 265 5.7.3. Mutex y variables condicionales en POSIX 270 5.7.4. Colas de mensajes POSIX 274

    5.8. Servicios Wjn32 285 5.8.1. Tuberas 286 5.8.2. Secciones crticas 294 5.8.3. Semforos 295 5.8.4. Mutex y eventos 299 5.8.5. Mailslots 303

    5.9. Puntos a recordar 305 5.10. Lecturas recomendadas 306 5.11. Ejercicios 306

    6. INTERBLOQUEOS 309

    6.1. Los interbloqueos: una historia basada en hechos reales 310 6.2. Los interbloqueos en un sistema informtico 311

    6.2.1. Tipos de recursos 311

  • Contenido ix

    Digitalizacin realizada con propsito acadmico

    6.3. Un modelo del sistema 317

    6.3.1. Representacin mediante un grafo de asignacin de recursos 318 6.3.2. Representacin matricial 322

    6.4. Definicin y caracterizacin del interbloqueo 324 6.4.1. Condicin necesaria y suficiente para el interbloqueo 325

    6.5. Tratamiento del interbloqueo 326 6.6. Deteccin y recuperacin del interbloqueo 327

    6.6.1. Deteccin del interbloqueo 328 6.6.2. Recuperacin del interbloqueo 334

    6.7. Prevencin del interbloqueo 334 6.7.1. Exclusin mutua 335 6.7.2. Retencin y espera 336 6.7.3. Sin expropiacin 336 6.7.4. Espera circular 337

    6.8. Prediccin del interbloqueo 337 6.8.1. Concepto de estado seguro 338 6.8.2. Algoritmos de prediccin 339

    6.9. Tratamiento del interbloqueo en los sistemas operativos 345 6.10. Puntos a recordar 347 6.11. Lecturas recomendadas 349 6.12. Ejercicios 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

  • x Contenido

    Digitalizacin realizada con propsito acadmico

    7.8. El terminal 397 7.8.1. Modo de operacin del terminal 397 7.8.2. El hardware del terminal 398 7.8.3. El software del terminal 400

    7.9. La red 404 7.10. Servicios de entrada/salida 405

    7.10.1. Servicios genricos de entrada/salida 405 7.10.2. Servicios de entrada/salida en POSIX 406 7.10.3. Servicios de entrada/salida en Win32 410

    7.11. Puntos a recordar 414 7.12. Lecturas recomendadas 416 7.13. Ejercicios 417

    8. GESTIN DE ARCHIVOS Y DIRECTORIOS 419

    8.1. Visin de usuario del sistema de archivos 420 8.2. Archivos 420

    8.2.1. Concepto de archivo 421 8.2.2. Nombres de archivos 423 8.2.3. Estructura de un archivo 424 8.2.4. Mtodos de acceso 427 8.2.5. Semnticas de coutilizacin 428

    8.3. Directorios 429 8.3.1. Concepto de directorio 429 8.3.2. Estructuras de directorio 432 8.3.3. Nombres jerrquicos 435 8.3.4. Construccin de la jerarqua de directorios 437

    8.4. Servicios de archivos y directorios 438 8.4.1. Servicios genricos para archivos 439 8.4.2. Servicios POSIX para archivos 440 8.4.3. Ejemplo de uso de servicios POSIX para archivos 443 8.4.4. Servicios Win32 para archivos 445 8.4.5. Ejemplo de uso de servicios Win32 para archivos 449 8.4.6. Servicios genricos de directorios 451 8.4.7. Servicios POSIX de directorios 451 8.4.8. Ejemplo de uso de servicios POSIX para directorios 454 8.4.9. Servicios Win32 para directorios 456 8.4.10. Ejemplo de uso de servicios Win32 para directorios 458

    8.5. Sistemas de archivos 459 8.5.1. Estructura del sistema de archivos 461 8.5.2. Otros tipos de sistemas de archivos 465

    8.6. El servidor de archivos 468 8.6.1. Estructura del servidor de archivos 469 8.6.2. Estructuras de datos asociadas con la gestin de archivos 472 8.6.3. Mecanismos de asignacin y correspondencia de bloques a archivos 474 8.6.4. Mecanismos de gestin de espacio libre 477 8.6.5. Mecanismos de incremento de prestaciones 479 8.6.6. Montado de sistemas de archivos e interpretacin de nombres 483

  • Contenido xi

    Digitalizacin realizada con propsito acadmico

    8.6.7. Fiabilidad y recuperacin 485 8.6.8. Otros servicios 489

    8.7. Puntos a recordar 491 8.8. Lecturas recomendadas 493 8.9. Ejercicios 493

    9. SEGURIDAD Y PROTECCIN 497

    9.1. Conceptos de seguridad y proteccin 498 9.2. Problemas de seguridad 499

    9.2.1. Uso indebido o malicioso de programas 500 9.2.2. Usuarios inexpertos o descuidados 501 9.2.3. Usuarios no autorizados 501 9.2.4. Virus 502 9.2.5. Gusanos 503 9.2.6. Rompedores de sistemas de proteccin 504 9.2.7. Bombardeo 504

    9.3. Polticas de seguridad 505 9.3.1. Poltica militar 505 9.3.2. Polticas comerciales 507 9.3.3. Modelos de seguridad 508

    9.4. Diseo de sistemas operativos seguros 509 9.4.1. Principios de diseo y aspectos de seguridad 509 9.4.2. Tcnicas de diseo de sistemas seguros 512 9.4.3. Controles de seguridad externos al sistema operativo 515 9.4.4. Controles de seguridad del sistema operativo 518

    9.5. Criptografa 519 9.5.1. Conceptos bsicos 519 9.5.2. Sistemas de clave privada y sistemas de clave pblica 522

    9.6. Clasificaciones de seguridad 524 9.6.1. Clasificacin del Departamento de Defensa (D0D) de Estados

    Unidos 524 9.7. Seguridad y proteccin en sistemas operativos de propsito general 526

    9.7.1. Autenticacin de usuarios 526 9.7.2. Palabras clave o contraseas 528 9.7.3. Dominios de proteccin 531 9.7.4. Matrices de proteccin 534 9.7.5. Listas de control de accesos 535 9.7.6. Capacidades 538

    9.8. Servicios de proteccin y seguridad 540 9.8.1. Servicios genricos 540 9.8.2. Servicios POSIX 541 9.8.3. Ejemplo de uso de los servicios de proteccin de POSIX 543 9.8.4. Servicios de Win32 545 9.8.5. Ejemplo de uso de los servicios de proteccin de Win32 548

    9.9. El sistema de seguridad de Windows NT 550 9.10. Kerberos 552 9.11. Puntos a recordar 556

  • xii Contenido

    Digitalizacin realizada con propsito acadmico

    9.12. Lecturas recomendadas 557 9.13. Ejercicios 557

    10. INTRODUCCIN A LOS SISTEMAS DISTRIBUIDOS 561

    10.1. Sistemas distribuidos 562 10.1.1. Caractersticas de un sistema distribuido 562 10.1.2. Redes e interconexin 563 10.1.3. Protocolos de comunicacin 564

    10.2. Sistemas operativos distribuidos 566 10.3. Comunicacin de procesos en sistemas distribuidos 570

    10.3.1. Sockets 570 10.3.2. Llamadas a procedimientos remotos 582 10.3.3. Comunicacin de grupos 592

    10.4. Sincronizacin de procesos en sistemas distribuidos 593 10.4.1. Ordenacin de eventos en sistemas distribuidos 593 10.4.2. Exclusin mutua en sistemas distribuidos 596

    10.5. Gestin de procesos 598 10.5.1. Asignacin de procesos a procesadores 598 10.5.2. Algoritmos de distribucin de la carga 599 10.5.3. Planificacin de procesos en sistemas distribuidos 601

    10.6. Sistemas de archivos distribuidos 601 10.6.1. Nombrado 602 10.6.2. Mtodos de acceso remotos 603 10.6.3. Utilizacin de cache en sistemas de archivos distribuidos 604

    10.7. Gestin de memoria en sistemas distribuidos 606 10.8. Puntos a recordar 607 10.9. Lecturas recomendadas 609 10.10. Ejercicios 609

    11. ESTUDIO DE CASOS: LINUX 611

    11.1. Historia de LINUX 612 11.2. Caractersticas y estructura de LINUX 613 11.3. Gestin de procesos 614 11.4. Gestin de memoria 615 11.5. Entrada/salida 616 11.6. Sistema de archivos 616 11.7. Puntos a recordar 617 11.8. Lecturas recomendadas 617

    12. ESTUDIO DE CASOS: WINDOWS NT 619

    12.1. Introduccin 620 12.2. Principios de diseo de Windows NT 620 12.3. Arquitectura de Windows NT 621

  • Contenido xiii

    Digitalizacin realizada con propsito acadmico

    12.4. El ncleo de Windows NT 623 12.5. El ejecutivo de Windows NT 624

    12.5.1. Gestor de objetos 624 12.5.2. Gestor de procesos 625 12.5.3. Gestor de memoria virtual 627 12.5.4. Llamada a procedimiento local 630 12.5.5. Gestor de entrada/salida 631

    12.6. Subsistemas de entorno de ejecucin 635 12.7. Sistemas de archivos de Windows NT 636

    12.7.1. Sistemas de archivos tipo FAT 637 12.7.2. Sistemas de archivos de alto rendimiento (HPFS) 638 12.7.3. NTFS 639 12.7.4. Comparacin de los sistemas de archivos PAT, HPFS y NTFS 642

    12.8. El subsistema de seguridad 642 12.8.1. Autenticacin de usuarios 643 12.8.2. Listas de control de acceso en Windows NT 645

    12.9. Mecanismos para tolerancia a fallos en Windows NT 646 12.10. Puntos a recordar 648 12.11. Lecturas recomendadas 649

    A. Comparacin de los servicios POSIX y Win32 651 B. Entorno de programacin de sistemas operativos 657 C. Trabajos prcticos de sistemas operativos 669 Bibliografa 709 ndice 721

  • o

    Digitalizacin realizada con propsito acadmico

  • Digitalizacin realizada con propsito acadmico xv

    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 LIBRO A 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.

  • xvi Prlogo

    Digitalizacin realizada con propsito acadmico

    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 LIBRO El 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,

  • Prlogo xvii

    Digitalizacin realizada con propsito acadmico

    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 de bloqueos mutuos entre procesos, o interbloqueos. En este captulo se presenta el concepto de interbloqueo, as como los principales mtodos de modelado de interbloqueos. Adems, se describen los principales algoritmos existentes para gestin de interbloqueos, incluyendo los de 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

  • xviii Prlogo

    Digitalizacin realizada con propsito acadmico

    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.

  • Prlogo xix

    Digitalizacin realizada con propsito acadmico

    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 1

    1 Conceptos arquitectnicos

    de la computadora

    En 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.

  • 2 Sistemas operativos. Una visin aplicada

    Digitalizacin realizada con propsito acadmico

    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

  • Conceptos arquitectnicos de la computadora 3

    Digitalizacin realizada con propsito acadmico

    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 funcio-namiento 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).

  • 4 Sistemas operativos. Una visin aplicada

    Digitalizacin realizada con propsito acadmico

    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.

  • Conceptos arquitectnicos de la computadora 5

    Digitalizacin realizada con propsito acadmico

    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 modifi-car 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).

  • 6 Sistemas operativos. Una visin aplicada

    Digitalizacin realizada con propsito acadmico

    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.

  • Conceptos arquitectnicos de la computadora 7

    Digitalizacin realizada con propsito acadmico

    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.

  • 8 Sistemas operativos. Una visin aplicada

    Digitalizacin realizada con propsito acadmico

    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.

  • Conceptos arquitectnicos de la computadora 9

    Digitalizacin realizada con propsito acadmico

    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.

  • 10 Sistemas operativos. Una visin aplicada

    Digitalizacin realizada con propsito acadmico

    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

  • Conceptos arquitectnicos de la computadora 11

    Digitalizacin realizada con propsito acadmico

    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.

  • 12 Sistemas operativos. Una visin aplicada

    Digitalizacin realizada con propsito acadmico

    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:

    Tiempo de acierto. Penalizacin de fallo. Tasa de aciertos (Hrk) del nivel k.

    1.5.3. 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.

  • Conceptos arquitectnicos de la computadora 13

    Digitalizacin realizada con propsito acadmico

    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.

  • 14 Sistemas operativos. Una visin aplicada

    Digitalizacin realizada con propsito acadmico

    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.

  • Conceptos arquitectnicos de la computadora 15

    Digitalizacin realizada con propsito acadmico

    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

  • 16 Sistemas operativos. Una visin aplicada

    Digitalizacin realizada con propsito acadmico

    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.

  • Conceptos arquitectnicos de la computadora 17

    Digitalizacin realizada con propsito acadmico

    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. .

  • 18 Sistemas operativos. Una visin aplicada

    Digitalizacin realizada con propsito acadmico

    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

  • Conceptos arquitectnicos de la computadora 19

    Digitalizacin realizada con propsito acadmico

    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.

  • 20 Sistemas operativos. Una visin aplicada

    Digitalizacin realizada con propsito acadmico

    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 llama-das 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.

  • Conceptos arquitectnicos de la computadora 21

    Digitalizacin realizada con propsito acadmico

    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.

  • 22 Sistemas operativos. Una visin aplicada

    Digitalizacin realizada con propsito acadmico

    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.

  • Conceptos arquitectnicos de la computadora 23

    Digitalizacin realizada con propsito acadmico

    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.

  • 24 Sistemas operativos. Una visin aplicada

    Digitalizacin realizada con propsito acadmico

    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.

  • Conceptos arquitectnicos de la computadora 25

    Digitalizacin realizada con propsito acadmico

    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