Red de conocimiento informático - Aprendizaje de código fuente - Catálogo de libros sobre la esencia y principios de diseño de los sistemas operativos.

Catálogo de libros sobre la esencia y principios de diseño de los sistemas operativos.

Índice de la versión china

Nota del editor

Prefacio del traductor

Prólogo

Capítulo 0 Guía del lector 1

0.1 Descripción general del libro 1

0.2 Hoja de ruta de aprendizaje para lectores y profesores 1

0.3 Internet y recursos web 2

Parte del capítulo del fondo

Capítulo 1 Descripción general del sistema informático 6

1.1 Estructura básica 6

1.2 Registro del procesador 6

1.2.1 Visible para el usuario registro 7

1.2.2 Registro de control y estado 8

1.3 Ejecución de instrucciones 9

1.3.1 Obtención y ejecución de instrucciones 9

1.3.2 Función de E/S 11

1.4 Interrupción 11

1.4.1 Interrupción y ciclo de instrucción 12

1.4.2 Procesamiento de interrupción 14

1.4.3 Interrupciones múltiples 15

1.4.4 Multiprogramación 17

1.5 Jerarquía de memoria 17

1.6 Almacenamiento en caché de alta velocidad 20

1.6.1 Motivación 20

1.6.2 Principios de caché 20

1.6.3 Diseño de caché 21

1.7 Tecnología de comunicación de E/S 22

1.7.1 E/S programables 22

1.7.2 E/S controladas por interrupción 22

1.7.3 Acceso directo a memoria 24

1.8 Lecturas y sitios web recomendados 24

1.9 Términos clave, preguntas de repaso y ejercicios 25

Apéndice 1A Características de rendimiento de la memoria de dos niveles 27

p>

Apéndice 1B Control de procesos 30

Capítulo 2 Descripción general de los sistemas operativos 33

2.1 Objetivos y funciones de los sistemas operativos 33

2.1.1 Como interfaz usuario/computadora

2.1.1 Sistema operativo 33

2.1.2 Operación como administrador de recursos

2.1.1 Sistema 34

2.1.3 Fácil escalabilidad del sistema operativo sistemas 35

2.2 Desarrollo de sistemas operativos 35

2.2.1 Procesamiento en serie 35

2.2.2 Sistema de procesamiento por lotes simple 36

2.2.3 Sistema de procesamiento por lotes multiprogramación 38

2.2.4 Sistema de tiempo compartido 40

2.3 Principales logros 42

2.3.1 Proceso 42

2.3.2 Gestión de la memoria 44

2.3.3 Protección y seguridad de la información 46

2.3.4 Programación y gestión de recursos 46

2.3. 5 Estructura del sistema 47

2.4 Características de los sistemas operativos modernos 49

2.5 Descripción general de Microsoft Windows 51

2.5.1 Historia 51

2.5.2 Multitarea de un solo usuario 53

2.5.3 Arquitectura 53

2.5.4 Modelo Cliente/Servidor 56

2.5.5 Hilos y SMP 57

2.5.6 Objetos de Windows 57

2.6 Sistemas UNIX tradicionales 58

2.6.1 Historia 58

2.6.2 Descripción 59

2.7 Sistemas UNIX modernos 60

2.7.1 System V versión 4 (SVR4) 60

2.7.2 BSD

61

2.7.3 Solaris 10 61

2.8 Sistema operativo Linux 61

2.8.1 Historia 62

2.8.2 Estructura del módulo 63

2.8.3 Componentes del kernel 64

2.9 Lecturas y sitios web recomendados 67

2.10 Términos clave, preguntas de revisión y ejercicios 68

Parte 2 Proceso

Capítulo 3 Descripción y control del proceso73

3.1 Qué es un proceso73

3.1.1 Antecedentes73

3.1.2 Proceso y bloque de control de procesos 74

3.2 Estado del proceso 75

3.2.1 Modelo de proceso de dos estados 76

3.2.2 Creación y terminación del proceso 77

3.2.3 Modelo de cinco estados 78

3.2.4 Proceso suspendido 81

3.3 Descripción del proceso 84

3.3 .1 Control del sistema operativo estructura 85

3.3.2 Estructura de control de procesos 86

3.4 Control de procesos 90

3.4.1 Modo de ejecución 90

3.4.2 Creación de procesos 91

3.4.3 Cambio de procesos 92

3.5 Ejecución del sistema operativo 93

3.5.1 Kernel sin procesos 94

3.5.2 Ejecución en el proceso del usuario 94

3.5.3 Sistema operativo basado en procesos 95

3.6 Problemas de seguridad 95

3.6.1 Amenazas de acceso al sistema 96

3.6.2 Contramedidas 96

3.7 Gestión de procesos UNIX SVR4 98

3.7.1 Estado del proceso 98

3.7.2 Descripción del proceso 99

3.7.3 Control de procesos 101

3.8 Resumen 102

3.9 Lectura recomendada 102

3.10 Términos clave, preguntas de repaso y ejercicios 102

Proyecto de programación 1: Desarrollo de un programa Shell 105

Capítulo 4 Hilos, multiprocesamiento simétrico (SMP)

Capítulo 4 y microkernel 107

4.1 Procesos y subprocesos 107

4.1.1 Multiproceso 107

4.1.2 Características funcionales de los subprocesos 109

4.1.3 Ejemplo: Adobe PageMaker 111

4.1.4 Hilos a nivel de usuario y a nivel de kernel 112

4.1.5 Otras soluciones 115

4.2 Multiprocesamiento Symmetry 116

4.2.1 Arquitectura SMP 116

4.2.2 Estructura organizativa del sistema SMP 117

4.2.3 Sistema operativo multiprocesador

4.2.3 Design Thinking 118

4.3 Microkernel 119

4.3.1 Arquitectura del Microkernel 119

4.3.2 Ventajas del Microkernel de la estructura organizacional 120

4.3.3 Rendimiento del Microkernel 121

4.3.4 Diseño de microkernel 121

4.4 Hilos de Windows y gestión de SMP 122

4.4.1 Objeto de proceso y objeto de hilo 123

4.4.2 Subprocesos múltiples 125

4.4.3 Estado del subproceso 125

4.4.4 Soporte del subsistema del sistema operativo derecho 126

4.4.5 Soporte de multiprocesamiento simétrico 126

4.5 Gestión de subprocesos y SMP de Solaris 127

4.5.1 Arquitectura multiproceso 127

4.5.2 Motivación 127

4.5. 3 Estructura del proceso 128

4.5.4 Ejecución de subprocesos 129

4.5.5 Tratar las interrupciones como subprocesos 129

4.6 Gestión de procesos y subprocesos de Linux 130

4.6.1 Tareas de Linux 130

4.6.2 Hilos de Linux 131

4.7 Resumen 132

4.8 Lectura recomendada 133

4.9 Términos clave, preguntas de repaso y ejercicios 133

Capítulo 5 Concurrencia: exclusión mutua y sincronización 138

5.1 Principios de concurrencia 139

5.1 .1 Un ejemplo simple 139

5.1.2 Condiciones de carrera 141

5.1.3 Preocupaciones del sistema operativo 141

5.1.4 Interacción del proceso 141

5.1. 5 Requisitos de exclusión mutua 144

5.2 Exclusión mutua: soporte de hardware 144

5.2.1 Desactivación de interrupciones 144

5.2.2 Instrucciones de máquina especializadas 145

5.3 Semáforos 147

5.3.1 Exclusión mutua 150

5.3.2 Cuestiones productor/consumidor 151

p>

5.3.3 Implementación de semáforo 154

5.4 Pipe 155

5.4.1 Pipe usando señales 155

5.4.2 Monitores usando notificaciones y transmisiones 158

5.5 Transmisión de mensajes 159

5.5.1 Sincronización 160

5.5.2 Direccionamiento 161

5.5.3 Formato del mensaje 162

5.5.4 Principio de cola 162

5.5.5 Exclusión mutua 162

5.6 Problema lector-escritor 163

5.6.1 Los lectores primero 164

5.6.2 Los escritores primero 164

5.7 Resumen 166

5.8 Lecturas recomendadas 167

5.9 Términos clave, preguntas de repaso y ejercicios 167

Capítulo 6 Concurrencia: punto muerto y hambre 178

6.1 Principios de punto muerto 178

6.1.1 Recursos reutilizables 180

6.1.2 Recursos consumibles 181

6.1.3 Diagrama de asignación de recursos 182

6.1.4 Condiciones de interbloqueo 183

6.2 Prevención de interbloqueo 184

6.2.1 Exclusión mutua 184

6.2.2 Posesión y espera 184

6.2.3 No preferencia 184

6.2.4 Espera en bucle184

6.3 Evitación de punto muerto 185

6.3.1 Rechazo de inicio de proceso 185

6.3.2 Rechazo de asignación de recursos 186

6.4 Detección de interbloqueo 189

6.4.1 Algoritmo de detección de interbloqueo 189

6.4.2 Recuperación 190

6.5 Una estrategia integral de punto muerto 190

6.6 El problema del filósofo del comedor 191

6.6.1 Uso de una solución de semáforo 191

6.6.2 Uso de una solución de monitor 192

6.7 Mecanismo de concurrencia de UNIX 192

6.7.1 Tubería 1

92

6.7.2 Mensaje 193

6.7.3 Memoria compartida 193

6.7.4 Semáforo 194

6.7 .5 Señales 194

6.8 Mecanismo de concurrencia del kernel de Linux 195

6.8.1 Operaciones atómicas 195

6.8.2 Bloqueos de giro 196

6.8.3 Semáforos 197

6.8.4 Barreras 199

6.9 Primitivas de sincronización de subprocesos de Solaris 199

6.9.1 Bloqueos Mutex 200

6.9.2 Semáforo 200

6.9.3 Bloqueo de lector múltiple/escritor único 201

6.9.4 Variable de condición 201

6.10 Mecanismo de concurrencia de Windows 201

6.10.1 Función de espera 201

6.10.2 Objeto Dispatcher 202

6.10.3 Sección crítica 203

6.10.4 Bloqueos ligeros de lectura y escritura y variables de condición 203

6.11 Resumen 204

6.12 Lectura recomendada 204

6.13 Términos clave, preguntas de repaso y ejercicios 205

Parte 3 Memoria

Capítulo 7 Gestión de la memoria 210

7.1 Requisitos para la gestión de la memoria 210

7.1.1 Reubicación 210

7.1.2 Protección 211

7.1.3 Disfrutar 211

7.1.4 Organización lógica 211

7.1.5 Organización física 211

7.2 Partición de memoria 212

7.2.1 Partición fija 212

7.2.2 Partición dinámica 214

7.2.3 Sistema asociado 216

7.2.4 Reubicación 218

7.3 Paginación 219

7.4 Segmentación 222

7.5 Problemas de seguridad 222

7.5.1 Ataque de desbordamiento de búfer 222

7.5 .2 Prevención del desbordamiento del búfer 225

7.6 Resumen 225

7.7 Lectura recomendada 225

7.8 Términos clave, preguntas de repaso y ejercicios 225

Apéndice 7A Carga y vinculación 228

Capítulo 8 Memoria virtual 232

8.1 Hardware y estructuras de control 232

8.1.1 Localidad y memoria virtual 233

8.1.2 Paginación 235

8.1.3 Segmentación 242

8.1.4 Paginación de segmento 243

8.1.5 Protección y disfrute 244

8.2 Software del sistema operativo 244

8.2.1 Estrategia de lectura 245

8.2.2 Estrategia de ubicación 246

8.2.3 Estrategia de reemplazo 246

8.2.4 Gestión de conjuntos residentes 251

8.2.5 Estrategia de limpieza 255

8.2.6 Control de carga 255

8.3 Memoria UNIX y Solaris gestión 257

8.3.1 Sistema de paginación 257

8.3.2 Asignador de memoria del kernel 259

8.4 Gestión de memoria de Linux 260

8.4. 1 Memoria virtual de Linux 260

8.4.2 Asignación de memoria del kernel 261

8.5 Administración de memoria de Windows

262

8.5.1 Asignación de direcciones virtuales de Windows 263

8.5.2 Paginación de Windows 263

8.6 Resumen 264

8.7 Lecturas recomendadas y Sitio web 264

8.8 Términos clave, preguntas de repaso y ejercicios 265

Apéndice 8A Tabla hash 268

Parte 4 Programación

Parte 9 Capítulo Programación de procesador único 272

9.1 Tipos de programación de procesador 272

9.1.1 Programación de largo alcance 273

9.1.2 Programación de rango medio 274

9.1.3 Programación de corta distancia 274

9.2 Algoritmo de programación 274

9.2.1 Criterio de programación de corta distancia 274

9.2.2 Uso de prioridad 275

9.2.3 Seleccionar estrategia de programación 276

9.2.4 Comparación de desempeño 284

9.2.5 Programación compartida justa *** 287

9.3 Programación tradicional de UNIX 289

9.4 Resumen 290

9.5 Lectura recomendada 291

9.6 Términos clave, preguntas de repaso y ejercicios 291

Apéndice 9A Tiempo de respuesta 294

Apéndice 9B Sistema de colas 296

Proyecto de programación 2: Programa Shell de programación del host 299

Capítulo 10 Multiprocesador y tiempo real Programación 304

10.1 Programación multiprocesador 304

10.1.1 Granularidad 304

10.1.2 Problemas de diseño 307

10.1.3 Programación de procesos 308

10.1.4 Programación de subprocesos 309

10.2 Programación en tiempo real 312

10.2.1 Fondo 312

10.2.2 Real Características de operación en tiempo del sistema 313

10.2.3 Programación en tiempo real 315

10.2.4 Programación de plazos 316

10.2.5 Programación de tarifas monótonas 319

10.2.6 Inversión de prioridad 321

10.3 Programación de Linux 322

10.3.1 Programación en tiempo real 322

10.3.2 No -programación en tiempo real 323

10.4 Programación UNIX SVR4 325

10.5 Programación de Windows 326

10.5.1 Prioridad de procesos y subprocesos 326

10.5.2 Programación multiprocesador 328

10.6 Resumen 328

10.7 Lecturas recomendadas 328

10.8 Términos clave, preguntas de repaso y ejercicios 329

Parte 5 E/S y archivos

Capítulo 11 Administración de E/S y programación de discos 334

11.1 Dispositivos de E/S 334

11.2 Organización de E/S Funciones O 335

11.2.1 Desarrollo de funciones de E/S 335

11.2.2 Acceso directo a memoria 336

11.3 Problemas de diseño del sistema operativo 337

11.3.1 Objetivos de diseño 337

11.3.2 Estructura lógica de la función de E/S 338

11.4 Almacenamiento en búfer de E/S 339

11.4. 1 Búfer único 340

11.4.2 Búfer doble 341

11.4.3 Búfer circular 341

11.4.4 La función del almacenamiento en búfer 34

1

11.5 Programación de disco 342

11.5.1 Parámetros de rendimiento del disco 342

11.5.2 Política de programación de disco 344

11.6 RAID 347

11.6.1 Nivel RAID 0 349

11.6.2 Nivel RAID 1 350

11.6.3 Nivel RAID 2 351

11.6 .4 Nivel RAID 3 351

11.6.5 Nivel RAID 4 352

11.6.6 Nivel RAID 5 353

11.6.7 Nivel RAID 6 353 p>

11.7 Caché de disco 353

11.7.1 Consideraciones de diseño 353

11.7.2 Consideraciones de rendimiento 355

11.8 E/S UNIX SVR4 355

11.8.1 Caché de búfer 356

11.8.2 Cola de caracteres 356

11.8.3 E/S sin búfer 357

11.8 .4 Dispositivo UNIX 357

11.9 E/S de Linux 357

11.9.1 Programación de disco 358

11.9.2 Caché de páginas de Linux 360

11.10 Windows I/O 360

11.10.1 Mecanismo de E/S básico 360

11.10.2 E/S asíncrona y E/S síncrona 361

11.10.3 Software RAID 361

11.10.4 Instantánea de volumen 361

11.10.5 Cifrado de volumen 362

11.11 Resumen 362

11.12 Lecturas recomendadas 362

11.13 Términos clave, preguntas de repaso y ejercicios 363

Apéndice 11A Dispositivos de almacenamiento en disco 365

Capítulo 12 Administración de archivos 371

12.1 Descripción general 371

12.1.1 Archivos y sistemas de archivos 371

12.1.2 Estructura de archivos 371

12.1.3 Sistema de gestión de archivos 373

12.2 Organización y acceso a archivos 375

12.2.1 Heap 376

12.2.2 Archivos secuenciales 376

12.2.3 Índice de archivos secuenciales 377

12.2.4 Archivos de índice 377

12.2.5 Archivos directos o archivos hash 378

12.3 Directorios de archivos 378

12.3.1 Contenido 378

12.3.2 Estructura 379

12.3.3 Nombramiento 380

12.4 Compartir archivos 381

12.4.1 Derechos de acceso 381

12.4.2 Acceso simultáneo 381

12.5 Bloqueo de registros 382

12.6 Gestión de almacenamiento secundario 383

12.6.1 Asignación de archivos 383

12.6.2 Gestión del espacio libre 387

12.6.3 Volumen 388

12.6.4 Fiabilidad 388

p>

12.7 Sistema de archivos seguridad 389

12.8 Gestión de archivos UNIX 390

12.8.1 Nodo de índice 391

12.8.2 Asignación de archivos 392

12.8.3 Tabla de contenido

393

12.8.4 Estructura del volumen 393

12.8.5 Acceso a archivos UNIX tradicional

6.10.4 Control 393

12.8. Lista de control de acceso en UNIX 394

12.9 Sistema de archivos virtual Linux 395

12.9.1 Objeto de superbloque 397

12.9.2 Objeto de nodo de índice 397

12.9.3 Objeto de entrada de directorio 398

12.9.4 Objeto de archivo 398

12.10 Sistema de archivos de Windows 398

12.10.1 NTFS Funciones importantes 398

12.10.2 Volumen NTFS y estructura de archivos 399

12.10.3 Recuperabilidad 401

12.11 Resumen 402

12.12 Lectura recomendada 402

12.13 Términos clave, preguntas de repaso y ejercicios 403

Parte 6 Sistemas integrados

Capítulo 13 Sistemas operativos integrados 406

p>

13.1 Integrados sistemas 406

13.2 Características de los sistemas operativos integrados 407

13.2.1 Migración de sistemas operativos comerciales existentes 408

13.2.2 Integrados diseñados específicamente

6.10.4 Sistema operativo 408

13.3 eCos 409

13.3.1 Configurabilidad 409

13.3.2 Componente eCos 411

13.3.3 Programador eCos 414

13.3.4 Sincronización de subprocesos eCos 415

13.4 TinyOS 419

13.4.1 Red de sensores inalámbricos 420

13.4.2 Objetivos de TinyOS 420

13.4.3 Componentes de TinyOS 421

13.4.4 Programador de TinyOS 423

13.4.5 Ejemplo de configuración 423

13.4.6 Interfaz de recursos de TinyOS 425

13.5 Lecturas y sitio web recomendados 426

13.6 Términos clave, preguntas de repaso y ejercicios 426

Parte 7 Seguridad

Capítulo 14 Amenazas a la seguridad informática 430

14.1 Conceptos de seguridad informática 430

14.2 Amenazas, ataques y activos 431

14.2 .1 Amenazas y ataques 431

14.2.2 Amenazas y activos 432

14.3 Intrusos 434

14.3.1 Patrones de comportamiento de intrusos 435

14.3.2 Técnicas de intrusión 437

14.4 Descripción general del malware 437

14.4.1 Puerta trasera 437

14.4.2 Bomba lógica 438

14.4.3 Caballo de Troya 438

14.4.4 Código móvil 438

14.4.5 Malware multiamenaza 439

14.5 Virus, gusanos y zombies 440

14.5.1 Virus 440

14.5.2 Gusanos 443

14.5.3 Zombis 445

14.6 rootkits 447

14.6.1 Instalación de Rootkit 447

14.6.2 Ataques de llamadas a nivel de sistema 447

p>

14.7 Lecturas y sitios web recomendados 448

14.8 Términos clave, preguntas de repaso y ejercicios 448

Capítulo 15 Tecnología de seguridad informática 451

15.1 Autenticación de identidad 451

15.1.1 Métodos de autenticación 451

15.1.2 Autenticación basada en contraseña 451

15.1.3 Autenticación basada en token 453

15.1.4 Autenticación biométrica 454

15.2 Control de acceso 455

15.2.1 Control de acceso discrecional 456

15.2.2 Control de acceso basado en roles 458

15.3 Detección de intrusiones 460

15.3.1 Principios básicos 460

15.3.2 Tecnología de detección de intrusiones basada en host 461

15.3.3 Auditoría registros 462

15.4 Defensa contra malware 463

15.4.1 Métodos antivirus 463

15.4.2 Contramedidas contra gusanos 465

15.4. 3 Contramedidas para agentes automatizados 466

15.4.4 Contramedidas de rootkit 466

15.5 Manejo de ataques de desbordamiento de búfer 467

15.5 1 Defensa en tiempo de compilación 467

15.5.2 Defensa en tiempo de ejecución 469

15.6 Seguridad de Windows Vista 470

15.6.1 Esquema de control de acceso 470

15.6.2 Token de acceso 471

15.6.3 Descriptor de seguridad 471

15.7 Lectura recomendada y sitio web 474

15.8 Términos clave, preguntas de revisión y ejercicio 475

Parte 8 Sistemas distribuidos

Capítulo 16 Procesamiento distribuido, cliente/servidor y

Capítulo 16 Clúster 481

16.1 Modelo informático cliente/servidor 481

16.1.1 Qué es Cliente/Servidor

16.1.1 Modelo de Computación 481

16.1.2 Cliente/Aplicación del modelo de servidor 482

16.1.3 Middleware 486

16.2 Mensajería distribuida 487

16.2.1 Fiabilidad y falta de fiabilidad 488

16.2.2 Bloqueo y no bloqueo 488

16.3 Llamada a procedimiento remoto 489

16.3.1 Paso de parámetros 490

16.3.2 Representación de parámetros 490

16.3.3 Enlace cliente/servidor 490

16.3.4 Sincronización y asincronía 490

16.3.5 Mecanismo orientado a objetos 491

16.4 Clúster 491

16.4.1 Configuración del clúster 491

16.4.2 Problemas de diseño del sistema operativo 493

16.4.3 Arquitectura de la computadora del clúster 494

16.4.4 Comparación entre el clúster y SMP 495

16.5 Servidor de clúster de Windows 495

16.6 Clúster de Sun 496

16.6.1 Soporte de comunicación y objetos 497

16.6.2 Gestión de procesos 497

16.6.3 Conexión de red 497

16.6.4 Sistema de archivos global 498

16.7 Beowulf y Linux Cluster 498

16

.7.1 Características de Beowulf 498

16.7.2 Software Beowulf 499

16.8 Resumen 500

16.9 Lecturas y sitios web recomendados 500

16.10 Clave Terminología, preguntas de repaso y ejercicios 501

Apéndice A Temas de concurrencia 503

Apéndice B Diseño orientado a objetos 516

Apéndice C Programación y proyectos de sistemas operativos 523

Glosario 528

Referencias 536

Índice de contenidos de la versión en inglés

Capítulo 1 Descripción general del sistema informático 1

1.1 Elementos Básicos 1

1.2 Registros del Procesador 2

1.3 Ejecución de Instrucciones 5

1.4 Interrupciones 8

1.5 La Jerarquía de la Memoria 19

1.6 Memoria caché 22

1.7 Técnicas de comunicación de E/S 26

1.8 Lecturas y sitios web recomendados 29

1.9 Términos clave, preguntas de revisión y Problemas 30

Apéndice 1A Características de rendimiento de la memoria de dos niveles 32

Apéndice 1B Control de procedimientos 39

Capítulo 2 Descripción general del sistema operativo 43

2.1 Objetivos y funciones del sistema operativo 43

2.2 La evolución de los sistemas operativos 47

2.3 Principales logros 56

2.4 Desarrollos que conducen a los sistemas operativos modernos 69

2.5 Descripción general de Microsoft Windows 72

2.6 Sistemas UNIX tradicionales 82

2.7 Sistemas UNIX modernos 85

2.8 Linux 86

2.9 Lecturas y sitios web recomendados 93

2.10Términos clave, preguntas de revisión y problemas 95

Capítulo 3 Descripción y control del proceso 97

3.1 ¿Qué es un ¿Proceso? 97

3.2 Estados del proceso 100

3.3 Descripción del proceso 115

3.4 Control del proceso 124

3.5 Ejecución del sistema operativo 129 p>

3.6 Sí

Problemas de seguridad 132

3.7 Gestión de procesos UNIX SVR4 136

3.8 Resumen 141

3.9 Lectura recomendada 142

3.10Términos clave, preguntas de revisión, y problemas 142

Programación del proyecto uno Desarrollo de un Shell 146

Capítulo 4 Subprocesos, SMP y micronúcleos 149

4.1 Procesos y subprocesos 149

4.2 Multiprocesamiento simétrico (SMP) 163

4.3 Microkernels 167

4.4 Gestión de subprocesos y SMP de WindowsVista 173

4.5 Gestión de subprocesos y SMP de Solaris 178

4.6 Gestión de procesos y subprocesos de Linux 183

4.7 Resumen 186

4.8 Lectura recomendada 187

4.9 Términos clave, preguntas de revisión y problemas 188

Capítulo 5 Concurrencia: exclusión mutua y sincronización 193

5.1 Principios de concurrencia 194

5.2 Exclusión mutua: soporte de hardware 203

5.3 Semáforos 206 p>

5.4 Monitores 219

5.5 Transmisión de mensajes 226

5.6 Problema de lectores/escritores 232

5.7 Resumen 236

5.8 Lectura recomendada 237

5.9 Términos clave, preguntas de repaso y problemas 238

Capítulo 6 Concurrencia: punto muerto y hambre 249

6.1 Principios del punto muerto 249

6.2 Prevención de interbloqueos 258

6.3 Prevención de interbloqueos 259

6.4 Detección de interbloqueos 265

6.5 Una estrategia integrada de interbloqueos 267

6.6 Problema de Dining Philosophers 268

6.7 Mecanismos de concurrencia de UNIX 272

6.8 Mecanismo de concurrencia del kernel de Linux

s 275

6.9 Primitivas de sincronización de subprocesos de Solaris 281

6.10 Mecanismos de concurrencia de Windows Vista 284

6.11Resumen 288

6.12Lectura recomendada 288

6.13Términos clave, preguntas de revisión y problemas 289

Capítulo 7 Administración de la memoria 295

7.1 Requisitos de administración de la memoria 295

7.2 Partición de la memoria 298

7.3 Paginación 309

7.4 Segmentación 313

7.5 Problemas de seguridad 314

7.6 Resumen 318

7.7 Lectura recomendada 318

7.8 Términos clave, preguntas de repaso y problemas 319

Apéndice 7A Carga y vinculación 321

Capítulo 8 Memoria virtual 328

8.1 Estructuras de hardware y control 328

8.2 Software del sistema operativo 347

8.3 Administración de memoria de UNIX y Solaris 365

8.4 Administración de memoria de Linux 371

8.5 Administración de memoria de WindowsVista 373

8.6 Resumen 376

8.7 Lecturas y sitios web recomendados 377

8.8 Términos clave, preguntas de revisión y problemas 378

Apéndice 8A Tablas hash 382

Capítulo 9 Programación monoprocesador 386

9.1 Tipos de programación 386

9.2 Algoritmos de programación 390

9.3 Programación tradicional de UNIX 412

9.4 Resumen 414

9.5 Lectura recomendada 414

9.6 Términos clave, preguntas de repaso y problemas 415

Apéndice 9A Tiempo de respuesta 418

Apéndice 9B Sistemas de colas 420

Proyecto de programación dos The HOST Dispatcher Shell 427

Capítulo

er 10 Programación multiprocesador y en tiempo real 432

10.1 Programación multiprocesador 432

10.2 Programación en tiempo real 445

10.3 Programación en Linux 460

10.4 Programación UNIX FreeBSD 464

10.5Programación Windows Vista 466

10.6 Resumen 469

10.7 Lectura recomendada 469

10.8 Términos clave, Preguntas de revisión y problemas 470

Capítulo 11 Administración de E/S y programación de discos 473

11.1 Dispositivos de E/S 473

11.2 Organización de E/S Función 474

11.3 Problemas de diseño del sistema operativo 478

11.4 Almacenamiento en búfer de E/S 481

11.5 Programación de disco 484

11.6 RAID 491

11.7 Caché de disco 500

11.8 E/S de UNIX FreeBSD 503

11.9 E/S de Linux 506

11.10 E/S de WindowsVista 510

11.11Resumen 513

11.12 Lectura recomendada 513

11.13Términos clave, preguntas de revisión y problemas 515

Apéndice 11A Dispositivos de almacenamiento en disco 517

Capítulo 12 Administración de archivos 528

12.1 Descripción general 528

12.2 Organización y acceso a archivos 534

12.3 Directorios de archivos 538

12.4 Compartir archivos 543

12.5Bloqueo de registros 544

12.6Administración de almacenamiento secundario 546

12.7Seguridad del sistema de archivos 554

12.8 Administración de archivos UNIX 556

12.9 Administración de archivos Linux 563

12.10Sistema de archivos WindowsVista 567

12.11Resumen 573

12.12 Lectura recomendada 573

12.13Términos clave, preguntas de repaso y problemas 574

Glosario 5

77

Referencias 587