S o l L l a v e n CD interactivo Daniel en esta edición Sol Llaven S i s E t l propósito principal de este texto es presentar de forma sencilla, clara y lo más completa e que sea posible, la naturaleza y las características de los sistemas operativos modernos que m se utilizan en computadoras personales, estaciones de trabajo o dispositivos móviles, como C Android, iOS, Windows, Linux, entre otros. Sin duda, uno de los aspectos tecnológicos más a M relevantes y con mayor presencia en la actualidad, y parte fundamental de la formación Y académica de diversas carreras de ingeniería. s CM En Sistemas Operativos. Panorama para la ingeniería en computación e informática se o MY revisan y tratan con amplitud y sencillez los temas que conforman la mayoría de los progra- CY mas de estudio de las carreras de Ingeniería en Computación, Ingeniería en Sistemas e p Panorama para ingeniería CMY Ingeniería Informática. e K r en computación Los sistemas operativos constituyen un elemento básico para la operación de los sistemas a y el desarrollo de las aplicaciones, por lo que hoy día su estudio y tratamiento se establece e informática t como un tema relevante e indispensable que la mayoría de las instituciones de educación superior en el ramo de la ingeniería han decidido incorporar como parte integral en la i v formación de los futuros ingenieros en una asignatura. El enfoque clásico del sistema ope- o rativo como administrador de recursos, expuesto por autores como Andrew Tanenbaum, Glenn Brookshear y William Stallings en los libros de su autoría, permea en contenidos de s este valioso texto. EMPRESA DEL GRUPO www.editorialpatria.com.mx Sistemas operativos Panorama para la Ingeniería en Computación e Informática Ing. Daniel Sol Llaven Universidad Nacional Autónoma de México México, 2015 00 Sistemas operativos Preliminares.indd 1 9/29/15 11:46 AM info editorialpatria.com.mx www.editorialpatria.com.mx Dirección editorial: Javier Enrique Callejas Coordinadora editorial: Estela Delfín Ramírez Supervisor de preprensa: Gerardo Briones González Diseño de portada: Juan Bernardo Rosado Solís/Signx Ilustraciones: Adrián Zamorategui Berber Fotografías: © Thinkstockphoto Revisión técnica: Jorge Cortés Galicia Instituto Politécnico Nacional Laura Sandoval Montaño Universidad Nacional Autónoma de México Sistemas operativos. Panorama para la Ingeniería en Computación e Informática Derechos reservados: © 2015, Daniel Sol Llaven © 2015, Grupo Editorial Patria, S.A. de C.V. Renacimiento 180, Colonia San Juan Tlihuaca Azcapotzalco, México D. F. Miembro de la Cámara Nacional de la Industrial Editorial Mexicana Registro Núm. 43 ISBN ebook: 978-607-744-267-7 Queda prohibida la reproducción o transmisión total o parcial del contenido de la presente obra en cualesquiera formas, sean electrónicas o mecánicas, sin el consentimiento previo y por escrito del editor. Impreso en México Printed in Mexico Primera edición ebook: 2015 00 Sistemas operativos Preliminares.indd 2 9/29/15 5:27 PM Dedicado a mi familia, por hacerme quien soy; y a mis colegas, por todo lo que he aprendido de ustedes. Y, por supuesto, mil gracias a todo el equipo editorial y revisores por el apoyo para realizar este esfuerzo. Daniel Sol 00 Sistemas operativos Preliminares.indd 3 9/29/15 11:46 AM 00 Sistemas operativos Preliminares.indd 4 9/29/15 11:46 AM Contenido Estructura del libro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiii Capítulo 1 Introducción al estudio de los sistemas operativos . . . . . 3 1.1 Definiciones ..................................... 4 2.2 Evolución histórica ................................ 6 Etapa 0. Computadoras de propósito particular.............. 7 Etapa 1. Computadoras comerciales monoproceso ........... 7 Etapa 2. Multiproceso................................... 9 Etapa 3. Cómputo personal .............................. 11 Etapa 4. Masificación de la Internet ....................... 14 Etapa 5. Cómputo ubicuo................................ 14 Etapa 6. Internet de cosas................................ 15 Tendencias............................................ 15 1.3 Clasificación de los sistemas operativos ............... 17 Sistemas monolíticos y micro kernel . . . . . . . . . . . . . . . . . . . . . . . 17 Propietarios y software libre.............................. 17 Según la administración de procesos ...................... 18 Evaluación........................................... 19 Capítulo 2 Generalidades de sistemas operativos . . . . . . . . . . . . . . . 21 2.1 Estructura de un sistema operativo ................... 22 Núcleo o kernel del sistema operativo...................... 24 2.2 Arquitecturas de sistemas operativos de referencia ...... 25 Linux................................................. 25 Windows ............................................. 27 Android .............................................. 30 Mac OS X............................................. 31 2.3 Modos de protección............................... 33 2.4 Funciones y características .......................... 35 2.5 Mecanismos de comunicación entre procesos (IPC) ..... 36 Evaluación........................................... 36 00 Sistemas operativos Preliminares.indd 5 9/29/15 11:46 AM vi Contenido Capítulo 3 Administración de procesos . . . . . . . . . . . . . . . . . . . . . . . . 39 3.1 Introducción...................................... 41 3.2 Modelo de procesos................................ 42 Modo de usuario y modo de sistema (o protegido)........... 43 Ciclo de vida de un proceso.............................. 45 Creación de un proceso ................................. 45 Estados durante la ejecución ............................. 46 Terminación de la ejecución.............................. 47 Implementación de procesos............................. 49 3.3 Principios generales de concurrencia.................. 51 Bloqueos.............................................. 53 Condiciones de carrera.................................. 55 Región crítica.......................................... 58 Barreras de sincronización ............................... 59 Deadlock o interbloqueo ................................ 59 Prevención y formas de evitar interbloqueos ................ 60 Detección............................................. 63 Predicción ............................................ 64 Sincronización de procesos .............................. 64 Semáforos ............................................ 65 Calificador en Java ...................... 72 synchronize 3.4 Comunicación entre procesos ....................... 76 Señales............................................... 76 Alarmas .............................................. 77 Pipes................................................. 78 Mecanismos de System V................................ 81 Jerarquías de procesos y protección........................ 84 Conceptos básicos de planificación de procesos ............. 89 3.5 Algoritmos de planificación de procesos............... 92 Planificación por lotes (Batch) ............................ 92 Multiprogramación por lotes (Multiprogrammed Batching).... 93 Primero en llegar primero en ser atendido (First In First Out, FIFO) .............................................. 93 Trabajo más corto a continuación (Shortest Job Next)......... 94 Tiempo compartido (Time share) o interactivos.............. 95 Tiempo real (Real Time) ................................. 98 Distribuido............................................ 100 Embebido (Embedded).................................. 102 Evaluación .......................................... 104 00 Sistemas operativos Preliminares.indd 6 9/29/15 11:46 AM Contenido vii Capítulo 4 Administración de memoria . . . . . . . . . . . . . . . . . . . . . . . . 107 4.1 Introducción...................................... 108 Datos ................................................ 108 Información........................................... 109 Conocimiento ......................................... 109 Máquina universal de Turing ............................. 109 Memoria de computadora ............................... 110 4.2 Organización de la memoria ........................ 110 4.3 Objetivos: Memoria ideal ........................... 111 4.4 Distribución de tipos de memoria .................... 112 Objetivos de la administración de la memoria............... 113 Funciones y operaciones del administrador de memoria ...... 115 Administración de memoria para multiprogramación......... 116 Administración de memoria libre ......................... 120 Memoria virtual........................................ 122 Administración por paginación ........................... 123 Aspectos de diseño para sistemas ......................... 125 Translation Lookaside Búfer (TLB) ........................ 126 Tablas multinivel o jerárquicas............................ 127 Arreglos asociativos de páginas o tablas invertidas . . . . . . . . . . . 129 Liberación de páginas................................... 131 Tamaño de páginas..................................... 132 Algoritmos de reemplazo de páginas ...................... 133 Paginación por demanda ................................ 133 Hiperpaginación ....................................... 141 Intercambio (Swap)..................................... 141 Sistemas híbridos ...................................... 142 Amenazas y protección.................................. 143 Administración de memoria en diversos sistemas operativos... 144 Windows ............................................. 147 Android .............................................. 149 Evaluación .......................................... 150 Capítulo 5 Administración de los dispositivos de entrada y salida . . 153 5.1 Introducción...................................... 154 5.2 Arquitecturas físicas................................ 155 00 Sistemas operativos Preliminares.indd 7 9/29/15 2:43 PM viii Contenido Familias de dispositivos ................................. 155 5.3 Comunicación interna.............................. 159 Integrado al procesador ................................. 160 Mapeo a memoria...................................... 160 Controlado por software (Programmed I/O) ................ 162 Usando interrupciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 Direct Memory Access (DMA)............................ 163 5.4 Mecanismos y funciones de los manejadores de dispositivos.................................. 164 Objetivos del software de E/S ............................ 165 Organización de las capas del software de E/S............... 166 5.4 Interfaz con aplicaciones............................ 168 Interfaz de programación................................ 168 Control de errores...................................... 169 5.5 Administración de entradas y salidas.................. 170 Exponer funcionalidad común de la familia de dispositivos.... 171 Implementar la interfaz hacia los controladores de dispositivos.. 171 Almacenamiento temporal de resultados y adecuación del tamaño del bloque ................................ 172 Protección y asignación de recursos ....................... 173 Carga dinámica de los controladores....................... 173 Administración de potencia.............................. 173 5.6 Controladores de dispositivos ....................... 173 5.7 Interfaz con el hardware............................ 175 Manejo de interrupciones................................ 175 Abstracción de hardware ................................ 177 5.8 Operaciones de dispositivos de entrada/salida.......... 178 Operaciones comunes .................................. 178 Operaciones síncronas y asíncronas ....................... 179 5.9 Estructuras de datos para manejo de dispositivos....... 179 Empaquetado de las solicitudes de entrada y salida .......... 180 Jerarquías de representación de los dispositivos ............. 182 Interacción con el controlador del dispositivo ............... 187 Dispositivos virtuales ................................... 187 Evaluación .......................................... 188 Capítulo 6 Administración de sistemas de archivos . . . . . . . . . . . . . . 191 6.1 Introducción...................................... 192 00 Sistemas operativos Preliminares.indd 8 9/29/15 11:46 AM Contenido ix 6.2 Objetivos de un sistema de archivos .................. 193 Almacenar grandes volúmenes de información.............. 194 La información debe sobrevivir al proceso que la creó ........ 194 Múltiples procesos deben poder acceder la información de manera concurrente................................ 194 Proporcionar acceso a la información ...................... 195 Control de acceso ...................................... 195 6.3 Componentes de un sistema de archivos .............. 196 Organización lógica .................................... 196 6.4 Organización física de archivos ...................... 202 Cintas magnéticas...................................... 202 Discos magnéticos...................................... 204 Discos ópticos ......................................... 205 Discos RAM........................................... 207 Memorias flash ........................................ 208 6.5 Mecanismos de acceso a los archivos ................. 211 Tablas de ubicación de archivos........................... 211 FAT.................................................. 211 Nodos-i .............................................. 212 6.6 Seguridad en sistemas de archivos.................... 213 Mecanismos de protección............................... 214 Dominios de protección ................................. 215 Formato de programas, código ELF, PE y Mach-O ........... 218 Firmas de componentes ................................. 219 MBR ................................................. 219 6.7 Manejo de espacio en memoria secundaria ............ 220 Respaldo y mecanismos de recuperación en caso de falla...... 221 RAID................................................. 224 Respaldos............................................. 229 6.8 Programación para usar sistemas de archivos........... 230 Tipos de interfaz ....................................... 230 API de programación ................................... 230 Llamadas al sistema (system calls) ........................ 231 Flujos de información. Streams y pipelines.................. 232 Evaluación........................................... 233 Capítulo 7 Sistemas distribuidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 7.1 Introducción...................................... 238 00 Sistemas operativos Preliminares.indd 9 9/29/15 11:46 AM