867

Sistemas operativos. Aspectos internos y principios de …cotana.informatica.edu.bo/downloads/Sistemas Operativos.pdf · 2.1 Objetivos y funciones de los sistemas operativos 54 2.2

Embed Size (px)

Citation preview

  • Sistemas operativosAspectos internos y principios de diseo

    Quinta Edicin

    WILLIAM STALLINGS

    Traduccin y revisin tcnica

    Jos Mara Pea SnchezFernando Prez Costoya

    Mara de los Santos Prez HernndezVctor Robles Forcada

    Francisco Javier Rosales Garca

    Departamento de Arquitectura y Tecnologa de Sistemas InformticosFacultad de Informtica

    Universidad Politcnica de Madrid

    Madrid Mxico Santaf de Bogot Buenos Aires Caracas Lima Montevideo San Juan San Jos Santiago So Paulo White Plains

    0-Primeras 12/5/05 17:09 Pgina iii

  • SISTEMAS OPERATIVOSWilliam Stallings

    Pearson Educacin, S.A., Madrid, 2005

    Materia: Informtica 681.3

    Formato: 195 x 250 mm. Pginas: 872

    Todos los derechos reservados.Queda prohibida, salvo excepcin prevista en la Ley, cualquier forma de reproduccin, distribucin, comunicacin pblica y transformacin de esta obra sin contar con autorizacin de los titulares de propiedad intelectual. La infraccin de los derechos mencionados puede ser constitutiva de delito contra la propiedad intelectual (arts. 270 y sgts. Cdigo Penal).

    DERECHOS RESERVADOS 2005 respecto a la primera edicin en castellano por:PEARSON EDUCACIN, S.A.C/ Ribera del Loira, 2828042 Madrid (Espaa)

    SISTEMAS OPERATIVOSWilliam StallingsISBN: 84-205-4462-0Depsito Legal:PEARSON PRENTICE HALL es un sello editorial autorizado de PEARSON EDUCACIN S.A.

    Authorized translation from the English language edition, entitled OPERATING SYSTEMS, 5th

    Edition by STALLINGS, WILLIAM, published by Peason Education, Inc, publishing as PrenticeHall, Copyright 2005.ISBN: 0-13-147954-7All rights reserved. No part of this book may be reproduced or transmitted in any from or by anymeans, elecronic or mechanical, including photocopying, recording or by any informationstorage retrieval system, without permission from Pearson Education, Inc.

    Equipo editorialEditor: Miguel Martn-RomoTcnico editorial: Marta Caicoya

    Equipo de produccinDirector: Jos A. ClaresTcnico: Isabel Muoz

    Diseo de cubiertaEquipo de diseo de Pearson Educacin, S.A.

    Impreso porIMPRESO EN ESPAA - PRINTED IN SPAINEste libro ha sido impreso con papel y tintas ecolgicos

    Datos de catalogacin bibliogrfica

    0-Primeras 12/5/05 17:09 Pgina iv

    ISBN: 978-84-205-5796-0

  • PGINA WEB PARA SISTEMAS OPERATIVOS:ASPECTOS INTERNOS Y PRINCIPIOS DE DISEO,QUINTA EDICIN

    La pgina web en WilliamStallings.com/OS/OS5e.html proporciona apoyo a profesores y estudiantesque utilicen este libro. Incluye los siguientes elementos.

    MATERIAL PARA APOYO DE CURSOS

    El material para apoyo de los cursos incluye:

    Copia de las figuras del libro en formato PDF.

    Copia de las tablas del libro en formato PDF.

    Un conjunto de transparencias PowerPoint para utilizarlas como ayuda en clase.

    Notas de clase en HTML que pueden servir como material de ayuda para el estudio.

    Pgina de Recursos del Estudiante de Informtica (Computer Science Student ResourceSite): contienen gran nmero de enlaces y documentos que los estudiantes pueden encontrar ti-les para su formacin en informtica. Esta pgina incluye una revisin de las matemticas bsi-cas relacionadas; consejos para la bsqueda de informacin, redaccin, y realizacin de proble-mas en casa; enlaces a repositorios de informacin de informtica, tales como informes ybibliografas; y otros enlaces de inters.

    Una hoja de erratas del libro, actualizada casi mensualmente.

    DOCUMENTOS COMPLEMENTARIOS

    Los documentos complementarios incluyen:

    Una copia en PDF de todos los algoritmos del libro en un pseudo-cdigo de tipo Pascal de fcillectura.

    Material del libro relativo a Windows, UNIX, y Linux; reproducido en tres documentos PDF defcil referencia.

    Varios documentos que amplan lo tratado en el libro. Incluye aspectos relativos a la compleji-dad de los algoritmos, estndares de Internet y Sockets.

    CURSOS DE SISTEMAS OPERATIVOS

    La pgina web de OS5e incluye enlaces a otras pginas de cursos impartidos usando este libro. Estaspginas pueden proporcionar guas tiles sobre cmo planificar y ordenar los temas tratados, as comoun gran nmero de anotaciones y material diverso.

    vi Contenido

    0-Primeras 12/5/05 17:09 Pgina vi

  • PGINAS WEB TILES

    La pgina web de OS5e incluye tambin enlaces a otras pginas de inters. Los enlaces cubren un am-plio espectro de temas y permitirn a los estudiantes explorar aspectos concretos con gran profundidad.

    LISTA DE CORREO ELECTRNICO

    Se mantiene una lista de correo para que los profesores que utilicen este libro puedan intercambiar in-formacin, sugerencias, y preguntas entre ellos y con el autor. La informacin de suscripcin se proporcionaen la pgina web del libro.

    PROYECTOS DE SISTEMAS OPERATIVOS

    La pgina web incluye enlaces a las pginas de Nachos y BACI, que son dos paquetes software que sir-ven como entornos para implementacin de proyectos. Cada pgina incluye software para descargarcon informacin de apoyo. Vase el Apndice C para ms informacin.

    Contenido vii

    0-Primeras 12/5/05 17:09 Pgina vii

  • Contenido

    Prlogo xvii

    Captulo 0 Gua del lector 1

    0.1 Organizacin del libro 2

    0.2 Orden de presentacin de los temas 3

    0.3 Recursos en Internet y en la Web 4

    PRIMERA PARTE: ANTECECENTES 7

    Captulo 1 Introduccin a los computadores 9

    1.1 Elementos bsicos 10

    1.2 Registros del procesador 11

    1.3 Ejecucin de instrucciones 14

    1.4 Interrupciones 17

    1.5 La jerarqua de memoria 27

    1.6 Memoria cache 30

    1.7 Tcnicas de comunicacin de E/S 34

    1.8 Lecturas y sitios web recomendados 37

    1.9 Trminos clave, cuestiones de repaso y problemas 38

    Apndice 1A Caractersticas de rendimiento de las memorias de dos niveles 41

    Apndice 1B Control de procedimientos 48

    Captulo 2 Introduccin a los sistemas operativos 53

    2.1 Objetivos y funciones de los sistemas operativos 54

    2.2 La evolucin de los sistemas operativos 58

    2.3 Principales logros 67

    2.4 Desarrollos que han llevado a los sistemas operativos modernos 79

    2.5 Descripcin global de Microsoft Windows 82

    2.6 Sistemas UNIX tradicionales 91

    2.7 Sistemas UNIX modernos 94

    2.8 Linux 95

    2.9 Lecturas y sitios web recomendados 101

    2.10 Trminos clave, cuestiones de repaso y problemas 103

    Contenido ix

    0-Primeras 12/5/05 17:09 Pgina ix

  • SEGUNDA PARTE: PROCESOS 105

    Captulo 3 Descripcin y control de procesos 107

    3.1 Qu es un proceso? 108

    3.2 Estados de procesos 110

    3.3 Descripcin de los procesos 126

    3.4 Control de procesos 135

    3.5 Gestin de procesos en UNIX SVR4 143

    3.6 Resumen 149

    3.7 Lecturas recomendadas 149

    3.8 Trminos clave, cuestiones de repaso y problemas 150

    Proyecto de programacin uno. Desarrollo de un intrprete de mandatos 154

    Captulo 4 Hilos, SMP y microncleos 157

    4.1 Procesos e hilos 158

    4.2 Multiprocesamiento simtrico 172

    4.3 Microncleos 176

    4.4 Gestin de hilos y SMP en Windows 181

    4.5 Gestin de hilos y SMP en Solaris 187

    4.6 Gestin de procesos e hilos en Linux 193

    4.7 Resumen 196

    4.8 Lecturas recomendadas 196

    4.9 Trminos clave, cuestiones de repaso y problemas 197

    Captulo 5 Concurrencia. Exclusin mutua y sincronizacin 201

    5.1 Principios de la concurrencia 203

    5.2 Exclusin mutua: soporte hardware 212

    5.3 Semforos 215

    5.4 Monitores 229

    5.5 Paso de mensajes 235

    5.6 El problema de los Lectores/Escritores 241

    5.7 Resumen 245

    5.8 Lecturas recomendadas 247

    5.9 Trminos clave, cuestiones de repaso y problemas 248

    Captulo 6 Concurrencia. Interbloqueo e inanicin 257

    6.1 Fundamentos del interbloqueo 258

    6.2 Prevencin del interbloqueo 267

    x Contenido

    0-Primeras 12/5/05 17:09 Pgina x

  • 6.3 Prediccin del interbloqueo 269

    6.4 Deteccin del interbloqueo 273

    6.5 Una estrategia integrada de tratamiento del interbloqueo 277

    6.6 El problema de los filsofos comensales 277

    6.7 Mecanismos de concurrencia de UNIX 280

    6.8 Mecanismos de concurrencia del ncleo de Linux 284

    6.9 Funciones de sincronizacin de hilos de Solaris 291

    6.10 Mecanismos de concurrencia de Windows 294

    6.11 Resumen 296

    6.12 Lecturas recomendadas 297

    6.13 Trminos clave, cuestiones de repaso y problemas 297

    TERCERA PARTE: MEMORIA 305

    Captulo 7 Gestin de memoria 307

    7.1 Requisitos de gestin de memoria 308

    7.2 Particionamiento de la memoria 311

    7.3 Paginacin 321

    7.4 Segmentacin 325

    7.5 Resumen 327

    7.6 Lecturas recomendadas 327

    7.7 Trminos clave, cuestiones de repaso y problemas 328

    Apndice 7A Carga y enlace 331

    Captulo 8 Memoria virtual 339

    8.1 Hardware y estructuras de control 340

    8.2 Software del sistema operativo 358

    8.3 Gestin de memoria de UNIX y Solaris 378

    8.4 Gestin de memoria en Linux 384

    8.5 Gestin de memoria en Windows 386

    8.6 Resumen 388

    8.7 Lectura recomendada y pginas web 389

    8.8 Trminos clave, cuestiones de repaso y problemas 390

    Apndice 8A Tablas Hash 395

    CUARTA PARTE: PLANIFICACIN 399

    Captulo 9 Planificacin uniprocesador 401

    9.1 Tipos de planificacin del procesador 402

    9.2 Algoritmos de planificacin 406

    Contenido xi

    0-Primeras 12/5/05 17:09 Pgina xi

  • 9.3 Planificacin UNIX tradicional 427

    9.4 Resumen 429

    9.5 Lecturas recomendadas 431

    9.6 Trminos clave, cuestiones de repaso y problemas 431

    Apndice 9A Tiempo de respuesta 436

    Apndice 9B Sistemas de colas 438

    Proyecto de programacin dos. El planificador de HOST 444

    Captulo 10 Planificacin multiprocesador y de tiempo real 451

    10.1 Planificacin multiprocesador 452

    10.2 Planificacin de tiempo real 463

    10.3 Planificacin en Linux 477

    10.4 Planificacin en UNIX SVR4 480

    10.5 Planificacin en Windows 482

    10.6 Resumen 484

    10.7 Lecturas recomendadas 485

    10.8 Trminos clave, cuestiones de repaso y problemas 485

    QUINTA PARTE: ENTRADA/SALIDA Y FICHEROS 489

    Captulo 11 Gestin de la E/S y planificacin del disco 491

    11.1 Dispositivos de E/S 492

    11.2 Organizacin del sistema de E/S 493

    11.3 Aspectos de diseo del sistema operativo 496

    11.4 Utilizacin de buffers de E/S 500

    11.5 Planificacin del disco 503

    11.6 RAID 511

    11.7 Cache de disco 520

    11.8 E/S de UNIX SVR4 522

    11.9 E/S de Linux 527

    11.10 E/S de Windows 530

    11.11 Resumen 532

    11.12 Lecturas y sitios web recomendados 532

    11.13 Trminos clave, cuestiones de repaso y problemas 534

    Apndice 11A Dispositivos de almacenamiento en disco 537

    Captulo 12 Gestin de ficheros 547

    12.1 Descripcin bsica 548

    12.2 Organizacin y acceso a los ficheros 553

    xii Contenido

    0-Primeras 12/5/05 17:09 Pgina xii

  • 12.3 Directorios 559

    12.4 Comparticin de ficheros 563

    12.5 Bloques y registros 564

    12.6 Gestin de almacenamiento secundario 566

    12.7 Gestin de ficheros de UNIX 574

    12.8 Sistema de ficheros virtual Linux 578

    12.9 Sistema de ficheros de Windows 582

    12.10 Resumen 587

    12.11 Lecturas recomendadas 588

    12.12 Trminos clave, cuestiones de repaso y problemas 589

    SEXTA PARTE: SISTEMAS DISTRIBUIDOS Y SECURIDAD 591

    Captulo 13 Redes 595

    13.1 La necesidad de una arquitectura de protocolos 597

    13.2 La arquitectura de protocolos TCP/IP 599

    13.3 Sockets 605

    13.4 Redes en Linux 609

    13.5 Resumen 611

    13.6 Lecturas y sitios web recomendados 611

    13.7 Trminos clave, cuestiones de repaso y problemas 612

    Apndice 13A El Protocolo simple de transferencia de ficheros 614

    Captulo 14 Procesamiento distribuido, cliente/servidor y clusters 619

    14.1 Computacin cliente/servidor 620

    14.2 Paso de mensajes distribuido 630

    14.3 Llamadas a procedimiento remoto 633

    14.4 Clusters 636

    14.5 Servidor Cluster de Windows 642

    14.6 Sun Cluster 643

    14.7 Clusters de Beowulf y Linux 646

    14.8 Resumen 648

    14.9 Lecturas recomendadas y sitios web 648

    14.10 Trminos clave, cuestiones de repaso y problemas 650

    Captulo 15 Gestin de procesos distribuidos 653

    15.1 Migracin de procesos 654

    15.2 Estados globales distribuidos 660

    15.3 Exclusin mutua distribuida 665

    Contenido xiii

    0-Primeras 12/5/05 17:09 Pgina xiii

  • 15.4 Interbloqueo distribuido 675

    15.5 Resumen 685

    15.6 Lecturas recomendadas 685

    15.7 Trminos clave, cuestiones de repaso y problemas 686

    Captulo 16 Seguridad 689

    16.1 Amenazas de seguridad 690

    16.2 Proteccin 695

    16.3 Intrusos 701

    16.4 Software malicioso 713

    16.5 Sistemas confiables 722

    16.6 Seguridad en Windows 725

    16.7 Resumen 731

    16.8 Lecturas recomendadas y sitios web 732

    16.9 Trminos clave, cuestiones de repaso y problemas 733

    Apndice 16A Cifrado 736

    APNDICES 743

    Apndice A Temas de concurrencia 743

    A.1 Exclusin mutua. Tcnicas de software 744

    A.2 Condiciones de carrera y semforos 748

    A.3 El problema de la barbera 758

    A.4 Problemas 763

    Apndice B Diseo orientado a objetos 765

    B.1 Motivacin 766

    B.2 Conceptos de orientacin a objetos 767

    B.3 Beneficios del diseo orientado a objetos 771

    B.4 CORBA 772

    B.5 Lecturas y sitios web recomendados 775

    Apndice C Proyectos de programacin y de sistemas operativos 777

    C.1 Proyectos para la enseanza de sistemas operativos 778

    C.2 NACHOS 779

    C.3 Proyectos de investigacin 780

    C.4 Proyectos de programacin 780

    C.5 Tareas de lectura y de anlisis 781

    xiv Contenido

    0-Primeras 12/5/05 17:09 Pgina xiv

  • Apndice D OSP. Un entorno para proyectos de sistemas operativos 783

    D.1 Introduccin 784

    D.2 Aspectos innovadores de OSP 785

    D.3 Comparacin con otras herramientas docentes de sistemas operativos 786

    Apndice E BACI. El Sistema de programacin concurrente de Ben-Ari 789

    E.1 Introduccin 790

    E.2 BACI 790

    E.3 Ejemplos de programas BACI 793

    E.4 Proyectos BACI 797

    E.5 Mejoras al Sistema BACI 800

    Glosario 801

    Referencias 811

    Acrnimos 827

    ndice 829

    Contenido xv

    0-Primeras 13/5/05 17:21 Pgina xv

  • 0-Primeras 12/5/05 17:09 Pgina xvi

  • Prlogo

    OBJETIVOS

    Este libro se ocupa de los conceptos, la estructura y los mecanismos de los sistemas operativos. Su pro-psito es presentar, de la manera ms clara y completa posible, la naturaleza y las caractersticas de lossistemas operativos de hoy en da.

    Esta tarea es un reto por varios motivos. En primer lugar, los computadores para los que se diseanlos sistemas operativos presentan una enorme variedad. Esta diversidad incluye desde estaciones detrabajo y computadores personales para un nico usuario, pasando por sistemas compartidos de tama-o medio, hasta grandes sistemas mainframe y supercomputadores, as como mquinas especializadastales como los sistemas de tiempo real. La variedad no est slo en la capacidad y la velocidad de lasmquinas, sino tambin en los requisitos de las aplicaciones y del sistema. En segundo lugar, el rpidoritmo de cambios que ha caracterizado siempre a los sistemas informticos contina sin remitir. Diver-sas reas fundamentales en el diseo de sistemas operativos son de reciente aparicin, estando todavaactiva la investigacin sobre las mismas, as como sobre otras nuevas reas.

    A pesar de esta variedad y de este ritmo de cambios incesante, ciertos conceptos fundamentales si-guen siendo aplicables en todo momento. Evidentemente, su aplicacin depende del estado actual de latecnologa y de los requisitos particulares de la aplicacin. El objetivo de este libro es proporcionar unestudio profundo de los fundamentos del diseo de sistemas operativos y relacionarlos con aspectos dediseo contemporneos y con las tendencias actuales en el desarrollo de sistemas operativos.

    SISTEMAS DE EJEMPLO

    Este libro est destinado a dar a conocer al lector los principios de diseo y los aspectos de implemen-tacin de los sistemas operativos contemporneos. Por consiguiente, un tratamiento puramente con-ceptual o terico sera inadecuado. Para mostrar los conceptos y asociarlos a alternativas de diseo delmundo real, se han seleccionado tres sistemas operativos como ejemplos reales:

    Windows XP y Windows 2003. Un sistema operativo multitarea para computadores persona-les, estaciones de trabajo y servidores. Al tratarse de un nuevo sistema operativo, incorpora deuna manera ntida muchos de los ltimos desarrollos en la tecnologa de sistemas operativos.Adems, Windows es uno de los primeros sistemas operativos comerciales importantes que estestrechamente basado en principios de diseo orientado a objetos. Este libro se ocupa de la tec-nologa utilizada en las versiones ms recientes de Windows, XP para estaciones de trabajo y com-putadores personales, y 2003 para servidores.

    UNIX. Un sistema operativo multiusuario, originalmente destinado a minicomputadores, peroimplementado en un amplio rango de mquinas desde poderosos microcomputadores a super-computadores. Se incluyen dos versiones de UNIX. UNIX SVR4 es un sistema muy usado queincorpora muchas caractersticas avanzadas. Solaris es la versin comercial ms utilizada deUNIX. Incluye procesamiento multihilo y otras caractersticas que no se encuentran en SVR4 nien la mayora de las otras versiones de UNIX.

    Linux. Una versin de UNIX cuyo cdigo fuente est disponible libremente, que es muy utili-zada actualmente.

    Contenido xvii

    0-Primeras 12/5/05 17:09 Pgina xvii

  • Estos sistemas se seleccionaron por su relevancia y representatividad. El estudio de los sistemas deejemplo se distribuye a lo largo del texto en vez de agruparlos en un solo captulo o apndice. As, du-rante el estudio de la concurrencia, se describen los mecanismos de concurrencia de cada sistema de ejem-plo, y se explica la motivacin de las diversas opciones de diseo individuales. Con este enfoque, losconceptos de diseo estudiados en cualquier captulo se refuerzan inmediatamente con ejemplos delmundo real.

    AUDIENCIA A LA QUE EST DESTINADO

    Este libro est destinado tanto a una audiencia de carcter acadmico como a una de perfil profesio-nal. Como libro de texto, est pensado para un curso de sistemas operativos de un semestre para lastitulaciones de Informtica, Ingeniera de Computadores e Ingeniera Elctrica. Incluye los temas re-comendados por el Computer Curricula 2001 para programas universitarios de informtica, realizadopor el equipo de trabajo conjunto para planes de estudio de informtica (Joint Task Force on Compu-ting Curricula) de la sociedad informtica (Computer Society) de IEEE y ACM. El libro tambin tra-ta los temas recomendados por Guidelines for Associate-Degree Curricula in Computer Science 2002,tambin del equipo de trabajo conjunto para planes de estudio de informtica de la sociedad inform-tica de IEEE y ACM. El libro sirve igualmente como un volumen de referencia bsico, adecuado parael estudio personal.

    ORGANIZACIN DEL LIBRO

    Este libro se divide en seis partes (vase el Captulo 0 para una visin general):

    Antecedentes.

    Procesos.

    Memoria.

    Planificacin.

    Entrada/salida y ficheros.

    Sistemas distribuidos y seguridad.

    Este libro incluye diversas caractersticas pedaggicas, como el uso de numerosas figuras y tablaspara facilitar el estudio. Cada captulo incluye una lista de trminos clave, preguntas de repaso, problemas,propuestas de lecturas adicionales y direcciones de sitios web relevantes. Adems, est disponible paralos profesores una batera de preguntas de test.

    SERVICIOS DE INTERNET PARA PROFESORES Y ESTUDIANTES

    Hay un sitio web asociado a este libro que proporciona apoyo a los estudiantes y a los profesores. El si-tio incluye enlaces a otros sitios relevantes, copias originales de las transparencias de las figuras y ta-blas del libro en formato PDF (Adobe Acrobat), transparencias en PowerPoint e informacin para dar-se de alta en la lista de correo de Internet del libro. La pgina web est enWilliamStallings.com/OS/OS5e.html. Vase la Seccin Sitio web de sistemas operativos. Aspectos in-ternos y principios de diseo anterior a este prlogo para ms informacin. Se ha establecido una lis-ta de correo para que los profesores que usan este libro puedan intercambiar informacin, sugerenciasy preguntas entre s y con el propio autor. En cuanto se descubran errores tipogrficos o de otro tipo, se

    xviii Prlogo

    0-Primeras 12/5/05 17:09 Pgina xviii

  • publicar una lista de erratas en WilliamStallings.com. Por ltimo, hay que resaltar que el autor man-tiene un sitio para el estudiante de informtica en WilliamStallings.com/StudentSupport.html.

    PROYECTOS DE SISTEMAS OPERATIVOS

    Para muchos instructores, un elemento importante de un curso de sistemas operativos es un proyecto oun conjunto de proyectos mediante los cuales el estudiante obtiene una experiencia prctica que le per-mite reforzar los conceptos del libro. Este libro proporciona un incomparable grado de apoyo en ese as-pecto, incluyendo un componente de proyectos en el curso. En el interior del libro se definen dos pro-yectos de programacin principales. El sitio web del profesor ofrece referencias en lnea que pueden utilizarlos estudiantes para abordar estos proyectos de forma gradual. Se proporciona informacin sobre trespaquetes de software que sirven como entornos de trabajo para la implementacin de proyectos: OSPy NACHOS para desarrollar componentes de un sistema operativo, y BACI para estudiar los mecanis-mos de concurrencia. Adems, el sitio web del profesor incluye una serie de pequeos proyectos deprogramacin, cada uno pensado para desarrollarse en una o dos semanas, que cubre un amplio rangode temas y que pueden implementarse en cualquier lenguaje apropiado y sobre cualquier plataforma, ascomo proyectos de investigacin y tareas de lectura y anlisis. Vase los apndices para ms detalles.

    NOVEDADES DE LA QUINTA EDICIN

    En esta nueva edicin, el autor ha intentado recoger las innovaciones y mejoras que ha habido en esta dis-ciplina durante los cuatro aos que han transcurrido desde la ltima edicin, manteniendo un tratamien-to amplio y completo de esta materia. Asimismo, varios profesores que imparten esta disciplina, as comoprofesionales que trabajan en este campo, han revisado en profundidad la cuarta edicin. Como conse-cuencia de este proceso, en muchas partes del libro, se ha mejorado la claridad de la redaccin y de lasilustraciones que acompaan al texto. Adems, se han incluido varios problemas de carcter realista.

    Adems de mejoras pedaggicas y en su presentacin de cara al usuario, el contenido tcnico dellibro se ha actualizado completamente, para reflejar los cambios actuales en esta excitante disciplina.El estudio de Linux se ha extendido significativamente, basndose en su ltima versin: Linux 2.6. Elestudio de Windows se ha actualizado para incluir Windows XP y Windows Server 2003. Se ha revisa-do y extendido el material dedicado a la concurrencia para mejorar su claridad, moviendo parte del mis-mo a un apndice, e incluyendo un estudio sobre condiciones de carrera. El tratamiento de la planifi-cacin en esta nueva versin incluye un estudio de la inversin de prioridades. Hay un nuevo captulosobre redes, presentndose el API de Sockets. Adems, se ha ampliado el tratamiento del diseo orien-tado a objetos.

    AGRADECIMIENTOS

    Esta nueva edicin se ha beneficiado de la revisin realizada por diversas personas, que aportaron ge-nerosamente su tiempo y experiencia. Entre ellos se incluyen Stephen Murrell (Universidad de Miami),David Krumme (Universidad de Tufts), Duncan Buell (Universidad de Carolina), Amit Jain (Universi-dad de Bosie State), Fred Kuhns (Universidad de Washington, St.Louis), Mark McCullen (Universidadde Michigan State), Jayson Rock (Universidad de Wisconsin-Madison), David Middleton (Universidadde Arkansas Technological) y Binhai Zhu (Universidad de Montana State), todos revisaron la mayor par-te o todo el libro.

    El autor da las gracias tambin a mucha gente que realiz revisiones detalladas de uno o ms cap-tulos: Javier Eraso Helguera, Andrew Cheese, Robert Kaiser, Bhavin Ghandi, Joshua Cope, Luca Ve-

    Prlogo xix

    0-Primeras 12/5/05 17:09 Pgina xix

  • nuti, Gregory Sharp, Marisa Gil, Balbir Singh, Mrugesh Gajjar, Bruce Janson, Mayan Moudgill, PeteBixby, Sonja Tideman, Siddharth Choudhuri, Zhihui Zhang, Andrew Huo Zhigang, Yibing Wang, Da-ro lvarez y Michael Tsai. Asimismo, al autor le gustara agradecer a Tigran Aivazian, autor del do-cumento sobre los aspectos internos del ncleo de Linux (Linux Kernel Internals), que es parte del pro-yecto de documentacin de Linux (Linux Documentation Project), por su revisin del material sobre Linux2.6. Ching-Kuang Shene (Universidad de Michigan Tech) proporcion los ejemplos usados en la sec-cin sobre condiciones de carrera y revis dicha seccin.

    Asimismo, Fernando Ariel Gont contribuy con diversos ejercicios para el estudiante y llev a caborevisiones detalladas de todos los captulos.

    El autor querra tambin dar las gracias a Michael Kifer y Scott A. Smolka (SUNYStony Brook)por contribuir al Apndice D, a Bill Bynum (College of William and Mary) y Tracy Camp (ColoradoSchool of Mines) por prestar su ayuda en el Apndice E; Steve Taylor (Worcester Polytechnic Institu-te) por colaborar en los proyectos de programacin y en las tareas de lectura y anlisis del manual delprofesor, y al profesor Tan N. Nguyen (Universidad de George Mason) por contribuir a los proyectosde investigacin del manual del profesor. Ian G.Graham (Universidad de Griffith) colabor con los dosproyectos de programacin del libro. Oskars Rieksts (Universidad de Kutztown) permiti de forma ge-nerosa que se hiciera uso de sus notas de clase, ejercicios y proyectos.

    Por ltimo, el autor querra dar las gracias a las numerosas personas responsables de la publicacindel libro, todas realizaron como de costumbre un excelente trabajo. Esto incluye al personal de Prenti-ce Hall, particularmente a los editores Alan Apt y Toni Holm, su ayudante Patrick Lindner, la directo-ra de produccin Rose Kernan, y la directora de suplementos Sarah Parker. Este agradecimiento se ex-tiende tambin a Jake Warde de Warde Publishers que dirigi el proceso de revisin, y a Patricia M. Dalyque realiz la edicin de la copia.

    xx Prlogo

    0-Primeras 12/5/05 17:09 Pgina xx

  • C A P T U L O 0

    Gua del lector

    0.1. Organizacin del libro

    0.2. Orden de presentacin de los temas

    0.3. Recursos en Internet y en la Web

    00-Capitulo 0 12/5/05 16:15 Pgina 1

  • Este libro, junto con su sitio web asociado, cubre una gran cantidad de material. A continuacin, sele proporciona al lector una visin general del mismo.

    0.1. ORGANIZACIN DEL LIBRO

    El libro est organizado en siete partes:

    Primera parte. Antecedentes. Proporciona una introduccin a la arquitectura y organizacindel computador, haciendo nfasis en aquellos aspectos relacionados con el diseo de sistemasoperativos, presentando, asimismo, una visin general de los temas de sistemas operativos tra-tados en el resto del libro.

    Segunda parte. Procesos. Presenta un anlisis detallado de los procesos, el procesamientomultihilo, el multiprocesamiento simtrico (Symmetric Multiprocessing, SMP) y los micron-cleos. En esta parte se estudian tambin los aspectos principales de la concurrencia en un siste-ma uniprocesador, haciendo hincapi en los temas de la exclusin mutua y de los interbloqueos.

    Tercera parte. Memoria. Proporciona un extenso estudio de las tcnicas de gestin de me-moria, incluyendo la memoria virtual.

    Cuarta parte. Planificacin. Ofrece un estudio comparativo de diversas estrategias de plani-ficacin de procesos. Se examinar tambin la planificacin de hilos, de SMP y de tiemporeal.

    Quinta parte. Entrada/salida y ficheros. Examina los aspectos involucrados en el control delas operaciones de E/S por parte del sistema operativo. Se dedica especial atencin a la E/S deldisco, que es fundamental para el rendimiento del sistema. Asimismo, proporciona una visingeneral de la gestin de ficheros.

    Sexta parte. Sistemas distribuidos y seguridad. Estudia las principales tendencias en redesde computadores, incluyendo TCP/IP, procesamiento cliente/servidor y clusters. Asimismo,describe algunas reas de diseo fundamentales en el desarrollo de los sistemas operativos dis-tribuidos. El Captulo 16 proporciona un estudio de las amenazas y los mecanismos para pro-porcionar seguridad al computador y a la red.

    Este libro est dedicado a dar a conocer a los lectores los principios de diseo y los aspectos deimplementacin de los sistemas operativos contemporneos. Por tanto, sera inadecuado un trata-miento puramente terico o conceptual. Para mostrar los conceptos y asociarlos a opciones de dise-o que se deben tomar en la vida real, se han seleccionado dos sistemas operativos como ejemplosreales:

    Windows. Un sistema operativo multitarea diseado para ejecutar en diversos computadorespersonales, estaciones de trabajo y servidores. Es uno de los pocos sistemas operativos comer-ciales recientes diseado esencialmente desde cero. Debido a esto, est en una buena posicinpara incorporar de una manera ntida los ms recientes desarrollos en la tecnologa de sistemasoperativos.

    UNIX. Un sistema operativo multitarea destinado originalmente a minicomputadores pero im-plementado en un amplio rango de mquinas desde poderosos microprocesadores a supercom-putadores. Dentro de esta familia de sistemas operativos, se incluye Linux.

    2 Sistemas operativos. Aspectos internos y principios de diseo

    00-Capitulo 0 12/5/05 16:15 Pgina 2

  • El estudio de los sistemas de ejemplo est distribuido a travs del libro en vez de agrupado en unnico captulo o apndice. As, durante el estudio de la concurrencia, se describe el mecanismo deconcurrencia de cada sistema de ejemplo y se discute la motivacin de las opciones de diseo particu-lares. Con esta estrategia, los conceptos de diseo estudiados en un determinado captulo son inme-diatamente reforzados con los ejemplos del mundo real.

    0.2. ORDEN DE PRESENTACIN DE LOS TEMAS

    Sera natural que los lectores cuestionaran el orden particular de presentacin de los temas en este li-bro. Por ejemplo, el tema de planificacin (Captulos 9 y 10) est muy relacionado con los dedicadosa la concurrencia (Captulos 5 y 6) y el tema general de procesos (Captulo 3), por lo que podra serrazonable tratarlo inmediatamente despus de estos temas.

    La dificultad reside en que los diversos temas estn estrechamente interrelacionados. Por ejem-plo, para tratar la memoria virtual, es til hacer referencia a los aspectos de planificacin relaciona-dos con un fallo de pgina. Por otro lado, tambin es til referirse a algunos aspectos de gestin dememoria cuando se estudian decisiones de planificacin. Este tipo de ejemplo se puede repetir in-definidamente: El estudio de la planificacin requiere algunos conocimientos de la gestin de E/Sy viceversa.

    La Figura 0.1 sugiere algunas relaciones importantes entre los temas. Las lneas continuas indi-can relaciones muy estrechas, desde el punto de vista de las decisiones de diseo y de implementa-cin. Basados en este diagrama, es razonable comenzar con una discusin bsica de procesos, que co-rresponde con el Captulo 3. Despus de eso, el orden puede ser un poco arbitrario. Muchos tratadosde sistemas operativos renen todo el material sobre procesos al principio y despus tratan otros te-

    Gua del lector 3

    Descripciny control

    de procesos

    PlanificacinGestin

    de memoria

    Seguridad

    Gestin deficheros

    Concurrencia

    Redes

    Gestinde E/S

    Figura 0.1. Temas de sistemas operativos.

    00-Capitulo 0 12/5/05 16:15 Pgina 3

  • mas. Esto es ciertamente vlido. Sin embargo, la importancia fundamental de la gestin de memoria,que en opinin del autor es tan importante como la gestin de procesos, ha llevado a la decisin depresentar este tema antes de profundizar en la planificacin.

    La solucin ideal es que el estudiante, despus de completar los Captulos del 1 al 3 en ese orden,lea y asimile los captulos siguientes en paralelo: el 4 seguido (opcionalmente) del 5; el 6 seguido porel 7; el 8 seguido (opcionalmente) del 9; y el 10. Por ltimo, se pueden estudiar los siguientes captu-los en cualquier orden: el 11; el 12 seguido del 13; el 14; y el 15. Sin embargo, aunque el cerebro hu-mano puede llevar a cabo un procesamiento paralelo, al estudiante le resulta imposible (y caro) traba-jar con xito simultneamente con cuatro copias del mismo libro abiertas en cuatro captulosdiferentes. Dada la necesidad de un orden lineal, el autor considera que el orden utilizado en este li-bro es el ms efectivo.

    0.3. RECURSOS EN INTERNET Y EN LA WEB

    Hay diversos recursos disponibles en Internet y en la Web para apoyar a este libro y ayudar al lector amantenerse al da con los avances en este campo.

    SITIOS WEB DE ESTE LIBRO

    Se ha creado una pgina web especial para este libro en WilliamStallings.com/OS/OS5e.html. Consul-te el diagrama de dos pginas al principio de este libro para obtener una descripcin detallada de este si-tio web. De especial inters son los dos documentos disponibles en el sitio web para el estudiante:

    Pseudo-cdigo. Para los lectores no acostumbrados al lenguaje C, se reproducen todos los al-goritmos tambin en un pseudo-cdigo similar al Pascal. Este lenguaje de pseudo-cdigo esintuitivo y particularmente fcil de seguir.

    Descripciones de Windows, UNIX y Linux. Como se ha mencionado previamente, se utili-zan Windows y diversas versiones de UNIX como ejemplos de casos reales, estando este estu-dio distribuido a travs del texto en vez de agrupado en un nico captulo o apndice. Algunoslectores preferiran tener todo este material en un nico sitio para usarlo como referencia. Portanto, todo el material de Windows y UNIX del libro se reproduce en tres documentos en el si-tio web.

    En cuanto se detecte cualquier error tipogrfico o de otro tipo, se publicar una lista de erratas deeste libro en el sitio web. Por favor, informe de cualquier error que detecte en el libro. En WilliamStallings.com se encuentran las hojas de erratas de los otros libros publicados por el autor, as comoinformacin sobre descuentos en pedidos de libros.

    Tambin se mantiene un sitio con recursos para el estudiante de informtica (Computer ScienceStudent Resource Site), en WilliamStallings.com/StudentSupport.html; el objetivo de este sitio esproporcionar documentos, informacin y enlaces para estudiantes de informtica. Los enlaces se or-ganizan en cuatro categoras:

    Matemticas. Incluye un repaso sobre matemticas bsicas, una introduccin al anlisis decolas y a los sistemas nmericos, as como enlaces a numerosos sitios con informacin sobrematemticas.

    How-to. Aconseja y gua al estudiante para resolver sus ejercicios, escribir informes tcnicos ypreparar presentaciones tcnicas.

    4 Sistemas operativos. Aspectos internos y principios de diseo

    00-Capitulo 0 12/5/05 16:15 Pgina 4

  • Recursos de investigacin. Proporciona enlaces a recopilaciones importantes de artculos, in-formes tcnicos y referencias bibliogrficas.

    Miscelneos. Incluye diversos documentos y enlaces tiles.

    OTROS SITIOS WEB

    Hay numerosos sitios web que proporcionan informacin relacionada con los temas tratados en estelibro. En los siguientes captulos, pueden encontrarse referencias a sitios web especficos en la Sec-cin Lecturas recomendadas. Debido a que el URL de un sitio web particular puede cambiar, estelibro no incluye direcciones URL. En el sitio web de este libro puede encontrarse el enlace apropiadode todos los sitios web nombrados en el libro.

    GRUPOS DE NOTICIAS DE USENET

    Diversos grupos de noticias de USENET se dedican a algn tema relacionado con los sistemas opera-tivos o con un determinado sistema operativo. Como ocurre prcticamente con todos los grupos deUSENET, hay un alto porcentaje de ruido en la seal, pero es un experimento valioso comprobar sialguno satisface las necesidades del lector. Los ms relevantes son los siguientes:

    comp.os.research. El grupo que ms interesa seguir. Se trata de un grupo de noticias modera-do que se dedica a temas de investigacin.

    comp.os.misc. Un foro de discusin general sobre temas de sistemas operativos.

    comp.unix.internals

    comp.os.linux.development.system

    Gua del lector 5

    00-Capitulo 0 12/5/05 16:15 Pgina 5

  • 00-Capitulo 0 12/5/05 16:15 Pgina 6

  • P A R T E I

    ANTECEDENTES

    En esta primera parte se proporcionan los antecedentes necesarios y se establece el contextopara el resto de este libro, presentando los conceptos fundamentales sobre arquitectura de com-putadores y sobre los aspectos internos de los sistemas operativos.GUA DE LA PRIMERA PARTE

    CAPTULO 1. INTRODUCCIN A LOS COMPUTADORES

    Un sistema operativo hace de intermediario entre, por un lado, los programas de aplicacin, las herra-mientas y los usuarios, y, por otro, el hardware del computador. Para apreciar cmo funciona el siste-ma operativo y los aspectos de diseo involucrados, se debe tener algn conocimiento de la organiza-cin y la arquitectura de los computadores. El Captulo 1 proporciona un breve estudio delprocesador, la memoria y los elementos de E/S de un computador.

    CAPTULO 2. INTRODUCCIN A LOS SISTEMAS OPERATIVOS

    El tema del diseo de un sistema operativo (S.O.) abarca un enorme campo, resultando fcil enredar-se en los detalles, perdiendo el contexto general durante el estudio de un tema en particular. El Cap-tulo 2 proporciona una visin general a la que el lector puede volver en cualquier punto del libro pararecuperar el contexto global. Se comienza con una exposicin de los objetivos y funciones del siste-ma operativo. A continuacin, por su relevancia histrica, se describen algunos sistemas y funcionesdel S.O. Este estudio permite presentar algunos principios de diseo del S.O. fundamentales en unentorno sencillo, de manera que queden claras las relaciones entre varias funciones del S.O. A conti-nuacin, el captulo resalta las caractersticas ms importantes de los sistemas operativos modernos.A lo largo de este libro, cuando se presentan diversos temas, es necesario hablar tanto de principiosfundamentales y bien consolidados como de las ms recientes innovaciones en el diseo de SS.OO.El anlisis de este captulo hace notar al lector que se debe de abordar esta mezcla de tcnicas de di-seo ya consolidadas con otras recientes. Finalmente, se presenta una introduccin de Windows yUNIX; este estudio establece la arquitectura general de estos sistemas, proporcionando un contextopara las discusiones detalladas que se realizan ms adelante.

    01-Capitulo 1 16/5/05 17:03 Pgina 7

  • 01-Capitulo 1 16/5/05 17:03 Pgina 8

  • C A P T U L O 1

    Introduccin alos computadores

    1.1. Elementos bsicos

    1.2. Registros del procesador

    1.3. Ejecucin de instrucciones

    1.4. Interrupciones

    1.5. La jerarqua de memoria

    1.6. Memoria cache

    1.7. Tcnicas de comunicacin de E/S

    1.8. Lecturas y sitios web recomendados

    1.9. Trminos clave, cuestiones de repaso y problemas

    Apndice 1A Caractersticas de rendimiento de las memorias de dos niveles

    Apndice 1B Control de procedimientos

    01-Capitulo 1 16/5/05 17:03 Pgina 9

  • Un sistema operativo explota los recursos hardware de uno o ms procesadores para proporcionarun conjunto de servicios a los usuarios del sistema. El sistema operativo tambin gestiona la memo-ria secundaria y los dispositivos de E/S (entrada/salida) para sus usuarios. Por tanto, es importantetener algunos conocimientos del hardware del computador subyacente antes de iniciar el estudio delos sistemas operativos.

    Este captulo proporciona una visin general del hardware del computador. En la mayora de lasreas, el estudio es breve, asumiendo que el lector ya est familiarizado con este tema. Sin embar-go, se estudiarn con cierto detalle varios aspectos por su repercusin en los temas tratados msadelante en el libro.

    1.1. ELEMENTOS BSICOS

    Al ms alto nivel, un computador consta del procesador, la memoria y los componentes de E/S,incluyendo uno o ms mdulos de cada tipo. Estos componentes se interconectan de maneraque se pueda lograr la funcin principal del computador, que es ejecutar programas. Por tanto,hay cuatro elementos estructurales principales:

    Procesador. Controla el funcionamiento del computador y realiza sus funciones de procesa-miento de datos. Cuando slo hay un procesador, se denomina usualmente unidad central deproceso (Central Processing Unit, CPU).

    Memoria principal. Almacena datos y programas. Esta memoria es habitualmente voltil; esdecir, cuando se apaga el computador, se pierde su contenido. En contraste, el contenido de lamemoria del disco se mantiene incluso cuando se apaga el computador. A la memoria princi-pal se le denomina tambin memoria real o memoria primaria.

    Mdulos de E/S. Transfieren los datos entre el computador y su entorno externo. El entornoexterno est formado por diversos dispositivos, incluyendo dispositivos de memoria secunda-ria (por ejemplo, discos), equipos de comunicaciones y terminales.

    Bus del sistema. Proporciona comunicacin entre los procesadores, la memoria principal y losmdulos de E/S.

    La Figura 1.1 muestra estos componentes de ms alto nivel. Una de las funciones del procesadores el intercambio de datos con la memoria. Para este fin, se utilizan normalmente dos registros inter-nos (al procesador): un registro de direccin de memoria (RDIM), que especifica la direccin dememoria de la siguiente lectura o escritura; y un registro de datos de memoria (RDAM), que contie-ne los datos que se van a escribir en la memoria o que recibe los datos ledos de la memoria. De ma-nera similar, un registro de direccin de E/S (RDIE/S) especifica un determinado dispositivo de E/S,y un registro de datos de E/S (RDAE/S) permite el intercambio de datos entre un mdulo de E/S y elprocesador.

    Un mdulo de memoria consta de un conjunto de posiciones definidas mediante direcciones nu-meradas secuencialmente. Cada posicin contiene un patrn de bits que se puede interpretar comouna instruccin o como datos. Un mdulo de E/S transfiere datos desde los dispositivos externos ha-cia el procesador y la memoria, y viceversa. Contiene buffers (es decir, zonas de almacenamiento in-ternas) que mantienen temporalmente los datos hasta que se puedan enviar.

    10 Sistemas operativos. Aspectos internos y principios de diseo

    01-Capitulo 1 16/5/05 17:03 Pgina 10

  • 1.2. REGISTROS DEL PROCESADOR

    Un procesador incluye un conjunto de registros que proporcionan un tipo de memoria que es ms r-pida y de menor capacidad que la memoria principal. Los registros del procesador sirven para dosfunciones:

    Registros visibles para el usuario. Permiten al programador en lenguaje mquina o en en-samblador minimizar las referencias a memoria principal optimizando el uso de registros. Paralenguajes de alto nivel, un compilador que realice optimizacin intentar tomar decisiones in-teligentes sobre qu variables se asignan a registros y cules a posiciones de memoria princi-pal. Algunos lenguajes de alto nivel, tales como C, permiten al programador sugerir al compi-lador qu variables deberan almacenarse en registros.

    Registros de control y estado. Usados por el procesador para controlar su operacin y por ru-tinas privilegiadas del sistema operativo para controlar la ejecucin de programas.

    No hay una clasificacin ntida de los registros entre estas dos categoras. Por ejemplo, en algu-nas mquinas el contador de programa es visible para el usuario, pero en muchas otras no lo es. Sinembargo, para el estudio que se presenta a continuacin, es conveniente utilizar estas categoras.

    Introduccin a los computadores 11

    CPU Memoria principal

    Bus delsistema

    Mdulo de E/S

    Buffers

    Instruccin

    n2n1

    Datos

    Datos

    Datos

    Datos

    Instruccin

    Instruccin

    PC Contador de programaIR Registro de instruccinRDIM Registro de direccin de memoriaRDAM Registro de datos de memoriaRDI E/S Registro de direccin de entrada/salidaRDA E/S Registro de datos de entrada/salida

    012

    PC RDIM

    IR RDAM

    RDI E/S

    RDA E/SUnidad deejecucin

    Figura 1.1. Componentes de un computador: visin al ms alto nivel.

    01-Capitulo 1 16/5/05 17:03 Pgina 11

  • REGISTROS VISIBLES PARA EL USUARIO

    A un registro visible para el usuario se puede acceder por medio del lenguaje de mquina ejecutadopor el procesador que est generalmente disponible para todos los programas, incluyendo tanto pro-gramas de aplicacin como programas de sistema. Los tipos de registros que estn normalmente dis-ponibles son registros de datos, de direccin y de cdigos de condicin.

    El programador puede utilizar los registros de datos para diversas funciones. En algunos ca-sos, son, en esencia, de propsito general y pueden usarse con cualquier instruccin de mquinaque realice operaciones sobre datos. Sin embargo, frecuentemente, hay restricciones. Por ejem-plo, puede haber registros dedicados a operaciones de coma flotante y otros a operaciones conenteros.

    Los registros de direccin contienen direcciones de memoria principal de datos e instruccio-nes, o una parte de la direccin que se utiliza en el clculo de la direccin efectiva o completa.Estos registros pueden ser en s mismos de propsito general, o pueden estar dedicados a una for-ma, o modo, particular de direccionamiento de memoria. A continuacin, se incluyen algunosejemplos:

    Registro ndice. El direccionamiento indexado es un modo comn de direccionamiento queimplica sumar un ndice a un valor de base para obtener una direccin efectiva.

    Puntero de segmento. Con direccionamiento segmentado, la memoria se divide en seg-mentos, que son bloques de palabras1 de longitud variable. Una referencia de memoriaconsta de una referencia a un determinado segmento y un desplazamiento dentro del seg-mento; este modo de direccionamiento es importante en el estudio de la gestin de memoriaque se realizar en el Captulo 7. En este modo de direccionamiento, se utiliza un registropara mantener la direccin base (posicin de inicio) del segmento. Puede haber mltiplesregistros; por ejemplo, uno para el sistema operativo (es decir, cuando el cdigo del sistemaoperativo se est ejecutando en el procesador) y otro para la aplicacin que se est ejecu-tando actualmente.

    Puntero de pila. Si hay direccionamiento de pila2 visible para el usuario, hay un registro dedi-cado que apunta a la cima de la pila. Esto permite el uso de instrucciones que no contienencampo de direccin, tales como las que permiten apilar (push) y extraer (pop).

    En algunas mquinas, una llamada a una subrutina o a un procedimiento implica salvar automti-camente todos los registros visibles para el usuario, que se restaurarn al retornar. El procesador reali-za estas operaciones de salvar y restaurar como parte de la ejecucin de las instrucciones de llamaday de retorno. Esto permite que cada procedimiento use estos registros independientemente. En otrasmquinas, el programador es el responsable de guardar el contenido de los registros visibles para elusuario antes de una llamada a un procedimiento, incluyendo instrucciones para ello en el programa.Por tanto, las funciones de salvar y restaurar se pueden realizar en hardware o en software, depen-diendo del procesador.

    12 Sistemas operativos. Aspectos internos y principios de diseo

    1 No hay una definicin universal del trmino palabra. En general, una palabra es un conjunto ordenado de bytes o bits que esla unidad normal con la que se almacena, transmite, u opera la informacin dentro de un determinado computador. Normalmente, siun computador tiene un juego de instrucciones de longitud fija, la longitud de las instrucciones es igual a la de la palabra.

    2 Una pila se almacena en la memoria principal y es un conjunto secuencial de posiciones a las que se hace referencia de mane-ra similar a como ocurre con una pila fsica de papeles, insertando y extrayendo elementos de la cima de la misma. Vase el Apndi-ce 1B donde se incluye una explicacin sobre la gestin de la pila.

    01-Capitulo 1 16/5/05 17:03 Pgina 12

  • REGISTROS DE CONTROL Y ESTADO

    Se emplean varios registros del procesador para controlar el funcionamiento del mismo. En la mayo-ra de las mquinas, muchos de ellos no son visibles para el usuario. A algunos de ellos se puede ac-ceder mediante instrucciones de mquina ejecutadas en lo que se denomina modo de control o de sis-tema operativo.

    Por supuesto, diferentes mquinas tendrn distintas organizaciones de registros y utilizarn dife-rente terminologa. A continuacin, se proporcionar una lista razonablemente completa de tipos deregistros, con una breve descripcin de cada uno de ellos. Adems de los registros RDIRM, RDAM,RDIE/S y RDAE/S mencionados anteriormente (Figura 1.1), los siguientes son esenciales para la eje-cucin de instrucciones:

    Contador de programa (Program Counter, PC). Contiene la direccin de la prxima ins-truccin que se leer de la memoria.

    Registro de instruccin (Instruction Register, IR). Contiene la ltima instruccin leda.

    Todos los diseos de procesador incluyen tambin un registro, o conjunto de registros, conocidousualmente como la palabra de estado del programa (Program Status Word, PSW), que contiene in-formacin de estado. La PSW contiene normalmente cdigos de condicin, adems de otra informa-cin de estado, tales como un bit para habilitar/inhabilitar las interrupciones y un bit de modo usua-rio/supervisor.

    Los cdigos de condicin (tambin llamados indicadores) son bits cuyo valor lo asigna nor-malmente el hardware de procesador teniendo en cuenta el resultado de las operaciones. Por ejem-plo, una operacin aritmtica puede producir un resultado positivo, negativo, cero o desbordamien-to. Adems de almacenarse el resultado en s mismo en un registro o en la memoria, se fija tambinun cdigo de condicin en concordancia con el resultado de la ejecucin de la instruccin aritmti-ca. Posteriormente, se puede comprobar el cdigo de condicin como parte de una operacin desalto condicional. Los bits de cdigo de condicin se agrupan en uno o ms registros. Normalmen-te, forman parte de un registro de control. Generalmente, las instrucciones de mquina permitenque estos bits se lean mediante una referencia implcita, pero no pueden ser alterados por una refe-rencia explcita debido a que estn destinados a la realimentacin del resultado de la ejecucin deuna instruccin.

    En mquinas que utilizan mltiples tipos de interrupciones, se puede proporcionar un conjunto deregistros de interrupciones, con un puntero a cada rutina de tratamiento de interrupcin. Si se utilizauna pila para implementar ciertas funciones (por ejemplo llamadas a procedimientos), se necesita unpuntero de pila de sistema (vase el Apndice 1B). El hardware de gestin de memoria, estudiado enel Captulo 7, requiere registros dedicados. Asimismo, se pueden utilizar registros en el control de lasoperaciones de E/S.

    En el diseo de la organizacin del registro de control y estado influyen varios factores. Un as-pecto fundamental es proporcionar apoyo al sistema operativo. Ciertos tipos de informacin de con-trol son tiles especficamente para el sistema operativo. Si el diseador del procesador tiene un co-nocimiento funcional del sistema operativo que se va a utilizar, se puede disear la organizacin deregistros de manera que se proporcione soporte por parte del hardware de caractersticas particularesde ese sistema operativo, en aspectos tales como la proteccin de memoria y la multiplexacin entreprogramas de usuario.

    Otra decisin de diseo fundamental es el reparto de la informacin de control entre los registrosy la memoria. Es habitual dedicar las primeras (las de direcciones ms bajas) cientos o miles de pala-bras de memoria para propsitos de control. El diseador debe decidir cunta informacin de control

    Introduccin a los computadores 13

    01-Capitulo 1 16/5/05 17:03 Pgina 13

  • debera estar en registros, ms rpidos y ms caros, y cunta en la memoria principal, menos rpida yms econmica.

    1.3. EJECUCIN DE INSTRUCCIONES

    Un programa que va a ejecutarse en un procesador consta de un conjunto de instrucciones almace-nado en memoria. En su forma ms simple, el procesamiento de una instruccin consta de dos pa-sos: el procesador lee (busca) instrucciones de la memoria, una cada vez, y ejecuta cada una deellas. La ejecucin del programa consiste en repetir el proceso de bsqueda y ejecucin de instruc-ciones. La ejecucin de la instruccin puede involucrar varias operaciones dependiendo de la natu-raleza de la misma.

    Se denomina ciclo de instruccin al procesamiento requerido por una nica instruccin. En la Fi-gura 1.2 se describe el ciclo de instruccin utilizando la descripcin simplificada de dos pasos. A es-tos dos pasos se les denomina fase de bsqueda y de ejecucin. La ejecucin del programa se detieneslo si se apaga la mquina, se produce algn tipo de error irrecuperable o se ejecuta una instruccindel programa que para el procesador.

    BSQUEDA Y EJECUCIN DE UNA INSTRUCCIN

    Al principio de cada ciclo de instruccin, el procesador lee una instruccin de la memoria. En un pro-cesador tpico, el contador del programa (PC) almacena la direccin de la siguiente instruccin que seva a leer. A menos que se le indique otra cosa, el procesador siempre incrementa el PC despus decada instruccin ejecutada, de manera que se leer la siguiente instruccin en orden secuencial (es de-cir, la instruccin situada en la siguiente direccin de memoria ms alta). Considere, por ejemplo, uncomputador simplificado en el que cada instruccin ocupa una palabra de memoria de 16 bits. Supon-ga que el contador del programa est situado en la posicin 300. El procesador leer la siguiente ins-truccin de la posicin 300. En sucesivos ciclos de instruccin completados satisfactoriamente, seleern instrucciones de las posiciones 301, 302, 303, y as sucesivamente. Esta secuencia se puede al-terar, como se explicar posteriormente.

    La instruccin leda se carga dentro de un registro del procesador conocido como registro de ins-truccin (IR). La instruccin contiene bits que especifican la accin que debe realizar el procesador.El procesador interpreta la instruccin y lleva a cabo la accin requerida. En general, estas accionesse dividen en cuatro categoras:

    Procesador-memoria. Se pueden transferir datos desde el procesador a la memoria o viceversa.

    Procesador-E/S. Se pueden enviar datos a un dispositivo perifrico o recibirlos desde el mis-mo, transfirindolos entre el procesador y un mdulo de E/S.

    14 Sistemas operativos. Aspectos internos y principios de diseo

    Inicio ParadaBusca lasiguiente

    instruccin

    Fase de bsqueda Fase de ejecucin

    Ejecuta lainstruccin

    Figura 1.2. Ciclo de instruccin bsico.

    01-Capitulo 1 16/5/05 17:03 Pgina 14

  • Procesamiento de datos. El procesador puede realizar algunas operaciones aritmticas o lgi-cas sobre los datos.

    Control. Una instruccin puede especificar que se va a alterar la secuencia de ejecucin. Porejemplo, el procesador puede leer una instruccin de la posicin 149, que especifica que la si-guiente instruccin estar en la posicin 182. El procesador almacenar en el contador del pro-grama un valor de 182. Como consecuencia, en la siguiente fase de bsqueda, se leer la ins-truccin de la posicin 182 en vez de la 150.

    Una ejecucin de una instruccin puede involucrar una combinacin de estas acciones.

    Considere un ejemplo sencillo utilizando una mquina hipottica que incluye las caractersticasmostradas en la Figura 1.3. El procesador contiene un nico registro de datos, llamado el acumulador(AC). Tanto las instrucciones como los datos tienen una longitud de 16 bits, estando la memoria organi-zada como una secuencia de palabras de 16 bits. El formato de la instruccin proporciona 4 bits para elcdigo de operacin, permitiendo hasta 24 = 16 cdigos de operacin diferentes (representados por unnico dgito hexadecimal3). Con los 12 bits restantes del formato de la instruccin, se pueden direccio-nar directamente hasta 212 = 4.096 (4K) palabras de memoria (denotadas por tres dgitos hexadecimales).

    La Figura 1.4 ilustra una ejecucin parcial de un programa, mostrando las partes relevantes de lamemoria y de los registros del procesador. El fragmento de programa mostrado suma el contenido dela palabra de memoria en la direccin 940 al de la palabra de memoria en la direccin 941, almace-nando el resultado en esta ltima posicin. Se requieren tres instrucciones, que corresponden a tresfases de bsqueda y de ejecucin, como se describe a continuacin:

    Introduccin a los computadores 15

    3 Puede encontrar un repaso bsico de los sistema numricos (decimal, binario y hexadecimal) en el Computer Science StudentResource Site en WilliamStallings.com/StudentSupport.html.

    0 3 4 15

    15

    Cdigo-de-op Direccin

    0 1S Magnitud

    Contador de programa (PC) = Direccin de la instruccinRegistro de instruccin (IR) = Instruccin que se est ejecutandoAcumulador (AC) = Almacenamiento temporal

    (a) Formato de instruccin

    (b) Formato de un entero

    (c) Registros internos de la CPU

    0001 = Carga AC desde la memoria0010 = Almacena AC en memoria0101 = Suma a AC de la memoria

    (d) Lista parcial de cdigos-de-op

    Figura 1.3. Caractersticas de una mquina hipottica.

    01-Capitulo 1 16/5/05 17:03 Pgina 15

  • 1. El PC contiene el valor 300, la direccin de la primera instruccin. Esta instruccin (el va-lor 1940 en hexadecimal) se carga dentro del registro de instruccin IR y se incrementa elPC. Ntese que este proceso involucra el uso del registro de direccin de memoria (RDIM)y el registro de datos de memoria (RDAM). Para simplificar, no se muestran estos registrosintermedios.

    2. Los primeros 4 bits (primer dgito hexadecimal) en el IR indican que en el AC se va a cargarun valor ledo de la memoria. Los restantes 12 bits (tres dgitos hexadecimales) especifican ladireccin de memoria, que es 940.

    3. Se lee la siguiente instruccin (5941) de la posicin 301 y se incrementa el PC.

    4. El contenido previo del AC y el contenido de la posicin 941 se suman y el resultado se alma-cena en el AC.

    5. Se lee la siguiente instruccin (2941) de la posicin 302 y se incrementa el PC.

    6. Se almacena el contenido del AC en la posicin 941.

    En este ejemplo, se necesitan tres ciclos de instruccin, de tal forma que cada uno consta de unafase de bsqueda y una fase de ejecucin, para sumar el contenido de la posicin 940 al contenido dela 941. Con un juego de instrucciones ms complejo, se necesitaran menos ciclos de instruccin. Lamayora de los procesadores modernos incluyen instrucciones que contienen ms de una direccin.Por tanto, la fase de ejecucin de una determinada instruccin puede involucrar ms de una referen-cia a memoria. Asimismo, en vez de referencias a memoria, una instruccin puede especificar unaoperacin de E/S.

    16 Sistemas operativos. Aspectos internos y principios de diseo

    2

    PC300Registros de la CPUMemoria

    Fase de bsqueda Fase de ejecucin

    3 0 01 9 4 0301 5 9 4 1302 2 9 4 1

    940 0 0 0 3941 0 0 0 2

    ACIR1 9 4 0

    Paso 1

    PC300Memoria

    3 0 11 9 4 0301 5 9 4 1302 2 9 4 1

    940 0 0 0 3941 0 0 0 2

    ACIR1 9 4 0

    0 0 0 3

    Paso 2

    PC300Memoria

    3 0 10 0 0 5

    0 0 0 5

    0 0 0 3

    0 0 0 5

    1 9 4 0301 5 9 4 1302 2 9 4 1

    940 0 0 0 3941 0 0 0 2

    ACIR5 9 4 1

    Paso 3

    PC300Memoria

    3 0 21 9 4 0301 5 9 4 1302 2 9 4 1

    1

    940 0 0 0 3941 0 0 0 2

    ACIR5 9 4 1

    Paso 4

    PC300Memoria

    3 01 9 4 0301 5 9 4 1302 2 9 4 1

    940 0 0 0 3941 0 0 0 2

    ACIR2 9 4 1

    Paso 5

    PC300Memoria

    3 0 31 9 4 0301 5 9 4 1302 2 9 4 1

    940 0 0 0 3941 0 0 0 5

    ACIR2 9 4 1

    Paso 6

    3 + 2 = 5

    Registros de la CPU

    Registros de la CPU Registros de la CPU

    Registros de la CPU

    Registros de la CPU

    Figura 1.4. Ejemplo de ejecucin de un programa(contenido de la memoria y los registros en hexadecimal).

    01-Capitulo 1 16/5/05 17:03 Pgina 16

  • SISTEMA DE E/S

    Se pueden intercambiar datos directamente entre un mdulo de E/S (por ejemplo, un controlador dedisco) y el procesador. Al igual que el procesador puede iniciar una lectura o una escritura en memo-ria, especificando la direccin de una posicin de memoria, tambin puede leer o escribir datos en unmdulo de E/S. En este caso, el procesador identifica un dispositivo especfico que est controlado porun determinado mdulo de E/S. Por tanto, podra producirse una secuencia de instrucciones similar ala de la Figura 1.4, con instrucciones de E/S en vez de instrucciones que hacen referencia a memoria.

    En algunos casos, es deseable permitir que los intercambios de E/S se produzcan directamentecon la memoria para liberar al procesador de la tarea de E/S. En tales casos, el procesador concede aun mdulo de E/S la autorizacin para leer o escribir de la memoria, de manera que la transferenciaentre memoria y E/S puede llevarse a cabo sin implicar al procesador. Durante dicha transferencia, elmdulo de E/S emite mandatos de lectura y escritura a la memoria, liberando al procesador de la res-ponsabilidad del intercambio. Esta operacin, conocida como acceso directo a memoria (Direct Me-mory Access, DMA) se examinar al final de este captulo.

    1.4. INTERRUPCIONES

    Prcticamente todos los computadores proporcionan un mecanismo por el cual otros mdulos (me-moria y E/S) pueden interrumpir el secuenciamiento normal del procesador. La Tabla 1.1 detalla lostipos ms comunes de interrupciones.

    Bsicamente, las interrupciones constituyen una manera de mejorar la utilizacin del procesador.Por ejemplo, la mayora de los dispositivos de E/S son mucho ms lentos que el procesador. Supn-gase que el procesador est transfiriendo datos a una impresora utilizando el esquema de ciclo de ins-truccin de la Figura 1.2. Despus de cada instruccin de escritura, el procesador debe parar y perma-necer inactivo hasta que la impresora la lleve a cabo. La longitud de esta pausa puede ser del orden demuchos miles o incluso millones de ciclos de instruccin. Claramente, es un enorme desperdicio de lacapacidad del procesador.

    Tabla 1.1. Clases de interrupciones.

    De programa Generada por alguna condicin que se produce como resultado de la ejecu-cin de una instruccin, tales como un desbordamiento aritmtico, una di-visin por cero, un intento de ejecutar una instruccin de mquina ilegal, ylas referencias fuera del espacio de la memoria permitido para un usuario.

    Por temporizador Generada por un temporizador del procesador. Permite al sistema operati-vo realizar ciertas funciones de forma regular.

    De E/S Generada por un controlador de E/S para sealar la conclusin normal deuna operacin o para indicar diversas condiciones de error.

    Por fallo del hardware Generada por un fallo, como un fallo en el suministro de energa o unerror de paridad en la memoria.

    Para dar un ejemplo concreto, considere un computador personal que operase a 1GHz, lo que lepermitira ejecutar aproximadamente 109 instrucciones por segundo4. Un tpico disco duro tiene una

    Introduccin a los computadores 17

    4 Una discussion de los usos de prefijos numricos, tales como giga y tera, est disponible en un documento de apoyo en elComputer Science Student Resource Site en WilliamStallings.com/StudentSupport.html.

    01-Capitulo 1 16/5/05 17:03 Pgina 17

  • velocidad de rotacin de 7200 revoluciones por minuto, que corresponde con un tiempo de rotacinde media pista de 4 ms., que es 4 millones de veces ms lento que el procesador.

    La Figura 1.5a muestra esta cuestin. El programa de usuario realiza una serie de llamadas deESCRITURA intercaladas con el procesamiento. Los segmentos de cdigo 1, 2 y 3 se refieren a se-cuencias de instrucciones que no involucran E/S. Las llamadas de ESCRITURA invocan a una rutinade E/S que es una utilidad del sistema que realizar la operacin real de E/S. El programa de E/Sconsta de tres secciones:

    Una secuencia de instrucciones, etiquetada como 4 en la figura, para preparar la operacin realde E/S. Esto puede incluir copiar los datos de salida en un buffer especial y preparar los par-metros de un mandato para el dispositivo.

    El mandato real de E/S. Sin el uso de interrupciones, una vez que se emite este mandato, elprograma debe esperar a que el dispositivo de E/S realice la funcin solicitada (o comprobarperidicamente el estado, o muestrear, el dispositivo de E/S). El programa podra esperar sim-plemente realizando repetidamente una operacin de comprobacin para determinar si se harealizado la operacin de E/S.

    Una secuencia de instrucciones, etiquetada como 5 en la figura, para completar la operacin.Esto puede incluir establecer un valor que indique el xito o el fallo de la operacin.

    Debido a que la operacin de E/S puede tardar un tiempo relativamente largo hasta que secompleta, el programa de E/S se queda colgado esperando que se complete; por ello, el programade usuario se detiene en el momento de la llamada de ESCRITURA durante un periodo de tiempoconsiderable.

    18 Sistemas operativos. Aspectos internos y principios de diseo

    Programa deusuario

    ESCRITURA

    Programade E/S

    Mandatode E/S

    FIN

    1

    2

    3

    2

    3

    4

    5

    (a) Sin interrupciones

    Manejador deinterrupcin

    FIN

    1

    2a

    2b

    3a

    3b

    4

    5

    (b) Interrupciones; espera de E/S breve

    FIN

    1 4

    5

    (c) Interrupciones; espera de E/S larga

    Programa deusuario

    Programa deusuario

    ESCRITURA

    ESCRITURA ESCRITURA ESCRITURA

    ESCRITURA

    ESCRITURA

    ESCRITURA

    ESCRITURA

    Programade E/S

    Mandatode E/S

    Programade E/S

    Mandatode E/S

    Manejador deinterrupcin

    Figura 1.5. Flujo de programa del control sin interrupciones y con ellas.

    01-Capitulo 1 16/5/05 17:03 Pgina 18

  • INTERRUPCIONES Y EL CICLO DE INSTRUCCIN

    Gracias a las interrupciones, el procesador puede dedicarse a ejecutar otras instrucciones mientrasque la operacin de E/S se est llevando a cabo. Considere el flujo de control mostrado en la Figura1.5b. Como anteriormente, el programa de usuario alcanza un punto en el que hace una llamada alsistema que consiste en una llamada de ESCRITURA. El programa de E/S que se invoca en este casoconsta slo del cdigo de preparacin y el mandato real de E/S. Despus de que se ejecuten estas po-cas instrucciones, se devuelve el control al programa de usuario. Mientras tanto, el dispositivo exter-no est ocupado aceptando datos de la memoria del computador e imprimindolos. La operacin deE/S se lleva a cabo de forma concurrente con la ejecucin de instrucciones en el programa de usuario.

    Cuando el dispositivo externo est listo para ser atendido, es decir, cuando est preparado paraaceptar ms datos del procesador, el mdulo de E/S de este dispositivo externo manda una seal depeticin de interrupcin al procesador. El procesador responde suspendiendo la ejecucin del progra-ma actual, saltando a la rutina de servicio especfica de este dispositivo de E/S, conocida como mane-jador de interrupcin, y reanudando la ejecucin original despus de haber atendido al dispositivo. Enla Figura 1.5b se indican con una X los puntos en los que se produce cada interrupcin. Tngase encuenta que se puede producir una interrupcin en cualquier punto de la ejecucin del programa prin-cipal, no slo en una determinada instruccin.

    De cara al programa de usuario, una interrupcin suspende la secuencia normal de ejecucin.Cuando se completa el procesamiento de la interrupcin, se reanuda la ejecucin (Figura 1.6). Portanto, el programa de usuario no tiene que contener ningn cdigo especial para tratar las interrupcio-nes; el procesador y el sistema operativo son responsables de suspender el programa de usuario y,posteriormente, reanudarlo en el mismo punto.

    Para tratar las interrupciones, se aade una fase de interrupcin al ciclo de instruccin, como semuestra en la Figura 1.7 (comprese con la Figura 1.2). En la fase de interrupcin, el procesadorcomprueba si se ha producido cualquier interrupcin, hecho indicado por la presencia de una seal deinterrupcin. Si no hay interrupciones pendientes, el procesador contina con la fase de bsqueda ylee la siguiente instruccin del programa actual. Si est pendiente una interrupcin, el procesador sus-pende la ejecucin del programa actual y ejecuta la rutina del manejador de interrupcin. La rutinadel manejador de interrupcin es generalmente parte del sistema operativo. Normalmente, esta rutina

    Introduccin a los computadores 19

    1

    2

    i

    i 1

    M

    La interrupcinse produceen este punto

    Programa de usuario Manejador de interrupcin

    Figura 1.6. Transferencia de control mediante interrupciones.

    01-Capitulo 1 16/5/05 17:03 Pgina 19

  • determina la naturaleza de la interrupcin y realiza las acciones que se requieran. En el ejemplo quese est usando, el manejador determina qu mdulo de E/S gener la interrupcin y puede dar paso aun programa que escriba ms datos en ese mdulo de E/S. Cuando se completa la rutina del maneja-dor de interrupcin, el procesador puede reanudar la ejecucin del programa de usuario en el puntode la interrupcin.

    Es evidente que este proceso implica cierta sobrecarga. Deben ejecutarse instrucciones adiciona-les (en el manejador de interrupcin) para determinar la naturaleza de la interrupcin y decidir sobrela accin apropiada. Sin embargo, debido a la cantidad relativamente elevada de tiempo que se gasta-ra simplemente a la espera de una operacin de E/S, el procesador se puede emplear mucho ms efi-cientemente con el uso de interrupciones.

    Para apreciar la ganancia en eficiencia, considere la Figura 1.8, que es un diagrama de tiempo ba-sado en el flujo de control de las Figuras 1.5a y 1.5b. Las Figuras 1.5b y 1.8 asumen que el tiempo re-querido para la operacin de E/S es relativamente corto: inferior al tiempo que tarda en completarse laejecucin de instrucciones entre las operaciones de escritura del programa de usuario. El caso ms tpi-co, especialmente para un dispositivo lento como una impresora, es que la operacin de E/S tarde mu-cho ms tiempo que la ejecucin de una secuencia de instrucciones de usuario. La Figura 1.5c ilustraeste tipo de situacin. En este caso, el programa de usuario alcanza la segunda llamada de ESCRITU-RA antes de que se complete la operacin de E/S generada por la primera llamada. El resultado es queel programa de usuario se queda colgado en ese punto. Cuando se completa la operacin de E/S prece-dente, se puede procesar la nueva llamada de ESCRITURA y se puede empezar una nueva operacinde E/S. La Figura 1.9 muestra la temporizacin de esta situacin con el uso de interrupciones o sinellas. Se puede observar que hay una ganancia en eficiencia debido a que parte del tiempo durante elque se realiza la operacin de E/S se solapa con la ejecucin de las instrucciones del usuario.

    PROCESAMIENTO DE INTERRUPCIONES

    La aparicin de una interrupcin dispara varios eventos, tanto en el hardware del procesador como enel software. La Figura 1.10 muestra una secuencia tpica. Cuando un dispositivo de E/S completa unaoperacin de E/S, se produce la siguiente secuencia de eventos en el hardware:

    1. El dispositivo genera una seal de interrupcin hacia el procesador.

    2. El procesador termina la ejecucin de la instruccin actual antes de responder a la interrup-cin, como se indica en la Figura 1.7.

    20 Sistemas operativos. Aspectos internos y principios de diseo

    Fase de bsqueda Fase de ejecucin Fase de interrupcin

    Inicio

    Parada

    Interrupcionesinhabilitadas

    Bsqueda dela siguienteinstruccin

    Ejecuta lainstruccin

    Comprueba si hayuna interrupcin;

    inicia el manejadorde interrupcinInterrupciones

    habilitadas

    Figura 1.7. Ciclo de instruccin con interrupciones.

    01-Capitulo 1 16/5/05 17:03 Pgina 20

  • 3. El procesador comprueba si hay una peticin de interrupcin pendiente, determina que hayuna y manda una seal de reconocimiento al dispositivo que produjo la interrupcin. Este re-conocimiento permite que el dispositivo elimine su seal de interrupcin.

    4. En ese momento, el procesador necesita prepararse para transferir el control a la rutina de inte-rrupcin. Para comenzar, necesita salvar la informacin requerida para reanudar el programaactual en el momento de la interrupcin. La informacin mnima requerida es la palabra de es-tado del programa (PSW) y la posicin de la siguiente instruccin que se va a ejecutar, queest contenida en el contador de programa. Esta informacin se puede apilar en la pila de con-trol de sistema (vase el Apndice 1B).

    5. A continuacin, el procesador carga el contador del programa con la posicin del punto de en-trada de la rutina de manejo de interrupcin que responder a esta interrupcin. Dependiendode la arquitectura de computador y del diseo del sistema operativo, puede haber un nicoprograma, uno por cada tipo de interrupcin o uno por cada dispositivo y tipo de interrupcin.Si hay ms de una rutina de manejo de interrupcin, el procesador debe determinar cul invo-car. Esta informacin puede estar incluida en la seal de interrupcin original o el procesador

    Introduccin a los computadores 21

    4

    Espera delprocesador

    1

    5 5

    2

    5

    3

    4

    Tiempo

    Operacinde E/S

    Operacinde E/S

    4

    2a

    1

    2b

    4

    3a

    5

    3b

    (a) Sin interrupciones(los nmeros con un crculo

    se refieren a los usadosen la Figura 1.5a)

    (b) Con interrupciones(los nmeros con un crculo

    se refieren a los usadosen la Figura 1.5b)

    Operacinde E/S

    Operacinde E/S

    Espera delprocesador

    Figura 1.8. Temporizacin del programa: espera breve de E/S.

    01-Capitulo 1 16/5/05 17:03 Pgina 21

  • puede tener que realizar una peticin al dispositivo que gener la interrupcin para obteneruna respuesta que contiene la informacin requerida.

    Una vez que se ha cargado el contador del programa, el procesador contina con el siguiente ci-clo de instruccin, que comienza con una lectura de instruccin. Dado que la lectura de la instruccinest determinada por el contenido del contador del programa, el resultado es que se transfiere el con-trol al programa manejador de interrupcin. La ejecucin de este programa conlleva las siguientesoperaciones:

    6. En este momento, el contador del programa y la PSW vinculados con el programa interrumpidose han almacenado en la pila del sistema. Sin embargo, hay otra informacin que se consideraparte del estado del programa en ejecucin. En concreto, se necesita salvar el contenido de losregistros del procesador, puesto que estos registros los podra utilizar el manejador de interrup-

    22 Sistemas operativos. Aspectos internos y principios de diseo

    4

    1

    5

    2

    5

    3

    4

    4

    2

    1

    5

    4

    3

    5

    Tiempo

    Espera delprocesador

    Operacinde E/S

    (a) Sin interrupciones(los nmeros con un crculo

    se refieren a los usadosen la Figura 1.5a)

    (b) Con interrupciones(los nmeros con un crculo

    se refieren a los usadosen la Figura 1.5c)

    Espera delprocesador

    Operacinde E/S

    Espera delprocesador

    Operacinde E/S

    Operacinde E/S

    Espera delprocesador

    Figura 1.9. Temporizacin del programa: espera larga de E/S.

    01-Capitulo 1 16/5/05 17:03 Pgina 22

  • ciones. Por tanto, se deben salvar todos estos valores, as como cualquier otra informacin de es-tado. Generalmente, el manejador de interrupcin comenzar salvando el contenido de todos losregistros en la pila. En el Captulo 3 se estudiar qu otra informacin de estado debe salvarse.La Figura 1.11a muestra un ejemplo sencillo. En este caso, un programa de usuario se interrum-pe despus de la instruccin en la posicin N. El contenido de todos los registros, as como la di-reccin de la siguiente instruccin (N + 1), un total de M palabras, se apilan en la pila de control.El puntero de pila se actualiza para que seale a la nueva cima de la pila, mientras que el conta-dor de programa quedar apuntando al principio de la rutina de servicio de interrupcin.

    7. El manejador de interrupcin puede en este momento comenzar a procesar la interrupcin.Esto incluir un examen de la informacin de estado relacionada con la operacin de E/S ocon otro evento distinto que haya causado la interrupcin. Asimismo, puede implicar el envode mandatos adicionales o reconocimientos al dispositivo de E/S.

    8. Cuando se completa el procesamiento de la interrupcin, se recuperan los valores de los regis-tros salvados en la pila y se restituyen en los registros (como ejemplo, vase la Figura 1.11b).

    9. La ltima accin consiste en restituir de la pila los valores de la PSW y del contador del pro-grama. Como resultado, la siguiente instruccin que se va ejecutar corresponder al programapreviamente interrumpido.

    Es importante salvar toda la informacin de estado del programa interrumpido para su posteriorreanudacin. Esto se debe a que la interrupcin no es una rutina llamada desde el programa. En su lu-

    Introduccin a los computadores 23

    El controlador de dispositivou otro sistema hardwaregenera una interrupcin

    El procesador terminala ejecucin de lainstruccin actual

    El procesador indicael reconocimientode la interrupcin

    El procesador apilaPSW y el PC en lapila de control

    El procesador cargaun nuevo valor en el PCbasado en la interrupcin

    Salva el resto de lainformacin de estadodel proceso

    Procesa la interrupcin

    Restaura la informacinde estado del proceso

    Restaura los antiguosPSW y PC

    Hardware Software

    Figura 1.10. Procesamiento simple de interrupciones.

    01-Capitulo 1 16/5/05 17:03 Pgina 23

  • gar, la interrupcin puede suceder en cualquier momento y, por tanto, en cualquier punto de la ejecu-cin de un programa de usuario. Su aparicin es imprevisible.

    MLTIPLES INTERRUPCIONES

    El estudio realizado hasta el momento ha tratado solamente el caso de que se produzca una nica in-terrupcin. Supngase, sin embargo, que se producen mltiples interrupciones. Por ejemplo, un pro-grama puede estar recibiendo datos de una lnea de comunicacin e imprimiendo resultados al mismotiempo. La impresora generar una interrupcin cada vez que completa una operacin de impresin.El controlador de la lnea de comunicacin generar una interrupcin cada vez que llega una unidadde datos. La unidad podra consistir en un nico carcter o en un bloque, dependiendo de la naturale-za del protocolo de comunicaciones. En cualquier caso, es posible que se produzca una interrupcinde comunicacin mientras se est procesando una interrupcin de la impresora.

    Se pueden considerar dos alternativas a la hora de tratar con mltiples interrupciones. La primeraes inhabilitar las interrupciones mientras que se est procesando una interrupcin. Una interrupcininhabilitada significa simplemente que el procesador ignorar cualquier nueva seal de peticin deinterrupcin. Si se produce una interrupcin durante este tiempo, generalmente permanecer pendien-te de ser procesada, de manera que el procesador slo la comprobar despus de que se rehabiliten lasinterrupciones. Por tanto, cuando se ejecuta un programa de usuario y se produce una interrupcin, seinhabilitan las interrupciones inmediatamente. Despus de que se completa la rutina de manejo de lainterrupcin, se rehabilitan las interrupciones antes de reanudar el programa de usuario, y el procesa-dor comprueba si se han producido interrupciones adicionales. Esta estrategia es vlida y sencilla,puesto que las interrupciones se manejan en estricto orden secuencial (Figura 1.12a).

    La desventaja de la estrategia anterior es que no tiene en cuenta la prioridad relativa o el grado deurgencia de las interrupciones. Por ejemplo, cuando llegan datos por la lnea de comunicacin, sepuede necesitar que se procesen rpidamente de manera que se deje sitio para otros datos que puedenllegar. Si el primer lote de datos no se ha procesado antes de que llegue el segundo, los datos puedenperderse porque el buffer del dispositivo de E/S puede llenarse y desbordarse.

    Una segunda estrategia es definir prioridades para las interrupciones y permitir que una interrup-cin de ms prioridad cause que se interrumpa la ejecucin de un manejador de una interrupcin demenor prioridad (Figura 1.12b). Como ejemplo de esta segunda estrategia, considere un sistema contres dispositivos de E/S: una impresora, un disco y una lnea de comunicacin, con prioridades cre-cientes de 2, 4 y 5, respectivamente. La Figura 1.13, basada en un ejemplo de [TANE97], muestra unaposible secuencia. Un programa de usuario comienza en t = 0. En t = 10, se produce una interrupcinde impresora; se almacena la informacin de usuario en la pila del sistema y la ejecucin contina enla rutina de servicio de interrupcin (Interrupt Service Routine, ISR) de la impresora. Mientras todavase est ejecutando esta rutina, en t = 15 se produce una interrupcin del equipo de comunicaciones.Debido a que la lnea de comunicacin tiene una prioridad superior a la de la impresora, se sirve la pe-ticin de interrupcin. Se interrumpe la ISR de la impresora, se almacena su estado en la pila y la eje-cucin contina con la ISR del equipo de comunicaciones. Mientras se est ejecutando esta rutina, seproduce una interrupcin del disco (t = 20). Dado que esta interrupcin es de menor prioridad, simple-mente se queda en espera, y la ISR de la lnea de comunicacin se ejecuta hasta su conclusin.

    Cuando se completa la ISR de la lnea de comunicacin (t = 25), se restituye el estado previo delproceso, que corresponde con la ejecucin de la ISR de la impresora. Sin embargo, antes incluso deque pueda ejecutarse una sola instruccin de esta rutina, el procesador atiende la interrupcin de dis-co de mayor prioridad y transfiere el control a la ISR del disco. Slo cuando se completa esa rutina (t = 35), se reanuda la ISR de la impresora. Cuando esta ltima rutina se completa (t = 40), se de-vuelve finalmente el control al programa de usuario.

    24 Sistemas operativos. Aspectos internos y principios de diseo

    01-Capitulo 1 16/5/05 17:03 Pgina 24

  • MULTIPROGRAMACIN

    Incluso utilizando interrupciones, puede que el procesador siga sin utilizarse eficientemente. Porejemplo, considrese la Figura 1.9b, que demuestra una mejor utilizacin del procesador. Si el tiem-po requerido para completar una operacin de E/S es mucho mayor que el cdigo de usuario entrelas llamadas de E/S (una situacin habitual), el procesador estar parado la mayor parte del tiempo.Una solucin a este problema es permitir que mltiples programas de usuario estn activos al mismotiempo.

    Supngase, por ejemplo, que el procesador tiene que ejecutar dos programas. Uno de ellos sim-plemente se dedica a leer datos de la memoria y copiarlos a un dispositivo externo; el otro es algntipo de aplicacin que implica mucho clculo. El procesador puede empezar con el programa que

    Introduccin a los computadores 25

    Inicio

    N 1

    Y L

    N

    Y

    Y

    T

    Retorno

    Programade usuario

    Memoriaprincipal

    Procesador

    Registrosgenerales

    Contador deprograma

    Punterode pila

    N + 1

    T M

    T M

    T

    Pila decontrol

    Rutina deservicio deinterrupcin

    Programade usuario

    (a) La interrupcin se produce despus de la instruccin en la posicin N

    (b) Retorno de interrupcin

    N 1

    Y L

    N

    Y

    T

    Procesador

    Registrosgenerales

    Contador deprograma

    Punterode pila

    Y L 1

    T M

    T M

    T

    Pila decontrol

    N 1

    Inicio

    Retorno

    Memoriaprincipal

    Rutina deservicio deinterrupcin

    Figura 1.11. Cambios en la memoria y en los registros durante una interrupcin.

    01-Capitulo 1 16/5/05 17:03 Pgina 25

  • genera salida, emitir un mandato de escritura al dispositivo externo y, a continuacin, empezar laejecucin de la otra aplicacin. Cuando el procesador trata con varios programas, la secuencia en laque se ejecutan los programas depender de su prioridad relativa, as como de si estn esperando lafinalizacin de una operacin de E/S. Cuando se interrumpe un programa y se transfiere el control aun manejador de interrupcin, una vez que se ha completado la rutina del manejador de interrup-cin, puede ocurrir que no se le devuelva inmediatamente el control al programa de usuario que es-taba en ejecucin en ese momento. En su lugar, el control puede pasar a algn otro programa pen-diente de ejecutar que tenga una prioridad mayor. Posteriormente, se reanudar el programa deusuario interrumpido previamente, en el momento en que tenga la mayor prioridad. Este conceptode mltiples programas que ejecutan en turnos se denomina multiprogramacin y se estudiar msadelante en el Captulo 2.

    26 Sistemas operativos. Aspectos internos y principios de diseo

    Programade usuario

    Manejador deinterrupcin X

    (a) Procesamiento secuencial de interrupciones

    (b) Procesamiento anidado de interrupciones

    Manejador deinterrupcin Y

    Manejador deinterrupcin X

    Manejador deinterrupcin Y

    Programade usuario

    Figura 1.12. Transferencia de control con mltiples interrupciones.

    01-Capitulo 1 16/5/05 17:03 Pgina 26

  • 1.5. LA JERARQUA DE MEMORIA

    Las restricciones de diseo en la memoria de un computador se pueden resumir en tres preguntas:cul es su capacidad? Cul es su velocidad? Cul es su coste?

    La pregunta sobre cunta debe ser su capacidad es algo que no tiene lmite. Si se dispone de unadeterminada capacidad, probablemente se desarrollarn aplicaciones que la usarn. La cuestin acer-ca de la velocidad tiene, hasta cierto tiempo, una respuesta ms fcil. Para alcanzar un rendimientomximo, la memoria debe ser capaz de mantener el ritmo del procesador. Es decir, segn el procesa-dor va ejecutando instrucciones, no debera haber pausas esperando que estn disponibles las instruc-ciones o los operandos. Se debe considerar tambin la ltima pregunta. Para un sistema prctico, elcoste de la memoria debe ser razonable en relacin con los otros componentes.

    Como se podra esperar, hay un compromiso entre las tres caractersticas fundamentales de la me-moria: a saber, coste, capacidad y tiempo de acceso. En cualquier momento dado, se utilizan diversastecnologas para implementar los sistemas de memoria. En todo este espectro de tecnologas, se cum-plen las siguientes relaciones:

    Cuanto menor tiempo de acceso, mayor coste por bit.

    Cuanto mayor capacidad, menor coste por bit.

    Cuanto mayor capacidad, menor velocidad de acceso.

    Queda claro el dilema al que se enfrenta el diseador. A l le gustara utilizar tecnologasque proporcionen una memoria de gran capacidad, tanto porque se necesita esa capacidad comoporque su coste por bit es bajo. Sin embargo, para cumplir con los requisitos de rendimiento, el diseador necesita utilizar memorias de capacidad relativamente baja con tiempos de accesorpidos.

    Introduccin a los computadores 27

    Programade usuario

    Rutina de serviciode interrupcinde la impresora

    Rutina de serviciode interrupcin

    del disco

    t 10

    t 40

    t 15

    t 25

    t 25

    t 35

    t 0

    Rutina de serviciode interrupcin

    de comunicacin

    Figura 1.13. Ejemplo de secuencia de tiempo con mltiples interrupciones.

    01-Capitulo 1 16/5/05 17:03 Pgina 27

  • La solucin a este dilema consiste en no basarse en un nico componente de memoria o en unasola tecnologa, sino emplear una jerarqua de memoria. En la Figura 1.14 se muestra una jerarquatpica. Segn se desciende en la jerarqua, ocurre lo siguiente:

    a) Disminucin del coste por bit.

    b) Aumento de la capacidad.

    c) Aumento del ti