sistemas_operativoslibro__una_vision_aplicada__carretero_jess

Download Sistemas_OperativosLibro__Una_Vision_Aplicada__Carretero_Jess

If you can't read please download the document

Upload: uleam

Post on 13-Jun-2015

2.635 views

Category:

Documents


19 download

TRANSCRIPT

  • 1. SISTEMAS OPERATIVOS Una visin aplicadaDigitalizacin realizada con propsito acadmico

2. CONSULTOR EDITORIALREA DE INFORMTICA Y COMPUTACINGerardo Quiroz VieyraIngeniero de Comunicaciones y ElectrnicaPor la ESIME del Instituto Politcnico NacionalProfesor de la Universidad Autnoma MetropolitanaUnidad XochimilcoMXICODigitalizacin realizada con propsito acadmico 3. SISTEMAS OPERATIVOS Una visin aplicada Jess Carretero Prez Pedro Miguel Anasagasti Flix Garca CarballeiraFernando Prez Costoya Universidad Carlos II de MadridUniversidad Politcnica de Madrid MADRID * BUENOS AIRES * CARACAS * GUATEMALA * LISBOA * MXICO NUEVA YORK * PANAM * SAN JUAN * SANTAF DE BOGOT * SANTIAGO * SAO PAULOAUCLAND * HAMBURGO * LONDRES * MILAN * MONTREAL * NUEVA DELHIPARS * SAN FRANCISCO * SIDNEY * SINGAPUR * ST. LUIS * TOKIO * TORONTODigitalizacin realizada con propsito acadmico 4. 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, porMcGRAW-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-2001Editora: Concepcin Fernndez MadridDiseo de cubierta: DimaPreimpresin: MonoComp, S.A.Impreso en Impresos y revistas, S.A. (IMPRESA)IMPRESO EN ESPAA PRINTED IN SPAINDigitalizacin realizada con propsito acadmico 5. ContenidoPrlogo XV1. CONCEPTOS ARQUITECTNICOS DE LA COMPUTADORA1 1.1.Estructura y funcionamiento de la computadora2 1.2.Modelo de programacin de la computadora 3 1.2.1. Niveles de ejecucin4 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. Coherencia12 1.5.4. Direccionamiento12 1 .5.5. La proximidad referencial13 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 activos22 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 concurrencia25 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 recordar31 1.11. Lecturas recomendadas31 1.12. Ejercicios 32Digitalizacin realizada con propsito acadmicov 6. vi Contenido2. INTRODUCCIN A LOS SISTEMAS OPERATIVOS33 2.1.Qu es un sistema operativo34 2.1.1. Mquina desnuda34 2.1.2. Funciones del sistema operativo34 2.1.3. Concepto de usuario y de grupo de usuarios 37 2.2.Arranque de la computadora38 2.3.Componentes y estructura del sistema operativo41 2.3.1. Componentes del sistema operativo41 2.3.2. Estructura del sistema operativo 42 2.4.Gestin de procesos 44 2.4.1. Servicios de procesos45 2.5.Gestin de memoria46 2.5.1. Servicios47 2.6.Comunicacin y sincronizacin entre procesos47 2.6.1. Servicios de comunicacin y sincronizacin 48 2.7.Gestin de la E/S 49 2.7.1. Servicios50 2.8.Gestin de archivos y directorios 50 2.8.1. Servicio de archivos 50 2.8.2. Servicio de directorios53 2.8.3. Sistema de archivos55 2.9.Seguridad y proteccin55 2.10. Activacin del sistema operativo56 2.11. Interfazdel programador 59 2.11.1. POSIX 59 2.11.2. Win32 60 2.12. Interfazde usuario del sistema operativo61 2.12.1. Funciones de la interfaz de usuario 62 2.12.2. Interfaces alfanumricas63 2.12.3. Interfaces grficas 65 2.13. Historiade los sistemas operativos67 2.14. Puntos a recordar 72 2.15. Lecturas recomendadas 74 2.16. Ejercicios743. PROCESOS 773.1. Concepto de proceso783.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 823.3. Informacin del proceso84 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 operativo913.4. Formacin de un proceso93Digitalizacin realizada con propsito acadmico 7. Contenidovii 3.5.Estados del proceso 93 3.5.1. Cambio de contexto 95 3.6.Procesos ligeros98 3.6.1. Estados del proceso ligero 99 3.6.2. Paralelismo100 3.6.3. Diseo con procesos ligeros101 3.7.Planificacin 102 3.7.1. Algoritmos de planificacin105 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. Seales110 3.8.2. Excepciones111 3.9.Temporizadores112 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 ligeros131 3.11.3. Servicios POSIX para la planificacin de procesos 136 3.11.4. Servicios POSIX para gestin de seales y temporizadores139 3.12. Servicios de W1N32146 3.12.1. Servicios de Win32 para la gestin de procesos146 3.12.2. Servicios de Win32 para la gestin de procesos ligeros152 3.12.3. Servicios de planificacin en Win32 154 3.12.4. Servicios de Win32 para el manejo de excepciones155 3.12.5. Servicios de temporizadores 157 3.13. Puntos a recordar 159 3.14. Lecturas recomendadas 160 3.15. Ejercicios1604. GESTIN DE MEMORIA163 4.1. Objetivos del sistema de gestin de memoria164 4.2. Modelo de memoria de un proceso1724.2.1. Fases en la generacin de un ejecutable 1724.2.2. Mapa de memoria de un proceso 1784.2.3. Operaciones sobre regiones182 4.3. Esquemas de memoria basados en asignacin contigua 183 4.4. Intercambio186 4.5. Memoria virtual1874.5.1. Paginacin1884.5.2. Segmentacin1974.5.3. Segmentacin paginada 1984.5.4. Paginacin por demanda1994.5.5. Polticas de reemplazo2014.5.6. Poltica de asignacin de marcos de pgina2044.5.7. Hiperpaginacin 2054.5.8. Gestin del espacio de swap 207 4.5.9. Operaciones sobre las regiones de un proceso 208Digitalizacin realizada con propsito acadmico 8. viii Contenido 4.6.Archivos proyectados en memoria210 4.7.Servicios de gestin de memoria212 4.7.1. Servicios genricos de memoria212 4.7.2. Servicios de memoria de POSIX 212 4.7.3. Servicios de memoria de Win32 216 4.8.Puntos a recordar219 4.9.Lecturas recomendadas220 4.10. Ejercicios 2215. COMUNICACIN Y SINCRONIZACIN DE PROCESOS2235.1. Procesos concurrentes2245.1.1. Tipos de procesos concurrentes 2255.2. Problemas clsicos de comunicacin y sincronizacin2265.2.1. El problema de la seccin crtica2265.2.2. Problema del productor-consumidor2305.2.3. El problema de los lectores-escritores 2305.2.4. Comunicacin cliente-servidor2315.3. Mecanismos de comunicacin y sincronizacin2325.3.1. Comunicacin mediante archivos 2325.3.2. Tuberas 2335.3.3. Sincronizacin mediante seales2375.3.4. Semforos2375.3.5. Memoria compartida 2425.3.6. Mutex y variables condicionales2435.4. Paso de mensajes 2485.5. Aspectos de implementacin de los mecanismos de sincronizacin 2535.5.1. Implementacin de la espera pasiva 2545.6. Interbloqueos2575.7. Servicios POSIX2585.7.1. Tuberas 2585.7.2. Semforos POSIX2655.7.3. Mutex y variables condicionales en POSIX 2705.7.4. Colas de mensajes POSIX2745.8. Servicios Wjn322855.8.1. Tuberas 2865.8.2. Secciones crticas 2945.8.3. Semforos2955.8.4. Mutex y eventos2995.8.5. Mailslots3035.9.Puntos a recordar 3055.10. Lecturas recomendadas 3065.11. Ejercicios3066. INTERBLOQUEOS309 6.1. Los interbloqueos: una historia basada en hechos reales 310 6.2. Los interbloqueos en un sistema informtico 3116.2.1. Tipos de recursos311Digitalizacin realizada con propsito acadmico 9. Contenidoix 6.3.Un modelo del sistema317 6.3.1. Representacin mediante un grafo de asignacin de recursos318 6.3.2. Representacin matricial322 6.4.Definicin y caracterizacin del interbloqueo324 6.4.1. Condicin necesaria y suficiente para el interbloqueo 325 6.5.Tratamiento del interbloqueo 326 6.6.Deteccin y recuperacin del interbloqueo327 6.6.1. Deteccin del interbloqueo328 6.6.2. Recuperacin del interbloqueo 334 6.7.Prevencin del interbloqueo334 6.7.1. Exclusin mutua 335 6.7.2. Retencin y espera336 6.7.3. Sin expropiacin336 6.7.4. Espera circular 337 6.8.Prediccin del interbloqueo337 6.8.1. Concepto de estado seguro 338 6.8.2. Algoritmos de prediccin339 6.9.Tratamiento del interbloqueo en los sistemas operativos345 6.10. Puntos a recordar347 6.11. Lecturas recomendadas349 6.12. Ejercicios 3497. ENTRADA/SALIDA 3517.1. Introduccin 3527.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 prestaciones3617.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 3647.4. Interfaz de aplicaciones 3697.5. Almacenamiento secundario373 7.5.1. Discos374 7.5.2. El manejador de disco 379 7.5.3. Discos en memoria 384 7.5.4. Fiabilidad y tolerancia a fallos3857.6. Almacenamiento terciario 387 7.6.1. Tecnologa para el almacenamiento terciario 388 7.6.2. Estructura y componentes de un sistema de almacenamientoterciario 389 7.6.3. Estudio de caso: Sistema de almacenamiento de altas prestaciones(HPSS)3917.7. El reloj 393 7.7.1. El hardware del reloj 393 7.7.2. El software del reloj 394Digitalizacin realizada con propsito acadmico 10. xContenido 7.8. El terminal 3977.8.1. Modo de operacin del terminal 3977.8.2. El hardware del terminal 3987.8.3. El software del terminal 400 7.9. La red404 7.10. Servicios de entrada/salida4057.10.1. Servicios genricos de entrada/salida 4057.10.2. Servicios de entrada/salida en POSIX4067.10.3. Servicios de entrada/salida en Win32410 7.11. Puntos a recordar414 7.12. Lecturas recomendadas416 7.13. Ejercicios 4178. GESTIN DE ARCHIVOS Y DIRECTORIOS419 8.1.Visin de usuario del sistema de archivos420 8.2. Archivos420 8.2.1. Concepto de archivo 421 8.2.2. Nombres de archivos 423 8.2.3. Estructura de un archivo424 8.2.4. Mtodos de acceso 427 8.2.5. Semnticas de coutilizacin 428 8.3. Directorios 429 8.3.1. Concepto de directorio429 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 directorios451 8.4.7. Servicios POSIX de directorios451 8.4.8. Ejemplo de uso de servicios POSIX para directorios454 8.4.9. Servicios Win32 para directorios456 8.4.10. Ejemplo de uso de servicios Win32 para directorios 458 8.5. Sistemas de archivos459 8.5.1. Estructura del sistema de archivos461 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 libre477 8.6.5. Mecanismos de incremento de prestaciones479 8.6.6. Montado de sistemas de archivos e interpretacin de nombres 483Digitalizacin realizada con propsito acadmico 11. Contenidoxi8.6.7. Fiabilidad y recuperacin 4858.6.8. Otros servicios 489 8.7. Puntos a recordar491 8.8. Lecturas recomendadas493 8.9. Ejercicios 4939. SEGURIDAD Y PROTECCIN497 9.1. Conceptos de seguridad y proteccin498 9.2. Problemas de seguridad 4999.2.1. Uso indebido o malicioso de programas 5009.2.2. Usuarios inexpertos o descuidados 5019.2.3. Usuarios no autorizados 5019.2.4. Virus 5029.2.5. Gusanos 5039.2.6. Rompedores de sistemas de proteccin5049.2.7. Bombardeo 504 9.3. Polticas de seguridad 5059.3.1. Poltica militar5059.3.2. Polticas comerciales 5079.3.3. Modelos de seguridad508 9.4. Diseo de sistemas operativos seguros5099.4.1. Principios de diseo y aspectos de seguridad5099.4.2. Tcnicas de diseo de sistemas seguros5129.4.3. Controles de seguridad externos al sistema operativo5159.4.4. Controles de seguridad del sistema operativo518 9.5. Criptografa 5199.5.1. Conceptos bsicos 5199.5.2. Sistemas de clave privada y sistemas de clave pblica 522 9.6. Clasificaciones de seguridad 5249.6.1. Clasificacin del Departamento de Defensa (D0D) de EstadosUnidos 524 9.7. Seguridad y proteccin en sistemas operativos de propsito general 5269.7.1. Autenticacin de usuarios 5269.7.2. Palabras clave o contraseas5289.7.3. Dominios de proteccin5319.7.4. Matrices de proteccin5349.7.5. Listas de control de accesos5359.7.6. Capacidades 538 9.8. Servicios de proteccin y seguridad5409.8.1. Servicios genricos 5409.8.2. Servicios POSIX 5419.8.3. Ejemplo de uso de los servicios de proteccin de POSIX5439.8.4. Servicios de Win325459.8.5. Ejemplo de uso de los servicios de proteccin de Win32548 9.9. El sistema de seguridad de Windows NT550 9.10. Kerberos552 9.11. Puntos a recordar 556Digitalizacin realizada con propsito acadmico 12. xii Contenido 9.12. Lecturas recomendadas557 9.13. Ejercicios 55710.INTRODUCCIN A LOS SISTEMAS DISTRIBUIDOS 561 10.1. Sistemas distribuidos56210.1.1. Caractersticas de un sistema distribuido 56210.1.2. Redes e interconexin 56310.1.3. Protocolos de comunicacin564 10.2. Sistemas operativos distribuidos 566 10.3. Comunicacin de procesos en sistemas distribuidos57010.3.1. Sockets 57010.3.2. Llamadas a procedimientos remotos 58210.3.3. Comunicacin de grupos592 10.4. Sincronizacin de procesos en sistemas distribuidos59310.4.1. Ordenacin de eventos en sistemas distribuidos59310.4.2. Exclusin mutua en sistemas distribuidos596 10.5. Gestinde procesos 59810.5.1. Asignacin de procesos a procesadores 59810.5.2. Algoritmos de distribucin de la carga59910.5.3. Planificacin de procesos en sistemas distribuidos601 10.6. Sistemas de archivos distribuidos60110.6.1. Nombrado60210.6.2. Mtodos de acceso remotos 60310.6.3. Utilizacin de cache en sistemas de archivos distribuidos 604 10.7. Gestinde memoria en sistemas distribuidos 606 10.8. Puntos a recordar607 10.9. Lecturas recomendadas609 10.10. Ejercicios60911.ESTUDIO DE CASOS: LINUX611 11.1. Historia de LINUX612 11.2. Caractersticas y estructura de LINUX613 11.3. Gestin de procesos614 11.4. Gestin de memoria 615 11.5. Entrada/salida 616 11.6. Sistema de archivos616 11.7. Puntos a recordar617 11.8. Lecturas recomendadas61712.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 621Digitalizacin realizada con propsito acadmico 13. Contenidoxiii 12.4. El ncleo de Windows NT 623 12.5. El ejecutivo de Windows NT62412.5.1. Gestor de objetos62412.5.2. Gestor de procesos 62512.5.3. Gestor de memoria virtual62712.5.4. Llamada a procedimiento local63012.5.5. Gestor de entrada/salida 631 12.6. Subsistemas de entorno de ejecucin 635 12.7. Sistemas de archivos de Windows NT63612.7.1. Sistemas de archivos tipo FAT63712.7.2. Sistemas de archivos de alto rendimiento (HPFS)63812.7.3. NTFS 63912.7.4. Comparacin de los sistemas de archivos PAT, HPFS y NTFS 642 12.8. El subsistema de seguridad64212.8.1. Autenticacin de usuarios64312.8.2. Listas de control de acceso en Windows NT645 12.9. Mecanismos para tolerancia a fallos en Windows NT 646 12.10. Puntos a recordar648 12.11. Lecturas recomendadas649A. Comparacin de los servicios POSIX y Win32651B. Entorno de programacin de sistemas operativos657C. Trabajos prcticos de sistemas operativos 669Bibliografa 709ndice 721Digitalizacin realizada con propsito acadmico 14. oDigitalizacin realizada con propsito acadmico 15. PrlogoLos sistemas operativos son una parte esencial de cualquier sistema de computacin, por lo quetodos 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 deteora general y aspectos de diseo, pero no muestran claramente cmo se usan.Este libro est pensado como un texto general de sistemas operativos, pudiendo cubrirtanto la parte introductoria como los aspectos de diseo de los mismos. En l se tratan todos losaspectos fundamentales de los sistemas operativos, tales como procesos, gestin de memoria,comunicacin y sincronizacin de procesos, entrada/salida, sistemas de archivos y seguridad yproteccin. Adems, en cada tema, se muestra la interfaz de programacin de los sistemasoperativos POSIX y Win32, con ejemplos de uso de las mismas. Esta solucin permite que el lectorno slo conozca los principios tericos, sino cmo se aplican en sistemas operativos reales.CONTEXTO DE DESARROLLO DEL LIBROA principios de los noventa, los profesores del Departamento de Arquitectura y Tecnologa de laFacultad de Informtica de la Universidad de Politcnica de Madrid comenzaron a elaborar apuntesque incluan teora y problemas de Sistemas Operativos, con vistas a desarrollar un nuevo plan deestudios de informtica. Se revisaron cuidadosamente los planes de estudio existentes en dichauniversidad, as como los de varias otras escuelas similares. Adems, se llev a cabo una revisinexhaustiva de bibliografa relacionada con los sistemas operativos.La motivacin para llevar a cabo este trabajo surgi de la insatisfaccin con los libros detexto existentes en su momento, que, en lneas generales, se caracterizaban por enfatizar en lossiguientes 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 ejemplosprcticos. Necesidad de conocer los sistemas operativos desde el punto de vista de programacin desistemas. Visin generalista del diseo de los sistemas operativos, estudiando distintos sistemas.Digitalizacin realizada con propsito acadmicoxv 16. xviPrlogoEsta situacin obligaba a los autores a mezclar textos generales sobre sistemas operativos conotros libros que estudiaban sistemas operativos concretos y la forma de programarlos. Por estarazn, entre- otras, el cuerpo de los apuntes, mencionado anteriormente, fue creciendo ymodernizndose hasta llegar a este libro.ORGANIZACIN DEL LIBROEl libro est organizado en doce temas, cuyo ndice se muestra a continuacin. Su contenido cubretodos los aspectos de gestin de una computadora, desde la plataforma hardware hasta lossistemas distribuidos. Adems, se incluyen tres apndices. Los temas son los siguientes:Conceptos arquitectnicos de la computadoraEn este tema se hace una somera descripcin de la estructura y funcionamiento de unacomputadora, desde el punto de vista de la plataforma hardware. La motivacin para incluir estecaptulo es evitar la necesidad de que el lector posea conocimientos previos de estructura decomputadoras. 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, secomentan breve mente los mecanismos de proteccin hardware.Introduccin a los sistemas operativosEn este tema se explica qu es un sistema operativo, cules son sus funciones principales, lostipos de sistemas operativos existentes actualmente y cmo se activa un sistema operativo.Tambin se introduce brevemente la estructura del sistema operativo y de sus componentesprincipales (procesos, memoria, archivos, comunicacin, etc.), que se describen en detalle encaptulos 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.ProcesosEl proceso es la entidad ms importante de un sistema operativo moderno. En este tema seestudia en detalle el concepto de proceso, la informacin asociada al mismo, sus posibles estadosy las seales y temporizadores que pueden ser asociadas a un proceso. Un sistema operativogestiona una coleccin de procesos que se ejecutan de forma concurrente. La planificacin dedichos procesos es crucial para la gestin de una computadora. Es esencial explotar los recursosde forma eficiente, equitativa y evitar bloqueos entre procesos. Adems, se estudia en estecaptulo el concepto de proceso ligero (thread) y su influencia sobre los aspectos anteriores delsistema. Todo ello se complementa con ejemplos de uso en POSIX y Windows NTGestin de memoriaUn proceso en ejecucin reside siempre en la memoria de la computadora. Por tanto, gestionardicha memoria de forma eficiente es un aspecto fundamental de cualquier sistema operativo. Eneste tema se estudian los requisitos de la gestin de memoria, el modelo de memoria de unproceso,Digitalizacin realizada con propsito acadmico 17. Prlogo xviicmo se genera dicho modelo y diversos esquemas de gestin de memoria, incluyendo la memoriavirtual. Este tema est relacionado con el Captulo 7, debido a que la gestin de la memoria virtualse apoya en los discos como medio auxiliar de almacenamiento de la imagen de los procesos queno cabe en memoria principal. Al final del tema se muestran los servicios de gestin de memoriaexistentes en POSIX y Win32 y algunos ejemplos de uso de los mismos.Comunicacin y sincronizacin de procesosLos procesos no son entidades aisladas, sino que en muchos casos cooperan entre s y compitenpor los recursos. El sistema operativo debe ofrecer mecanismos de comunicacin y sincronizacinde procesos concurrentes. En este tema se muestran los principales mecanismos usados ensistemas operativos, tales como tuberas, semforos o el paso de mensajes, as como algunosaspectos de implementacin de los mismos. Al final del tema se muestran los servicios decomunicacin y sincronizacin existentes en POSIX y Win32 y algunos ejemplos de uso de losmismos.InterbloqueosLas comunicaciones, el uso de recursos compartidos y las sincronizaciones son causas debloqueos mutuos entre procesos, o interbloqueos. En este captulo se presenta el conceptodeinterbloqueo, as como los principales mtodos de modelado de interbloqueos. Adems, sedescriben los principales algoritmos existentes para gestin de interbloqueos, incluyendo losdeprevencin, deteccin y prediccin de interbloqueos.Entrada/salidaEl procesador de una computadora necesita relacionarse con el mundo exterior. Esta relacin selleva a cabo mediante los dispositivos de entrada/salida (E/S) conectados a la computadora. Elsistema operativo debe ofrecer una interfaz de acceso a dichos dispositivos y gestionar los detallesde bajo nivel de los mismos. En este tema se muestran aspectos del hardware y el software deE/S, estudiando una amplia gama de dispositivos, tales como los de almacenamiento secundario yterciario, los relojes o el terminal. Al final del tema se muestran los servicios de entrada/salidaexistentes en POSIX y Win32 y algunos ejemplos de uso de los mismos.Gestin de archivos y directoriosEl sistema operativo debe proporcionar al usuario mecanismos de alto nivel para acceder a lainformacin existente en los dispositivos de almacenamiento. Para ello, todos los sistemasoperativos incluyen un sistema de gestin de archivos y directorios. El archivo es la unidadfundamental de almacenamiento que maneja el usuario. El directorio es la unidad de estructuracindel conjunto de archivos. En este tema se muestran los conceptos fundamentales de archivos ydirectorios, la estructura de sus gestores y los algoritmos internos usados en los mismos. Al igualque en otros temas, se muestran los servicios de archivos y directorios existentes en POSIX yWin32 y algunos ejemplos de uso de los mismos.Seguridad y proteccinUn sistema de computacin debe ser seguro. El usuario debe tener la confianza de que lasacciones internas o externas del sistema no van a ser un peligro para sus datos, aplicaciones opara las actividades de otros usuarios. El sistema operativo debe proporcionar mecanismos deproteccinDigitalizacin realizada con propsito acadmico 18. xviiiPrlogoentre los distintos procesos que ejecutan en un sistema y entre los distintos sistemas que estnconectados entre s. En este tema se exponen los conceptos de seguridad y proteccin, posiblesproblemas de seguridad, mecanismos de diseo de sistemas seguros, los niveles de seguridadque puede ofrecer un sistema y los controles existentes para verificar si el estado del sistema esseguro. Adems, se estudian los mecanismos de proteccin que se pueden usar para controlar elacceso a los distintos recursos del sistema, Al final del tema se muestran los servicios deproteccin existen en POSIX y Win32 y algunos ejemplos de uso de los mismos.Introduccin a los sistemas distribuidosLos sistemas de computacin actuales raramente estn aislados. Es habitual que estnconectados 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 lascaractersticas de los sistemas distribuidos, sus problemas de diseo, su estructura y sus distintoselementos (redes, comunicacin, memoria distribuida, sistemas de archivo distribuido, etc.).Tambin se muestran distintas tcnicas de diseo de aplicaciones cliente-servidor en sistemasdistribuidos.Estudio de casos: LINUXEste captulo muestra en detalle los aspectos de LINUX desarrollados a lo largo del libro. Para ellose describe, tema por tema, cmo es la arquitectura del sistema operativo LINUX, cmo son losprocesos de LINUX, sus mecanismos de comunicacin y seguridad, etc.Estudio de casos: Windows NTEste 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 yseguridad, etctera.Apndice A. Comparacin de los servicios POSIX y Win32Tabla de llamadas al sistema de POSIX y Win32. Para cada funcin del sistema se muestra lallamada POSIX y la de Win32 que lleva a cabo dicha funcin, junto a un breve comentario de lamisma.Apndice B. Entorno de programacin de sistemas operativosEn este apndice se describe cmo editar, compilar y ejecutar un programa C en UNIX/LINUX yWindows NT. Para el caso de LINUX se usa el compilador gcc. Para el caso de Windows NT, elVisual C++.Apndice C. Trabajos prcticos de sistemas operativosEn este apndice se describen varios proyectos de prcticas de sistemas operativos desarrolladospor los autores durante varios aos. Todos ellos se han llevado a efecto, por lo que se incluyentambin comentarios acerca de la realizacin de los mismos por los alumnos.Digitalizacin realizada con propsito acadmico 19. PrlogoxixMateriales suplementariosExiste 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 enPDF, erratas, etc. Informacin de los autores y direccin de contacto. Material para el profesor, como figuras del libro, transparencias, soluciones de ejerciciosy problemas propuestos y material de prcticas. Las prcticas que se presentan han sidodiseadas como trabajos de laboratorio para estudiantes de las asignaturas de SistemasOperativos de la Universidad Politcnica de Madrid y de la Universidad Carlos III deMadrid. Se ha hecho un importante esfuerzo para generalizar sus enunciados, de formaque puedan desarrollarse fcilmente sobre sistemas operativos de amplia difusin comoLinux, UNIX o Windows. En casi todos los trabajos prcticos expuestos se hace referenciaal material de apoyo existente para las prcticas, que tambin se puede conseguir en laspginas Web anteriores. Material para el estudiante, como cdigo fuente de los programas, figuras en PowerPoint,problemas propuestos de sistemas operativos, etc.Comentario de los autoresEs un placer para nosotros poder presentar este texto a las personas interesadas en los sistemasoperativos, su diseo y su programacin. La elaboracin de este texto ha supuesto un arduotrabajo para nosotros, tanto por la extensin de la obra como por los ejemplos prcticos incluidosen la misma. Adems, se ha hecho un esfuerzo importante para tratar de unificar la terminologausada en distintos pases de habla hispana. Con todo, creemos que el resultado final hace que elesfuerzo realizado haya merecido la pena.El esfuerzo realizado por mostrar los dos sistemas operativos ms actuales, LINUX yWindows NT, ha dado como resultado final un texto didctico y aplicado, que puede ser usadotanto en cursos de introduccin como de diseo de sistemas operativos. En el libro se incluyenejemplos que muestran el uso de las llamadas al sistema de POSIX y Win32. Dichos ejemplos hansido 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 eneste texto con su ayuda y sus comentarios. Este agradecimiento se dirige especialmente aFrancisco Rosales Garca, Alejandro Caldern Mateos y Jos Mara Prez Menor por su ayuda enla compilacin de los programas de ejemplo y en algunos proyectos de sistemas operativos.Jess Carretero PrezPedro de Miguel AnasagastiFlix Garca CaballeiraFernando Prez CostoyaDepartamento de InformticaDepartamento de Arquitectura y TecnologaEscuela Politcnica Superior de Sistemas InformticosUniversidad Carlos III de Madrid Facultad de InformticaMadrid, Espaa Universidad Politcnica de Madrid Madrid, EspaaDigitalizacin realizada con propsito acadmico 20. Digitalizacin realizada con propsito acadmico 21. Conceptos arquitectnicos1 de la computadoraEn este captulo se presentan los conceptos de arquitectura de computadoras ms relevantesdesde el punto de vista de los sistemas operativos. El captulo no pretende convertirse en untratado de arquitectura, puesto que su objetivo es el de recordar y destacar los aspectosarquitectnicos que afectan de forma directa al sistema operativo.Para alcanzar este objetivo, el captulo se estructura en los siguientes grandes temas:* Funcionamiento bsico de las computadoras y estructura de las mismas. * Modelo de programacin, con nfasis en su secuencia de ejecucin. * Concepto de interrupcin. * Diversas acepciones de reloj. * Aspectos ms relevantes de la jerarqua de memoria y, en especial, de la memoria ..virtual . * Concurrencia de la LIS con el procesador. * Mecanismos de proteccin.Digitalizacin realizada con propsito acadmico 1 22. 2Sistemas operativos. Una visin aplicada1.1. ESTRUCTURA Y FUNCIONAMIENTO DE LA COMPUTADORALa computadora es una mquina destinada a procesar datos. En una visin esquemtica, comola que muestra la Figura 1.1, este procesamiento involucra dos flujos de informacin: el dedatos y el de instrucciones. Se parte del flujo de datos que han de ser procesados. Este flujo dedatos es tratado mediante un flujo de instrucciones de maquina, generado por la ejecucin deun 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 vonNeuman 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 deresidir 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 informacinde 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 frecuenteque 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 variosbytes (tpi ente de 4 o de 8 bytes) cuyo primer byte se sita en la direccin utilizada.Figura1.2. Componentes bsicos de la computadoraDigitalizacin realizada con propsito acadmico 23. Conceptos arquitectnicos de la computadora3ACLARACIN 1.1Se denomina programa mquina (o cdigo) al conjunto de instrucciones mquina que tiene porobjeto que la computadora realice una determinada funcin. Los programas escritos encualesquiera de los lenguajes de programacin han de convertirse en programas mquina parapoder ser ejecutados por la computadora La unidad aritmtica permite realizar una serie de operaciones aritmticas y lgicassobre uno o dos operandos. Los datos sobre los que opera esta unidad estn almacenados enun conjunto de registros, o bien provienen directamente de memoria principal. Por su lado, losresultados 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 realizalas 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 siguienteinstruccin de mquina a ejecutar, el puntero de pila (SP, snack pointer), que sirve paramanejar cmodamente una pila en memoria principal, el registro de instruccin (RL), quepermite almacenar la instruccin de maquina a ejecutar, y el registro de estado (RE), quealmacena diversa informacin producida por la ejecucin de alguna de las ltimas instruccionesdel programa (bits de estado aritmticos) e informacin sobre la forma en que ha decomportarse la computadora (bits de interrupcin, nivel de ejecucin, etc.). Finalmente, la unidad de entrada/salida (E/S) se encarga de hacer la transferencia deinformacin entre la memoria principal (o los registros) y los perifricos. La entrad salida sepuede hacer bajo el gobierno de la unidad de control (E/S programada) o de formaindependiente (DMA), como se ver en la Seccin 1.7. Se denomina procesador, o unidad central de proceso (UCP), al conjunto de la unidadaritmtica y de control. Actualmente, el procesador suele construirse en un nico circuitointegrado.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 COMPUTADORAEl modelo de programacin a bajo nivel de una computadora se caracteriza por los siguientesaspectos, que se muestran grficamente en la Figura 1.3: Elementos de almacenamiento. En esta seccin se consideran aquellos elementos de almacenamiento de la computadora que son visibles a las instrucciones maquina. En esta categora estn incluidos los registros generales, el contador de programa, el puntero de pila, el registro de estado, la memoria principal y el mapa de E/S (Aclaracin 1.2).Digitalizacin realizada con propsito acadmico 24. 4Sistemas operativos. Una visin aplicadaFigura 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.2Es 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 ejecucinLa mayora de las computadoras actuales presentan dos o ms niveles de ejecucin. En elnivel menos permisivo, generalmente llamado nivel de usuario, la computadora ejecutasolamente un subconjunto de las instrucciones mquina, quedando prohibidas las dems.Adems, el acceso a determinados registros, o a partes de esos registros, y a determinadaszonas 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 ningunarestriccin y permite el acceso a todos los registros y mapas de direcciones.Digitalizacin realizada con propsito acadmico 25. Conceptos arquitectnicos de la computadora 5Figura 1.4. Modelos de programacin de usuario y de ncleo.Se puede decir que la computadora presenta mas de un modelo de programacin. Uno msrestrictivo, que permite realizar un conjunto limitado de acciones, y otros ms permisivos quepermiten realizar un mayor conjunto de acciones. Uno o varios bits del registro de estadoestablecen el nivel en el que est ejecutando la mquina. Modificando esto. bits se cambia denivel de ejecucin.Como veremos ms adelante, los niveles de ejecucin se incluyen en las computadoraspara dar soporte al sistema operativo. Los programas de usuario, por razones de seguridad, nopodrn realizar determinadas acciones al ejecutar en nivel de usuario. Por su lado, el sistemaoperativo, 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 dememoria. La Figura 1.4 muestra un ejemplo de dos modelos de programacin de unacomputadora.1.2.2.Secuencia de funcionamiento de la computadoraLa unidad de control de la computadora es la que establece el funcionamiento del mismo. Estefuncionamiento est basado en una secuencia sencilla, que se repite a alta velocidad (cientosde millones de veces por segundo). Como muestra la Figura 1.5, esta secuencia consiste entres pasos:a) lectura de memoria principal de la instruccin mquina apuntada por el contador deprograma, b) incremento del contador de programa para que apunte a la siguiente instruccinmquina y c) ejecucin de la instruccin.Esta secuencia tiene dos propiedades fundamentales: es lineal, es decir, ejecuta de formaconsecutiva 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 ininterrumpidamenterealizando esta secuencia (Advertencia 1.1).Digitalizacin realizada con propsito acadmico 26. 6Sistemas operativos. Una visin aplicadaFigura 1.5. Secuencia de ejecucin de la computadora.ADVERTENCIA 1.1Algunas computadoras tienen una instruccin HALT que hace que la unidad de control sedetenga 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 derealizar 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 agran veloci- dad esta secuencia. Esto quiere decir que, para que realice algo til, se ha de teneradecuadamente cargados en memoria un programa mquina con sus datos y hemos deconseguir 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 quepermiten 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 obifurque a otro segmento del programa o a otro programa (que, lgicamente, tambin ha deresidir 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 lasinstrucciones de salto, desde el punto de vista de los sistemas operativos son mucho msimportantes las interrupciones y las instrucciones de TRAP. Por tanto, centraremos nuestrointers en resaltar los aspectos fundamentales de estos dos mecanismos.1.2.3. Registros de control y estadoComo se ha indicado anteriormente, la unidad de control tiene asociada una serie de registrosdenominamos de control y estado. Estos registros dependen de la arquitectura de lacomputadora muchos de ellos se refieren a aspectos que se analizarn a lo largo del texto, porlo que no se intentar explicar aqu su funcin. Entre los ms importantes se pueden encontrarlos siguientes: Contador de programa PC. Contiene la direccin de la siguiente instruccin de mquina. Puntero de pila SP. Contiene la direccin de la cabecera de la pila.Digitalizacin realizada con propsito acadmico 27. Conceptos arquitectnicos de la computadora7 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 puedenaceptar. 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 elPC, el SP y parte del estado, pero otros no lo son, como el registro identificador de espacio dedireccionamiento.1.3. INTERRUPCIONESA 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 cuandonecesite 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 caboen cuanto termina la ejecucin de la instruccin maquina que se est ejecutando y consiste enlas siguiente. operaciones: Salva algunos registros del procesador, como son el de estado y el contador deprograma. 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 otroprograma.La Figura 1.6 muestra la solucin ms usualmente utilizada para determinar ladireccin de salto. Se puede observar que el agente que interrumpe ha de suministrar unvector, 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 deinterrupciones y la carga en el contador de programa. El resultado de esta carga es que lasiguiente instruccin maquina ejecutada es la primera del mencionado programa de tratamientode interrupcin. Obsrvese que tanto la tabla de interrupciones como la rutina de tratamiento de lainterrupcin se han considerado parte del sistema operativo. Esto suele ser as por razones deseguridad; en concreto, para evitar que los programas que ejecuta un usuario puedanperjudicar a los datos o programas de otros usuarios. Como se ver en el Captulo 2, laseguridad es una de las funciones primordiales del sistema operativo.Digitalizacin realizada con propsito acadmico 28. 8 Sistemas operativos. Una visin aplicadaFigura 1.6. Acceso a la rutina de tratamiento de la interrupcinLas interrupciones se pueden generar por diversas causas, que se pueden clasificar de lasiguiente forma: Excepciones de programa. Hay determinadas causas que hacen que un programapresente un problema en su ejecucin, por lo que deber generarse unainterrupcin, de forma que el sistema operativo trate dicha causa. Ejemplos son eldesbordamiento en las operaciones aritmticas, la divisin por cero, el intento deejecutar una instruccin con cdigo operacin incorrecto o de direccionar unaposicin 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 necesitaninterrumpir 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 uncorriente se avisan mediante la correspondiente interrupcin. Instrucciones de TRAP. Estas instrucciones permiten que un programa genere unainterrupcin. Como veremos ms adelante, estas instrucciones se empleanfundamentalmente solicitar los servicios del sistema operativo.ADVERTENCIA 1.2En este caso no existe un agente externo que suministre el vector necesario para entrar en latabla de interrupciones. Ser la propia unidad de control del procesador la que genere estevector. Como complemento al mecanismo de aceptacin de interrupcin, las computadorasincluyen una instruccin mquina para retorno de interrupcin, llamada RETI. El efecto de estainstruccin es restituir los registros de estado y PC, desde el lugar en que fueron salvados alaceptarse interrupcin (p. ej.: desde la pila). Las computadoras incluyen varias seales de solicitud de interrupcin, cada una de lasles tiene una determinada prioridad. En caso de activarse al tiempo varias de estas sea tratar lade mayor prioridad, quedando las dems a la espera de ser atendidas, Adems, la computadoraincluye un mecanismo de inhibicin selectiva que permite detener todas o determinas sealesde interrupcin. Las seales inhibidas no son atendidas hasta que pasen a estar desinhibidas. Lainformacin de inhibicin de las interrupciones suele incluirse en la parte del registro estado quesolamente es modificable en nivel de ncleo, por lo que su modificacin queda restringida alsistema operativo.Digitalizacin realizada con propsito acadmico 29. Conceptos arquitectnicos de la computadora 91.4.EL RELOJEl trmino reloj se aplica a las computadoras con tres acepciones diferentes, si bienrelacionadas, 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 sedenomina reloj. Cuando se dice que un microprocesador es de 600 MHz, lo que se estespecificando es que el oscilador que gobierna el ritmo de su funcionamiento interno produceuna onda cuadrada con una frecuencia de 600 MHz.La seal producida por el oscilador anterior, o por otro oscilador, se dividemediante un divisor de frecuencia para generar una interrupcin cada cierto intervalo de tiempo.Estas interrupciones, que se estn produciendo constantemente, se denominan interrupcionesde reloj o ticks, dando lugar al segundo concepto de reloj. El objetivo de estas interrupcioneses, como veremos ms adelante, hacer que el sistema operativo entre a ejecutar de formasistemtica cada cierto intervalo de tiempo. De esta manera, el sistema operativo puede evitarque un programa monopolice el uso de la computadora y puede hacer que entren a ejecutarseprogramas en determinados instantes de tiempo. Estas interrupciones se producen cada variosmilisegundos, por ejemplo cada 20 milisegundos.La tercera acepcin de reloj se aplica a un contador que permite conocer la fecha yla 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 conceptode reloj es similar al del reloj electrnico de pulsera. En las computadoras actuales esta cuentase hace mediante un circuito dedicado que, adems, est permanentemente alimentado, de formaque, 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 yla hora al arrancar la computadora.ADVERTENCIA 1.3En el caso de UNIX se cuentan segundos y se toma como referencia las 0 horas del 1 de enerode 1970. si se utiliza una palabra de 32 bits, el mayor nmero que se puede almacenar es el2.147.483.647, que se corresponde a las 3h 14m y 7s de enero de 2038. esto significa que, apartir de ese instante, el contador tomar el valor de 0 y la fecha volver a ser el 1 de enero de1970.Figura 1.7. Reloj de la computadora.Digitalizacin realizada con propsito acadmico 30. 10 Sistemas operativos. Una visin aplicada1.5.JERARQUA DE MEMORIADado que la memoria de alta velocidad tiene un precio elevado y un tamao reducido, lamemoria de la computadora se organiza en forma de una jerarqua como la mostrada en laFigura 1.8. En esta jerarqua se utilizan memorias permanentes de alta capacidad y bajavelocidad, como son los cos, para almacenamiento permanente de la informacin. Mientrasque se emplean memorias semiconductores de un tamao relativamente reducido, pero de altavelocidad, 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 deinformacin 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 enmemoria 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 muyimportante tener presente siempre tanto el orden de magnitud de los tiempos de acceso decada 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 deinformacin que estn en cada nivel y a de realizar las trasferencias de informacin a nivelesmas rpidos, as como las actualizaciones hacia los niveles permanentes. Una parte muyimportante de esta gestin corre a cargo del sistema operativo, aunque, para hacerlacorrectamente, requiere de la ayuda de hardware. Por ello, se revisan en esta seccin losconceptos mas importantes de laDigitalizacin realizada con propsito acadmico 31. Conceptos arquitectnicos de la computadora11jerarqua de memoria, para analizar ms adelante su aplicacin a la memoria virtual, deespecial inters para nosotros dado que su gestin la realiza el sistema operativo.1.5.1. Migracin de la informacinLa explotacin correcta de la jerarqua de memoria exige tener, en cada momento, lainformacin 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 opuede ser automtica. La primera alternativa exige que el programa solicite explcitamente elmovimiento de la informacin, como ocurre, por ejemplo, con un pro rama editor, que vasolicitando la parte del archivo que est editando en cada momento el usuario. La segundaalternativa consiste en hacer la migracin transparente al programa, es decir, sin que estetenga que ser consciente de que se produce. La migracin automtica se utiliza en lasmemorias cache y en la memoria virtual, mientras que la migracin bajo demanda se utiliza enlos otros niveles. Sean k y k + 1 dos niveles consecutivos de la jerarqua, siendo k el nivel mas rpido. Laexistencia de una migracin automtica de informacin permite que el programa referencia lainformacin en el nivel k y que, en el caso de que no exista una copia adecuada de esainformacin en dicho nivel k, se traiga esta desde el nivel k + 1 sin que el programa tenga quehacer nada para ello. El funcionamiento correcto de la migracin automtica exige un mecanismo que consigatener 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 tenerladisponible 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 proximidadespacial (Seccin 1.5.5), la migracin automtica se hace en porciones de informacin de un tao determinado. En concreto, para la memoria cache se transfieren lneas de unas pocaspalabras, mientras que p a la memoria virtual se transfieren paginas de uno o varios KB. Eltamao 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 sesube. La solucin ms corriente es la denominada por demanda y consiste en subir aquellainformacin que referencia el programa, justo cu do la referencia. El xito de esta poltica sebasa en la proximidad espacial (Seccin 1.5.5), por lo que no se sube exclusivamente lainformacin referenciada sino una porcin mayor (lnea o pgina).El nivel k tiene menor capacidad de almacenamiento que el nivel k + 1, por lo quenormalmente est lleno. Por ello, cuando se sube una porcin de informacin hay que eliminarotra. La poltica de reemplazo determina qu porcin hay que eliminar, atando de seleccionaruna que ya no sea de inters para el programa en ejecucin.Por razones constructivas pueden existir limitaciones en cuanto al lugar en el que sepueden almacenar las diversas porciones de informacin; la poltica de ubicacin determinadnde almacenar cada porcin.Digitalizacin realizada con propsito acadmico 32. 12 Sistemas operativos. Una visin aplicada1.5.2.Parmetros caractersticos de la jerarqua de memoriaLa 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 probabilidadde encontrar en ese nivel la informacin referenciada. La tasa de fallos Frk es 1 - Hrk. La tasade aciertos ha de ser alta para que sea rentable el uso del nivel k de la jerarqua. Los factoresms 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 uncomportamiento propio).El tiempo de acceso a una informacin depende de que se produzca o no un falloen el nivel k. Denominaremos tiempo de acierto al tiempo de acceso cuando la informacin seencuentra en nivel k. mientras que denominaremos penalizacin de fallo al tiempo que se tardaen realizar migracin de la porcin cuando se produce fallo. El tiempo medio de accesoefectivo (Tef) de un programa se obtiene promediando los tiempos de todos los accesos querealiza el programa a largo de su ejecucin. Tef depende bsicamente de los factoressiguientes: Tiempo de acierto. Penalizacin de fallo. Tasa de aciertos (Hrk) del nivel k.1.5.3.CoherenciaUn efecto colateral de la jerarqua de memoria es que existen varias copias de determinadasporcio- nes de informacin en distintos niveles. Al escribir sobre la copia del nivel k, se produceuna 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 decoherencia. En concreto, una porcin sucia en el nivel k ha de ser escrita en algn momento alnivel k + 1 para eliminar la falta de coherencia. Con esta operacin de escritura se limpia laporcin 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.DireccionamientoLa jerarqua de memoria presenta un problema de direccionamiento. Supngase que elprograma en ejecucin genera la direccin X del dato A al que quiere acceder. Esta direccin Xest 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 sernecesario establecer un mecanismo de traduccin de direcciones X en sus correspondientes Y.La Figura 1.9 presenta este problema de direccionamiento.Digitalizacin realizada con propsito acadmico 33. Conceptos arquitectnicos de la computadora 13Figura 1.9. Traduccin de direcciones.El problema de traduccin no es trivial, supngase que el espacio de nivel k + 1 es de 2GB, lo que equivale a suponer que n = 31, y que el espacio de nivel k es de 8 MB, lo quesupone que m = 23. El traductor tiene aproximadamente dos mil millones de valores de entradadistintos y ocho millones de direcciones finales.Para simplificar la traduccin, y aprovechar la proximidad espacial, se dividen los mapasde direcciones de los espacios k + 1 y k en porciones de tamao Y. Estas porcionesconstituyen la unidad de informacin mnima que se transfiere de un nivel al otro. El que laporcin tenga tamao 2p permite dividir la direccin en dos partes: los m ~ p bits massignificativos sirven para identificar la porcin, mientras que los p bits menos significativossirven para especificar el byte dentro de la porcin (Fig. 1.10). Por su parte, la Figura 1.11muestra 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 problemade direccionamiento queda dividido por 1.024, pero si e siendo inviable plantear la traduccinmediante una tabla directa completa, pues sera una tabla de unos dos millones de entradas ycon slo 8.192 salidas no nulas.1.5.5. La proximidad referencialLa proximidad referencial es la caracterstica que hace viable la jerarqua de memoria, de ahsu importancia. En trminos globales, la proximidad referencial establece que un programa enejecucin 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 delconcepto de traza. La traza de un programa en ejecucin es la lista ordenada en el tiempo delas direcciones de memoria que referencia para llevar a cabo su ejecucin. Esta traza R estarcompuesta por las direcciones de las instrucciones que se van ejecutando y por las direccionesde los datos empleados, es decir:Re = re(l), re(2), re(3), ... re(j)donde re(i) es la i-sima direccin generada por la ejecucin del programa e.Figura 1.10. El uso de porciones de 2 facilita la traduccin.Digitalizacin realizada con propsito acadmico 34. 14Sistemas operativos. Una visin aplicadaFigura 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 comodiferencia 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 dela direcciones empleadas en operaciones de E/S.La proximidad referencial presenta dos facetas: la proximidad espacial y la proximidadtemporal.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 sudistancia d(re(j), re(i)) sea muy pequea. Adems, como muchos trozos de programa y muchases estructuras datos se recorren secuencialment, existe una gran probabilidad de que lareferencia 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.1Aqu conviene incluir una aclaracin. Dado que las memorias principales se direccional a nivelde byte pero se acceden a nivel de palabra, la direccin siguiente no es la direccin actual mas1. 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 lasbifurcaciones, por que su lectura genera referencias consecutivas. Adicionalmente, la gran mayora de los bucles son muy pequeos, de unas pocasinstrucciones mquina, por lo que su ejecucin genera referencias con distanciaspequeas.Digitalizacin realizada con propsito acadmico 35. Conceptos arquitectnicos de la computadora15Figura 1.12. Proximidad referencial. Las estructuras de datos que se recorren de forma secuencial o con referenciasmuy prximas son muy frecuentes. Ejemplos son los vectores, las listas, las pilas,las matrices, etc. Adems, las zonas de dato suelen estar agrupadas, de maneraque las referencias que se generan suelen estar prximas. La proximidad temporal postula que un programa en ejecucin tiende a referenciardirecciones empleadas en un pasado prximo. Esto es, existe una probabilidad muy alta deque 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 encuenta 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 producenproximidad temporal. Esto es muytipico con las funciones o subrutinasaritmticas, de conversin de cdigos, etc. En la prctica, esto significa que las referencias producidas por la ejecucin de unprograma estn agrupadas en unas pocas zonas, tal y como muestra la Figura 1,12. Puedeobservarse tambin que, a medida que avanza la ejecucin del programa, van cambiando laszonas referenciadas.El objetivo principal de la gestin de la jerarqua de memoria ser conseguir que residan en lasmemorias ms rpidas aquellas zonas de los programas que estn siendo referenciadas encada instante.1.6. MEMORIA VIRTUALEn un sistema sin memoria virtual, el sistema operativo divide la memoria principal en trozos yasigna uno a cada uno de los programas que estn ejecutando en un instante determinado. LaFigura 1.13 muestra el reparto tpico de la memoria para el caso de un solo programa o devarios programas. Observe que el espacio asignado a un programa consiste en una zona dememoria principalDigitalizacin realizada con propsito acadmico 36. 16Sistemas operativos. Una visin aplicadaFigura 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. Porel contrario, como se ver ms adelante, en los sistemas con memoria virtual no es necesarioque los espacios de memoria asignados a los programas sean contiguos.1.6.1.Concepto de memoria virtualLa memoria virtual utiliza dos niveles de la jerarqua de memoria: la memoria principal y unamemoria 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. Lasdirecciones generadas por el procesador se refieren a este mapa virtual, pero, sin embargo, losaccesos reales se realiza sobre la memoria principal. Para su funcionamiento, la memoria virtual exige una gestin automtica de la parte de lajerarqua 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 sistemaoperativo con ayuda del hardware de la mquina. Como muestra la Figura 1.14, esta gestinincluye toda la memoria principal y una parte del disco, que sirve de respaldo a la memoriavirtual. 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 virtualesFigura 1.14. Fundamento de la memoria virtual.Digitalizacin realizada con propsito acadmico 37. Conceptos arquitectnicos de la computadora 17 El mapa virtual asociado a un programa en ejecucin esta soportado fsicamentepor una zona del disco, denominada de intercambio o swap, y por una zona de lamemoria principal. Tenga en cuenta que toda la informacin del programa ha deresidir 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 cadamomento. Si, por ejemplo, un dato referenciado por una instruccin mquina noreside en la memoria principal es necesario realizar un trasvase de informacin(migracin de informacin) entre el disco y la memoria principal antes de que elprograma pueda seguir ejecutando. Los espacios virtual y fsico se dividen en pginas, como se mostr en la Figura1.11. Se denominan pginas virtuales a las pginas del espacio virtual, paginasde intercambio a las pginas residentes en el disco y marcos de pgina a losespacios en los que se divide la memoria principal. Cada marco de pgina es capaz de albergar una pgina virtual cualquiera, sinninguna restriccin de direccionamiento. Existe una unidad hardware, denominada MMU (Memo Management Unit), quetraduce las direcciones virtuales a direcciones de memoria principal. Aplicando lovisto anteriormente, se puede decir que esta traduccin se restringe a traducir elnmero de pgina virtual en el correspondiente nmero de marco de pgina.Insistimos en que esta traduccin hay que hacerla por hardware dada la altavelocidad a la que debe hacerse (una fraccin del tiempo de acceso de la memoriaprincipal). Dado que en cada instante determinado solamente reside en memoria principaluna fraccin de las pginas del programa, la traduccin no siempre es posible. Portanto, la MMU producir una excepcin de fallo de pgina cuando sta no esten 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 requeridapor el programa a un marco de pgina. Se denomina paginacin al proceso de migracinnecesario para atender los fallos de pagina. Finalmente, conviene resaltar que el tamao del espacio virtual suele ser muygrande. En la actualidad se emplean direcciones de 32, 48 o hasta 64 bits, lo que significaespacios virtuales de 232, 248 y 264 bytes. Dado que los programas requieren en generalmucho menos espacio, una de las funciones que realiza el sistema operativo es la asignacinde espacio virtual a los programas para su ejecucin. El programa no podr utilizar todo elespacio 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 unanica zona o puede estar dividido en varias zonas, que se denominan segmentos..Digitalizacin realizada con propsito acadmico 38. 18Sistemas operativos. Una visin aplicadaFigura 1.15. Asignacin de memoria en un sistema con memoria virtual.Una de las caractersticas importantes de los lenguajes de programacin actuales es quepermiten la asignacin dinmica de memoria. Esto significa que no se conoce a priori lacantidad de memoria que necesitar el programa para su ejecucin. Por tanto, el sistemaoperativo ha de ser capa de aumentar o reducir el espacio asignado a un programa de acuerdoa las necesidades que vayan surgiendo en su ejecucin.1.6.2. La tabla de paginasLa tabla de pginas es una estructura de informacin que contiene la informacin de dnderesiden las pginas de un programa en ejecucin. Esta tabla permite, por tanto, saber si unapgina 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 muygrande, el tamao de la correspondiente tabla de pginas puede ser muy grande (de millonesde elementos). Sin embargo, como hemos visto, el sistema operativo se encarga de asignar acada programa en ejecucin un espacio virtual de tamao ajustado a su: necesidades. De estaforma, 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 estecaso se supone que toda la memoria asignada al programa es contigua. El nmero de lapgina virtual se utiliza como ndice para entrar en la tabla. Cada elemento de la tabla tiene unbit para indicar si la pgina est en memoria principal y el nmero de marco en el que seencuentra la mencionada pgina o un valor nulo.Figura 1.16. Tabla de pginas de un nivel y espacio virtual asignadoDigitalizacin realizada con propsito acadmico 39. Conceptos arquitectnicos de la computadora 19Figura 1.17.Ejemplo de traduccin mediante tabla de pginas de un nivelLa Figura 1.17 muestra un ejemplo de traduccin para el caso de tabla de paginasde un nivel. Se supone que las pgina son de 2 KB, por lo que los 11 bits inferiores de ladireccin virtual sirven para especificar el byte dentro de la pagina, mientras que el restoespecifican la pgina virtual, que en este caso es la 5. Entrando en la posicin N0 5 de la tablaobservamos 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 ladireccin de memoria principal donde reside la informacin buscada.El mayor inconveniente de la tabla de un nivel es su falta de flexibilidad. Toda la memoriavirtual asignada ha de ser contigua (Advertencia 1.4) y la ampliacin de memoria asignadasolamente puede hacerse final de la existente. Sin embargo, los programas estn compuestos por varios elementos, como son elpropio programa objeto, la pila y los bloques de datos. Adems, tanto la pila como los bloquesde datos han de poder crecer. Por ello, un esquema de tabla de un nivel obliga a dejar grandeshuecos de memoria virtual sin utilizar , pero que estn presentes en la tabla con el consiguientedesperdicio de espacio. Por ello se emplean esquemas de tablas de pginas de ms de un nivel. La Figura1.18 muestra el caso de tabla de pginas de dos niveles. Con este tipo de tabla, la memoriaasignada esta compuesta por una serie de bloques de memoria virtual, es decir, por unossegmentos. Cada segmento est formado por una serie contigua de byte. que puede variar sutamao, 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 partede la direccin se entra en la subtabla de pginas seleccionada. Esta subtabla es similar a latabla mostrada en la Figura 1.18, lo que permite obtener el marco en el que est la informacindeseada.Digitalizacin realizada con propsito acadmico 40. 20Sistemas operativos. Una visin aplicadaFigura 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 accederuna 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 msflexible que con un solo nivel, puesto que se pueden asignar bloques de memoria virtualdisjuntos, por lo que pueden crecer de forma a independiente. Adems, la tabla de pginas notiene espacios vacos, por lo que ocupa solamente el espacio imprescindible.Las computadoras actuales suelen proporcionar tablas de varios niveles, algunos llegan astacuatro, 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. Elsegmento 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. Lapgina direccionada es la 3, por lo que entramos en el elemento 3 de la tabla anterior. En estatabla encontramos que el marco es el Hex4A24 (Advertencia 1.5), por lo que se puede formarla direccin fsica en la que se encuentra la informacin buscada.Digitalizacin realizada con propsito acadmico 41. Conceptos arquitectnicos de la computadora21Figura 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 direccionesLa asignacin de memoria y, por tanto, la construccin de la tabla de pginas es misin delsistema operativo. Sin embargo, es la MMU la que se encarga de realizar la traduccin de lasdirecciones. Esta divisin de trabajo es necesaria puesto que la traduccin de direcciones hayque hacerla de forma muy rpida para que no afecte negativamente al tiempo de acceso a lamemoria.Para que una computadora con memoria virtual pueda competir con una sinmemoria virtual, la traduccin ha de tardar una fraccin del tiempo de acceso a memoria. Encaso contrario, sera mucho ms rpido y por ende mas econmico el sistema sin memoriavirtual. Suponiendo una memoria principal de 100 ns y un traductor de 5 ns, el tiempo deacceso para el caso de memoria virtual es de 105 ns, es decir, un 5 por 100 ms lento que enel caso de no tener memoria virtual. Sin embargo, si la traduccin tardase 100 ns, lacomputadora con memoria virtual sera la mitad de rpida, algo que la hara imposible decompetir.La tabla de pginas es una estructura que mantiene el sistema operativo y quereside en memoria principal (a veces, hay una parte en la propia MMU y otra en memoriaprincipal). Observe que esto parece un contrasentido, puesto que para acceder a memoria hayque traducir la direccin virtual, lo que supone realizar un acceso a memoria por cada nivel quetenga la tabla de pginas. Segn se ha visto, esto supona un retardo inadmisible en losaccesos a memoria. Para resolver este problema se dota a la MMU de una memoria muyrpida que permite hacer la traduccin para la mayora de los casos en una fraccin del tiempoque se tarda en acceder a la memoria principal (Prestaciones 1.2).Figura 1.20. Ejemplo de direcciones incorrectas.Digitalizacin realizada con propsito acadmico 42. 22 Sistemas operativos. Una visin aplicada Finalmente, hay que destacar que la encargada de mantener la informacin de que pginaestn sucias es la MMU. En efecto, al mismo tiempo que hace la traduccin, en caso de queacceso sea de escritura marca a esa pagina como sucia (Advertencia 1.6).1.6.3. Caso de varios programas activosComo se ver en el Captulo 2, los sistemas operativos permiten que existan varios programaactivos al tiempo. De estos programas solamente puede haber uno en ejecucin en cadainstante, encargndose el sistema operativo de ir poniendo en ejecucin uno detrs de otro deforma ordenada. Sin embargo, cada uno de los programas ha de tener asignado un espacio dememoria, 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 enejecucin. Para ello, como muestra la Figura 1.21, el procesador tiene un registroidentificador de espacio de direccionamiento (RIED). Este registro contiene la direccin enla cual est almacenada la tabla de ndices o segmentos del programa. Cuando el sistemaoperativo pone en ejecucin un programa ha de actualizar el valor del RIED para que apunte ala tabla de pginas adecuada.1.6.4. Asignacin de memoria principal y memoria virtualEn un sistema con memoria virtual, un programa en ejecucin tiene asignado un espaciovirtual, 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 operativopara hacer la migracin de informacin entre el intercambio y la memoria principal tiene comoobjetivo conseguir, con el mnimo trabajo posible, que e estn en cada momento en memoriaprincipal las pginas que necesitan los programas en ejecucin. Se denomina conjunto de trabajo (working set) W(k,q) de un programa en ejecucin en elintervalo [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 estrealmente almacenada u memoria principal en el instante t.Digitalizacin realizada con propsito acadmico 43. Conceptos arquitectnicos de la computadora23Figura 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 conjuntoresidente R(t) coincide con el conjunto de trabajo W(k,q). Esto significara que ese programatiene la garanta de que sus prximas q k referencias se refieren a pagina: que estn enmemoria 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 quegenerar un programa, ha de basan e en la trayectoria pasada de la ejecucin del mismo paramantener un conjunto reciente que sea lo ms parecido posible a su futuro conjunto de trabajo,para as minimizar la paginacin.1.7. ENTRADA-SALIDALos mecanismo: de E/S de la computadora tienen por objetivo el intercambio de informacinentre los perifricos y la memoria o los registros del procesador. En este captulo se presentanlos dos aspectos de la E/S que revisten mayor relevancia de cara al sistema operativo: laconcurrencia de la E/S con el procesador y el impacto de la memoria virtual.1.7.1. PerifricosLa Figura 1.22 muestra el esquema general de un perifrico, compuesto por el dispositivo y sucontrolador. Este ltimo tiene una serie de registros incluidos en el mapa de E/S de lacomputadora, por lo que e pueden acceder mediante instrucciones de maquina de entradsalida. El registro de datos sirve para el intercambio de datos. En l ira cargando el controladorlos 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 nuevovalor, mientras que en las de escritura significa que necesita un nuevo dato. Otro: bits de esteregistro sirven para que el controlador indique los problemas que ha encontrado en la ejecucinde la ltima operacin de entrada/salida.Digitalizacin realizada con propsito acadmico 44. 24Sistemas operativos. Una visin aplicadaFigura 1.22 Modelo de PerifricoEl 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 magnticoEl disco magntico es, para el sistema operativo, el perifrico ms importante, puesto que sirvede espacio de intercambio a la memoria virtual y sirve de almacenamiento permanente paralos programa y los datos, encargndose el sistema operativo de la gestin de este tipo dedispositivo.Para entender la forma en que el sistema operativo trata a los discos magnticos esnecesario 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 fijosdenominados sectores (tamaos tpicos del sector son 256, 512 o 1.024 bytes). Como muestraFigura 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 unapalabra 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 enPosicionar el brazo en la pista deseada, esto es, por el tiempo de bsqueda, ms el tiempoque tarda la informacin de la pista en pasar delante de la cabeza por efecto de la rotacin deldisco, esto es, mas laFigura 1.23. Organizacin del disco.Digitalizacin realizada con propsito acadmico 45. Conceptos arquitectnicos de la computadora 25latencia. Obsrvese que estos tiempos dependen de la posicin de partida y de la posicindeseada. 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 desincronizacin. por tanto, suponiendo que gira a 10.000 rpm, tendr un tiempo medio deacceso de 3 ms (1/2 revolucin).Dispositivos de bloques y caracteresEl disco magntico requiere que se lea o escriba un bloque de informacin (uno o variossectores), por lo que se denomina dispositivo de bloques. Existen otros dispositivos de bloquescomo las cintas magnticas, los DVD, los CD y los controladores de red. Todos ellos secaracterizan por tener un tiempo de acceso importante comparado con el tiempo detransferencia de una palabra, por lo que interesa amortizar este tiempo de acceso transfiriendobastantes palabras.Otros dispositivos como el teclado se denominan de caracteres. puesto que la operacin bsicade acceso es de un carcter. Estos dispositivos se cauterizan por ser lentos y por no tener untiempo de acceso apreciablemente mayor que el tiempo de transferencia de una palabra.1.7.2. E/S y concurrenciaLos perifricos son sensiblemente ms lentos que el procesador, por ejemplo, durante eltiempo que se tarda en acceder a una informacin almacenada en un disco, un procesadormoderno es capaz de ejecutar varios millones de instrucciones de mquina (Prestaciones 1.3).Es, por tanto, muy conveniente que mientras se est esperando a que se complete unaoperacin de E/S el procesador est ejecutando un programa til y no un bucle de espera.Las computadoras presentan tres modos bsicos de realizar operaciones de E/S:E/S programada, E/S por interrupciones y E/S por DMA (direct memory access). La E/Sprogramada exige que el procesador est ejecutando un programa de E/S, por lo que no existeninguna concurrencia entre el procesador y la E/S. Sin embargo, en los otros dos modos deE/S el procesador no tiene que estar tendiendo directamente a la E/S, por lo que puede estarejecutando otro programa. Se dice, entonces, que existe concurrencia entre la E/S y elprocesador. Esta concurrencia permite optimizar el uso del procesador, pero exige que lasunidades de control de los perifricos sean ms inteligentes, lo que supone que sean mscomplejas y ms caras. En trminos generales, una operacin de E/S se compone de tres fases, envo dela orden al perifrico, lectura o escritura de los datos y fin de la operacin. La fase de envo de la orden consiste en escribir la orden en los registros delDigitalizacin realizada con propsito acadmico 46. 26Sistemas operativos. Una visin aplicadacontrolador del perifrico, operacin que puede hacerse mediante unas cuantas instruccionesde salida, Dado que el controlador es un dispositivo electrnico, estas escrituras se puedenhacer a la velocidad de procesador, sin esperas intermedias. En la fase de transferencia de los datos interviene el perifrico, tpicamente mucho mslento que el procesador. Imaginemos una lectura a disco. En caso de realizar esta operacincon E/S programada debemos ejecutar un bucle que lea el registro de estado del controlador,observe si esta activo el bit de dato disponible y, en caso positivo, lo lea. El bucle podra tenerla estructura que se muestra en el Programa 1.1.Programa 1.1. Bucle de E/S programada.n= Owhile n < mread registro_control if (registro_control = datoAisponible)read registro_datos store en memoria principaln=n+ 1endi fendwhileObserve que, hasta que se disponga del primer dato, el bucle puede ejecutarse cerca del millnde veces y que, entre dato y dato, se repetir varias decenas de veces. Al llegar a completarnmero m de datos a leer, se termina la operacin de E/S.Se denomina espera activa cuando un programa queda en un bucle hasta que ocurra unevento. La espera activa consume tiempo del procesador, por lo que es muy pocorecomendable cuando el tiempo de espera es grande en comparacin con el tiempo deejecucin de una instruccinEn caso de utilizar E/S con interrupciones, el procesador, tras enviar la orden al controlador delperifrico, puede dedicarse a ejecutar otro programa. Cuando el controlador disponga de undato generar una interrupcin. La rutina de interrupcin deber hacer la lectura del dato y sualmacenamiento en memoria principal, lo cual conlleva un cierto tiempo del procesador. Eneste caso se dice que se hace espera pasiva, puesto que el programa que espera el evento noesta ejecutndose la interrupcin se encarga de al programa cuando ocurre elevento.Finalmente, en caso de utilizar E/S por DMA, el controlador se encarga directa de irtransfiriendo los datos del perifrico a memoria sin molestar al procesador. Una vez terminadala transferencia de todos los datos, genera una interrupcin de forma que se sepa que haterminado (Recordatorio 1.2).La Tabla 1.2 presenta la ocupacin del procesador en la realizacin de las distintasactividades de una operacin de E/S segn el modelo de FIS utilizado.Digitalizacin realizada con propsito acadmico 47. Conceptos arquitectnicos de la computadora27Tabla 1.2. Ocupacin del procesador en operaciones de entrada/salidaPuede observarse que la solucin que presenta la mxima concurrencia y que descarga almximo al procesador es la de E/S por DMA. Por otro lado, es la que exige una mayorinteligencia por parte del controlador. Un aspecto fundamental de esta concurrencia es su explotacin. En efecto, de nada sirvedescargar al procesador del trabajo de E/S si durante ese tiempo no tiene nada til que hacer.Ser una funcin importante del sistema operativo el explotar esta concurrencia la E/S y elprocesador, haciendo que este ultimo tenga trabajo til el mayor tiempo posible.1.7.3. E/S y memoria virtualLa memoria virtual presenta un problema importante frente a la entrada/salida. En efecto, elprograma que solicita una operacin de E/S especifica una variable que determina un buffer dememoria sobre el que se hace la operacin. Para que el controlador del perifrico que realiza laoperacin pueda operar por DMA, el buffer ha de residir en memoria principal. En casocontrario, se intentara hacer, por ejemplo, una lectura de unos datos de disco para escribir enuna pgina, que tambin est en disco. El hardware no es capaz de hacer este tipo deoperacin.El sistema operativo ha de garantizar que los buffers de usuario sobre los que se hacenoperaciones de entrada/salida estn en memoria principal durante toda la duracin de laoperacin. En especial los marcos afectados no podrn ser objeto de paginacin.1.8. PROTECCINComo veremos mas adelante, una de las funciones del sistema operativo es la proteccin deunos usuarios contra otros: ni por malicia ni por descuido un usuario deber acceder a lainformacin de otro. La proteccin hay que comprobarla en tiempo de ejecucin, por lo que se ha de basar enmecanismos hardware. En esta seccin se analizaran estos mecanismos para estudiar msadelante cmo los aplica el sistema operativo. Se analizara en primer lugar los mecanismos deproteccin que ofrece el procesador para pasar seguidamente a los mecanismos de proteccinde memoria.1,8.1. Mecanismos de proteccin del procesadorLos mecanismos de proteccin del procesador se basan en los niveles de ejecucin del mismo.En nivel de ejecucin de ncleo se pueden ejecutar todas las instrucciones de maquina y sepueden acceder a todos los registros y a la totalidad de los mapas de memoria y de E/S. Sinembargo, en modo usuario se ejecuta un subconjunto de las instrucciones y se limitan losregistros y los mapas accesibles.Uno de los objetivos prioritarios de proteccin son los perifricos. En efecto, prohibiendo elacceso directo de los usuarios a los perifricos se impide que puedan acceder a la informacinDigitalizacin realizada con propsito acadmico 48. 28Sistemas operativos. Una visin aplicada almacenada por otros usuarios en esos perifricos. Por esta razn, toda la E/S es accesible solamente en nivel de ncleo, nivel que debe estar reservado al sistema operativo.Para evitar que un programa de usuario pueda poner el procesador en nivel de ncleo, no existe ninguna instruccin mquina que realice este cambio (Advertencia 1.7). Sin embargo, existe la instruccin mquina inversa, que cambia de nivel de ncleo a nivel de usuario. Esta instruccin es utilizada por el sistema operativo antes de dejar que ejecute un programa de usuario.El mecanismo suministrado por el hardware para que el procesador pase a nivel de nc