Libros urgentes
Ciencias Humanas
Ciencias Técnicas
Derecho
Economía
Informática
Libros de Texto
Literatura
Oposiciones
Otros
Tiempo Libre

Informática > Programación > Programación. Otros

Unix Programacion Avanzada, 3ª Edicion.
Francisco Manuel Márquez García (Editorial Ra-ma)
Precio:34,9 € ($54,77)
ISBN: 8478976035. ISBN-13: 9788478976034

688 p. ; 24x17 cm. (05/2004).
Entrega: 24 a 48 horas contra reembolso por agencia urgente*


UNIX se ha convertido en uno de los sistemas operativos más populares en entornos industriales, académicos y, recientemente, incluso domésticos y brinda al usuario un conjunto de herramientas muy variado y completo. La mayor parte de los programas estándar en UNIX están escritos en lenguaje C, y hace uso de unas piezas básicas conocidas como llamadas al sistema (system calls).
El conjunto de llamadas al sistema es la interfaz entre el sistema operativo y el programador que utiliza sus recursos y constituye el núcleo de estudio de este libro, junto con técnicas de programación avanzada que nos permitirán aprovechar al máximo la potencia y flexibilidad de UNIX.
El libro está estructurado en tres partes, de acuerdo con la siguiente distribución de capítulos:
-Introducción.
Parte 1. El sistema de ficheros.
-Arquitectura del sistema de ficheros.
-Manejo de ficheros ordinarios.
-Manejo de directorios y ficheros especiales.
Parte 2. Procesos e hilos.
-Estructura de un proceso.
-Gestión de procesos e hilos.
-Señales y funciones de tiempo.
-Perfilado, contabilidad y depuración.
Parte 3. Comunicación entre procesos.
-Comunicación mediante tuberías.
-Comunicación local entre procesos e hilos.
-Comunicaciones en red.
Para ayudar a la comprensión del texto se utilizan alrededor de 90 programas de ejemplo elegidos no sólo por su interés didáctico, sino también porque muchos de ellos responden a la funcionalidad de programas estándar UNIX. Estos programas pueden servirle al lector como elementos de referencia para la construcción de aplicaciones o de nuevas herramientas del sistema.

ÍNDICE

Índice de figuras xv

Índice de programas xvii

Índice de tablas xxi

Prólogo xxiii

1 Introducción
1.1 Estructura del sistema .1
1.2 Arquitectura del sistema operativo unix .3
1.3 Interfaz de las llamadas al sistema .5
1.4 Ejercicios .8
I El sistema de ficheros 11

2 Arquitectura del sistema de ficheros
2.1 Características del sistema de ficheros .13
2.2 Estructura del sistema de ficheros .14
2.2.1 El superbloque .15
2.2.2 Nodos índice (inodes) .16
2.2.3 Los bloques de datos.Estructura de un fichero ordinario .18
2.3 Tipos de ficheros en unix .23
2.3.1 Ficheros ordinarios .23
2.3.2 Directorios .24
2.3.3 Ficheros especiales .27
2.3.4 Tuberías con nombre .28
2.4 Extensiones del sistema bsd .29
2.4.1 Grupo de cilindros .30
2.5 Tablas de control de acceso a los ficheros .31
2.5.1 Tabla de nodos-i .31
2.5.2 Tabla de ficheros .31
2.5.3 Tabla de descriptores de fichero .33
2.6 Administración de los sistemas de ficheros .35
2.6.1 Particiones del disco .35
2.6.2 Formato del disco .35
2.6.3 Ficheros de dispositivo del disco .36
2.6.4 Construcción de un sistema de ficheros .38
2.6.5 Comprobación del estado de un sistema de ficheros .41
2.6.6 Montaje y desmontaje de un sistema de ficheros .42
2.6.7 Monitorización y contabilidad del sistema de ficheros .43
2.7 Ejercicios .44

3 Manejo de ficheros ordinarios
3.1 Introducción.51
3.2 Entrada/salida sobre ficheros ordinarios .53
3.2.1 Apertura de un fichero (open) .53
3.2.2 Lectura de datos de un fichero (read) .55
3.2.3 Escritura de datos en un fichero (write) .56
3.2.4 Cierre de un fichero (close) .57
3.2.5 Creación de un fichero (creat) .57
3.2.6 Duplicado de un descriptor (dup) .58
3.2.7 Acceso aleatorio (lseek) .58
3.2.8 Consistencia de un fichero .59
3.3 Biblioteca estándar de funciones de entrada/salida .59
3.3.1 Interfaz de la biblioteca estándar .59
3.3.2 Entrada/salida de caracteres con la biblioteca estándar .63
3.3.3 Implementación de la biblioteca estándar de entrada/salida .64
3.4 Control de ficheros abiertos (fcntl) .72
3.5 Administración de ficheros .77
3.5.1 stat, lstat y fstat .77
3.5.2 Modos de un fichero .78
3.5.3 Cambio de la información estadística de un fichero .81
3.5.4 Ejemplo de utilización de la información estadística de un fichero .83
3.6 Compartición y bloqueo de ficheros .87
3.6.1 Implementación de lockf a partir de open .91
3.7 Ejercicios .94

4 Manejo de directorios y ficheros especiales
4.1 Acceso a directorios .117
4.1.1 Creación de un directorio (mknod y mkdir) .118
4.1.2 Borrado de un directorio (rmdir) .119
4.1.3 Creación de nuevas entradas en un directorio (link) .120
4.1.4 Directorios asociados a un proceso (chdir y chroot) .121
4.1.5 Biblioteca estándar de acceso a directorios .122
4.2 Acceso a ficheros especiales .129
4.2.1 Entrada/salida sobre terminales .129
4.2.2 Control de terminales .135
4.3 Administración del sistema de ficheros .137
4.3.1 Montar y desmontar un sistema de ficheros (mount y umount) .137
4.3.2 Consistencia del sistema de ficheros (sync) .138
4.3.3 Estado de un sistema de ficheros .139
4.4 Ejercicios .144
II Procesos e hilos 157

5 Estructura de un proceso
5.1 Programas y procesos .159
5.2 Estados de un proceso .161
5.3 Tabla de procesos y área de usuario .164
5.4 Contexto de un proceso .165
5.5 Hilos y procesos ligeros .167
5.5.1 Hilos del núcleo .169
5.5.2 Procesos ligeros .169
5.5.3 Hilos del usuario .170
5.6 Distribución y planificación de procesos .171
5.7 Sistemas con requisitos de tiempo real .173
5.7.1 Planificación con prioridades fijas .173
5.7.2 Planificación con prioridades dinámicas .179
5.7.3 Planificación de tareas dependientes .179

6 Gestión de procesos e hilos
6.1 Ejecución de programas mediante exec .183
6.2 Creación de procesos (fork) .188
6.3 Terminación de procesos (exit y wait) .189
6.4 Información sobre procesos .195
6.4.1 Identificadores de proceso .195
6.4.2 Identificadores de usuario y de grupo .197
6.4.3 Variables de entorno .198
6.4.4 Parámetros relativos a ficheros .200
6.5 Control de la memoria asignada a un proceso .201
6.5.1 Asignación dinámica de memoria .202
6.5.2 Stiky bit .210
6.5.3 Bloqueo dememoria .211
6.6 Creación de hilos .212
6.7 Tratamiento de los errores .215
6.8 Atributos de un hilo .217
6.9 Cancelación de hilos .220
6.10 Funciones seguras y reentrantes .225
6.10.1 Funciones seguras para un uso concurrente .225
6.10.2 Funciones reentrantes .226
6.11 Planificación de hilos .227
6.12 Ejercicios .233

7 Señales y funciones de tiempo
7.1 Concepto de señal .239
7.2 Tipos de señales .240
7.3 Señales en el unix System V .243
7.3.1 Envío de señales (kill y raise) .243
7.3.2 Tratamiento de señales (signal) .245
7.3.3 En espera de señales (pause) .249
7.3.4 Saltos globales (setjmp y longjmp) .250
7.4 Señales en el sisTema 4.3bsd .252
7.4.1 Tratamiento de señales (sigvec) .253
7.4.2 Protección de zonas críticas .259
7.4.3 En espera de señales (sigpause) .260
7.4.4 Concepto de máquina virtual en el sistema bsd .262
7.5 Gestión de señales en posix .262
7.5.1 Tratamiento de señales (sigaction) .262
7.5.2 Envío de señales .267
7.5.3 Máscara de señales .268
7.5.4 Recepción síncrona de señales .274
7.6 Ejemplo de aplicación de las señales .276
7.6.1 Software tolerante a fallos .276
7.6.2 Sincronización de procesos .278
7.7 Funciones de tiempo .281
7.7.1 Fijación de la fecha del sistema (stime) .281
7.7.2 Lectura de la fecha del sistema (time y gettimeofday) .282
7.7.3 Tiempos de ejecución asociados a un proceso (times) .285
7.7.4 Temporizadores .288
7.8 Relojes, retardos y temporizadores en posix .294
7.8.1 Retardos .294
7.8.2 Temporizadores .295
7.9 Ejercicios .298

8 Perfilado, contabilidad y depuración
8.1 Perfil de un proceso .309
8.2 Contabilidad .315
8.3 Depuración de programas .322
III Comunicación entre procesos 331

9 Comunicación mediante tuberías
9.1 Comunicación entre procesos .333
9.2 Tuberías sin nombre .334
9.3 Comunicación bidireccional .337
9.4 Tuberías en los intérpretes de órdenes .340
9.5 Tuberías con nombre .342
9.6 Comunicación dúplex .350
9.6.1 Interrogación periódica .351
9.6.2 Lectura conducida por eventos .356
9.6.3 Multiplexación mediante select .357
9.7 Ejercicios .359

10 Comunicación local entre procesos e hilos
10.1 Mecanismos IPC del unix System V .369
10.1.1 Formación de llaves .370
10.1.2 Control de las facilidades IPC desde la línea de órdenes .371
10.2 Semáforos .372
10.2.1 Conceptos generales .372
10.2.2 Petición de semáforos (semget) .373
10.2.3 Control de las estructuras de semáforo (semctl) .374
10.2.4 Operaciones P y V (semop) .376
10.2.5 Ejemplo de aplicación.Sincronización de procesos .377
10.3 Memoria compartida .379
10.3.1 Petición de memoria compartida (shmget) .379
10.3.2 Control de una zona de memoria compartida (shmctl) .380
10.3.3 Operaciones con la memoria compartida (shmat y shmdt) .381
10.3.4 Ejemplo: multiplicación concurrente de matrices .382
10.4 Colas de mensajes .387
10.4.1 Petición de una cola de mensajes (msgget) .389
10.4.2 Control de las colas de mensajes (msgctl) .389
10.4.3 Operaciones con colas de mensajes (msgsnd y msgrcv) .390
10.4.4 Ejemplo: bases de datos centralizadas .391
10.5 Semáforos en posix .397
10.5.1 Críticas a los semáforos .399
10.6 Cerrojos en posix .400
10.6.1 Atributos de un cerrojo .402
10.7 Monitores con interfaz de procedimiento .405
10.7.1 Variables de condición en posix .406
10.7.2 Atributos de las variables de condición .415
10.8 Ejercicios .415

11 Comunicaciones en red
11.1 Mecanismos IPC del sistema bsd .423
11.1.1 Protocolos y conexiones .426
11.1.2 Direcciones de red .427
11.1.3 Modelo cliente-servidor .428
11.1.4 Esquema general de un servidor y de un cliente .429
11.2 Llamadas para elmanejo de conectores .430
11.2.1 Apertura de un punto terminal en un canal (socket) .431
11.2.2 Nombre de un conector (bind) .433
11.2.3 Disponibilidad para recibir peticiones de servicio (listen) .434
11.2.4 Petición de conexión (connect) .435
11.2.5 Aceptación de una conexión (accept) .435
11.2.6 Lectura o recepción de mensajes de un conector .436
11.2.7 Escritura o envío demensajes a un conector .438
11.2.8 Cierre del canal (close) .439
11.3 Ejemplos de servidores y clientes .439
11.3.1 Ejemplos con conectores de la familia AF_UNIX .440
11.3.2 Ejemplos con conectores de la familia AF_INET .452
11.4 Miscelánea de llamadas y funciones .464
11.4.1 Nombres de un conector (getsockname y getpeername) .464
11.4.2 Nombre del nodo actual (gethostname) .464
11.4.3 Construcción de tuberías a partir de conectores (socketpair) .465
11.4.4 Cierre de un conector (shutdown) .465
11.4.5 Lectura del fichero /etc/hosts .466
11.5 Ejemplo de aplicación.Transferencia de ficheros .467
11.6 Ejercicios .483

IV Apéndices 485

A El lenguaje de programación C
A.1 Introducción.487
A.2 Ciclo de creación de un programa .488
A.2.1 Componentes léxicos del lenguaje .488
A.2.2 Estructura de un programa C .489
A.3 Tipos de datos .490
A.3.1 Tipos fundamentales .490
A.3.2 Operador sizeof .491
A.3.3 Tipos derivados .492
A.3.4 Punteros .492
A.3.5 Alias para los nombres de tipo .496
A.4 Expresiones y operadores .497
A.4.1 Operadores aritméticos .497
A.4.2 Operadores de relación y lógicos .498
A.4.3 Operadores para elmanejo de bits .498
A.4.4 Expresiones abreviadas .499
A.5 Sentencias de control de flujo .499
A.5.1 Proposiciones y bloques .499
A.5.2 Selección (if-else) .500
A.5.3 Selección múltiple (else-if) .500
A.5.4 Selección por casos (switch) .501
A.5.5 Bucle for .502
A.5.6 Bucle (while) .502
A.5.7 Bucle (do-while) .502
A.5.8 break y continue .503
A.6 Funciones .503
A.6.1 Paso de parámetros por valor y por referencia .504

B Desarrollo de aplicaciones en el entorno unix
B.1 Programaciónmodular .509
B.2 Fases de la compilación .511
B.3 Compilación de programas multimodulares .512
B.4 El preprocesador de C .513
B.5 Ejemplo de programa con varios ficheros .516
B.6 Gestión de bibliotecas de funciones .519
B.6.1 Programas ar y ranlib .519
B.6.2 Programa nm .523
B.7 Distribución de los ficheros de una aplicación .524
B.8 Automatización de trabajos .526
B.9 Documentación .531
B.10Ejercicios .536

C Resumen de llamadas al sisTema 541

Referencias 575

Índice alfabético

Otros clientes que compraron Unix Programacion Avanzada, 3ª edicion., también compraron:


Programación De Videojuegos Con Sdl Para Windows Y Linux
Alberto García Serrano.
284 páginas.
Precio: 21,95 € ($34,45)


Otros libros de Programación. Otros:


GNU/LinuxGnu/linux
Francisco Charte Ojeda.
720 páginas.
Envío gratuito
Precio: 46,2 € ($72,5)


Lenguaje Programacion C-2/ELenguaje Programacion C-2/e
Brian W. Kernighan - Dennis M. Ritchie.
320 páginas.
Precio: 34,2 € ($53,66)


Cómo programar Videojuegos en Windows.Cómo Programar Videojuegos En Windows.
Antonio Ruiz Fernández.
232 páginas.
Precio: 15,03 € ($23,58)


DEVELOPING ASP NET SERVER CONT ROLSDeveloping Asp Net Server Cont Rols
KOTHARI.
752 páginas.
Precio: 75 € ($117,71)


Data structures demystifiedData Structures Demystified
Keogh.
300 páginas.
Precio: 19 € ($29,82)


*Para península. Tiempo estimado para días laborables