Publicado el 29 de Marzo del 2018
684 visualizaciones desde el 29 de Marzo del 2018
481,8 KB
10 paginas
Creado hace 14a (07/09/2010)
Prácticas de
Arquitectura de Computadores
y Sistemas Operativos
Rubén Usamentiaga Fernández
Julio Molleda Meré
Joaquín Entrialgo Castaño
Juan Carlos Granda Candás
Resumen de contenidos
1. Introducción a las herramientas y al entorno de trabajo
2. Programación de la API Win32 en lenguaje C
3. Procesos e hilos
4. Planificación de procesos e hilos
5. Sincronización de procesos e hilos
6. Gestión de memoria
7. Interfaz con el usuario
8. Interfaz gráfica
9. Programación con sockets
10. Servidores multihilo
11. Ficheros mapeados en memoria
12. Operaciones sobre archivos y directorios
13. Relojes y temporizadores. Tareas de tiempo real
A. Preguntas frecuentes
B. La biblioteca LibAC
III
1
17
31
43
49
71
81
103
117
155
173
179
195
207
211
IV
Resumen de contenidos
Índice general
1. Introducción a las herramientas y al entorno de trabajo
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1.1. Objetivo .
1.2. Conocimientos necesarios .
.
1.3.
.
1
1
. . . . . . . . . . . . . . . . . . . . . . .
.
1
. . . . . . . . . . . . . . . . . . . . . . .
.
1
. . . . . . . . . . . . . . . . . . . . . . .
.
Introducción .
.
1
. . . . . . . . . . . . . . . . . . . . . . .
.
1.3.1. Sistema operativo .
2
1.3.2. Entorno de desarrollo .
. . . . . . . . . . . . . . . . . . . . . . .
3
1.3.3. Lenguaje de programación . . . . . . . . . . . . . . . . . . . . .
3
1.4. Creación de un programa simple desde la línea de comandos . . . . . .
4
1.5. Trabajando desde el entorno de desarrollo . . . . . . . . . . . . . . . . .
4
1.5.1. Creación de un nuevo proyecto . . . . . . . . . . . . . . . . . . .
6
1.5.2. Soluciones y proyectos .
. . . . . . . . . . . . . . . . . . . . . .
7
1.5.3. Añadiendo ficheros al proyecto . . . . . . . . . . . . . . . . . . .
7
1.5.4. Compilando y ejecutando . . . . . . . . . . . . . . . . . . . . . .
8
1.5.5. Depurando el programa paso a paso . . . . . . . . . . . . . . . .
1.5.6. Creando un proyecto para las prácticas . . . . . . . . . . . . . .
9
1.5.7. Cabeceras precompiladas . . . . . . . . . . . . . . . . . . . . . . 10
1.5.8. Modelo de programación UNICODE . . . . . . . . . . . . . . . 11
. . . . . . . . . . . . . . . . . . . . . . . 12
.
. . . . . . . . . . . . . . . . . . . . . . . 13
1.6.1. Objetos del Kernel
1.6.2. Ejemplo del uso de funciones de la API Win32 . . . . . . . . . . 13
. . . . . . . . . . . . . . . . . . . . . . . 15
. . . . . . . . . . . . . . . . . . . . . . . 15
1.6. La API de Windows .
.
.
.
.
.
.
.
.
.
1.7. Autoevaluación .
.
1.7.1. Ejercicios propuestos .
.
.
.
.
.
.
.
.
V
VI
Índice general
2. Programación de la API Win32 en lenguaje C
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Introducción .
2.1. Objetivo .
.
2.2. Conocimientos necesarios .
2.3.
.
2.4. Conceptos del lenguaje C .
2.4.1. Salida por pantalla .
.
2.4.2. Variables .
.
2.4.3. Constantes .
.
.
.
2.4.4. Tipos .
.
.
.
2.4.5. Punteros .
2.4.6. Cadenas .
.
.
.
.
2.5. Ejercicios .
.
2.6. Autoevaluación .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2.6.1. Ejercicios propuestos .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Introducción .
3. Procesos e hilos
3.1. Objetivo .
.
3.2. Conocimientos necesarios .
.
3.3.
.
.
3.4. Gestión de procesos .
.
.
3.5. Gestión de hilos .
3.6. Autoevaluación .
.
.
.
.
.
.
.
.
3.6.1. Ejercicios propuestos .
.
.
.
.
.
.
.
.
.
3.7.1. SynchronizationObject .
.
3.7.2. Runnable
3.7.3. Thread .
.
3.7. Encapsulación en clases
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
17
. . . . . . . . . . . . . . . . . . . . 17
. . . . . . . . . . . . . . . . . . . . 17
. . . . . . . . . . . . . . . . . . . . 17
. . . . . . . . . . . . . . . . . . . . 17
. . . . . . . . . . . . . . . . . . . . 17
. . . . . . . . . . . . . . . . . . . . 19
. . . . . . . . . . . . . . . . . . . . 20
. . . . . . . . . . . . . . . . . . . 21
.
. . . . . . . . . . . . . . . . . . . 22
.
.
. . . . . . . . . . . . . . . . . . . 27
. . . . . . . . . . . . . . . . . . . . 29
. . . . . . . . . . . . . . . . . . . . 30
.
. . . . . . . . . . . . . . . . . . 30
.
31
.
. . . . . . . . . . . . . . . . . . . 31
. . . . . . . . . . . . . . . . . . . . 31
. . . . . . . . . . . . . . . . . . . . 31
. . . . . . . . . . . . . . . . . . . . 32
. . . . . . . . . . . . . . . . . . . . 35
. . . . . . . . . . . . . . . . . . . . 37
.
. . . . . . . . . . . . . . . . . . 38
. . . . . . . . . . . . . . . . . . . . 38
. . . . . . . . . . . . . . . . . . . . 38
. . . . . . . . . . . . . . . . . . . . 39
.
. . . . . . . . . . . . . . . . . . . 40
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Introducción .
43
4. Planificación de procesos e hilos
.
. . . . . . . . . . . . . . . . . . . 43
4.1. Objetivo .
.
. . . . . . . . . . . . . . . . . . . . 43
4.2. Conocimientos necesarios .
. . . . . . . . . . . . . . . . . . . . 43
.
4.3.
.
4.4. Planificación de hilos .
. . . . . . . . . . . . . . . . . . . 44
.
.
4.5. Establecimiento de la clase de prioridad del proceso . . . . . . . . . . . 44
4.5.1. Establecimiento de la prioridad relativa de un hilo . . . . . . . . 45
Incremento automático de los niveles de prioridad (boosting) . . 46
4.5.2.
.
4.5.3. Ejercicio .
. . . . . . . . . . . . . . . . . . . 47
. . . . . . . . . . . . . . . . . . . . 48
4.6. Autoevaluación .
. . . . . . . . . . . . . . . . . . . . 48
.
.
4.6.1. Ejercicios propuestos .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Índice general
VII
49
5. Sincronización de procesos e hilos
5.1. Objetivo .
.
.
.
.
.
.
.
.
.
.
5.2. Conocimientos necesarios .
5.3.
Introducción .
.
.
.
.
.
.
.
.
.
.
.
5.4. Elementos de sincronización .
5.4.1.
Introducción .
5.4.2. Semáforos .
5.4.3. Mutex .
.
.
.
.
.
.
.
.
.
.
.
.
.
5.4.4. Secciones críticas .
5.5. Ejercicio .
.
.
.
.
5.6. Autoevaluación .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5.6.1. Ejercicios propuestos .
5.7. Encapsulación en clases
5.7.1. CriticalSection .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . . . . . . . . . . . . . . . . . . . . . 49
. . . . . . . . . . . . . . . . . . . . . . . 49
. . . . . . . . . . . . . . . . . . . . . . . 49
. . . . . . . . . . . . . . . . . . . . . . . 51
. . . . . . . . . . . . . . . . . . . . . . . 51
. . . . . . . . . . . . . . . . . . . . . . . 52
. . . . . . . . . . . . . . . . . . . . . . . 53
. . . . . . . . . . . . . . . . . . . . . . . 53
. . . . . . . . . . . . . . . . . . . . . . . 54
. . . . . . . . . . . . . . . . . . . . . . . 55
. . . . . . . . . . . . . . . . . . . . . . . 56
. . . . . . . . . . . . . . . . . . . . . . . 56
. . . . . . . . . . . . . . . . . . . . . . . 56
5.7.2. ScopedCriticalSection .
. . . . . . . . . . . . . . . . . . . . . . . 57
5.7.3. Semaphore .
5.7.4. Event .
.
.
.
.
.
.
.
5.7.5. SharedQueue .
5.7.6. ThreadPool
.
.
.
.
.
.
.
.
.
.
.
.
.
.
6. Gestión de memoria
6.1. Objetivo .
.
.
.
.
.
.
.
.
.
.
6.2. Conocimientos necesarios .
6.3.
Introducción .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . . . . . . . . . . . . . . . . . . . . . 59
. . . . . . . . . . . . . . . . . . . . . . . 62
. . . . . . . . . . . . . . . . . . . . . . . 64
. . . . . . . . . . . . . . . . . . . . . . . 67
71
. . . . . . . . . . . . . . . . . . . . . . . 71
. . . . . . . . . . . . . . . . . . . . . . . 71
. . . . . . . . . . . . . . . . . . . . . . . 71
6.4. Gestión de la memoria virtual .
. . . . . . . . . . . . . . . . . . . . . . . 72
6.4.1. Ejercicio .
6.5. Heap .
.
.
.
.
.
.
6.5.1. Ejercicio .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . . . . . . . . . . . . . . . . . . . . . 73
. . . . . . . . . . . . . . . . . . . . . . . 77
. . . . . . . . . . . . . . . . . . . . . . . 78
6.6. Aplicabilidad de los métodos de gestión de memoria . . . . . . . . . . 78
6.7. Autoevaluación .
.
.
.
.
.
.
.
6.7.1. Ejercicios propuestos .
.
.
. . . . . . . . . . . . . . . . . . . . . . . 79
. . . . . . . . . . . . . . . . . . . . . . . 79
VIII
Índice general
7. Interfaz con el usuario
81
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Introducción .
. . . . . . . . . . . . . . . . . . . . 81
7.1. Objetivo .
.
. . . . . . . . . . . . . . . . . . . . 81
7.2. Conocimientos necesarios .
. . . . . . . . . . . . . . . . . . . . 81
7.3.
.
7.4. Análisis de la estructura básica del programa mínimo en Windows . . 82
7.4.1. Punto de entrada del programa . . . . . . . . . . . . . . . . . . . 82
7.5. Esqueleto de aplicación en Windows . . . . . . . . . . . . . . . . . . . . 83
7.6. Uso de controles en la creación de interfaces
. . . . . . . . . . . . . . . 88
. . . . . . . . . . . . . . . . . . . . 89
.
7.7. Cuadros de diálogo .
. . . . . . . . . . . . . . . . . . . . 91
7.8. Menús y otros recursos .
. . . . . . . . . . . . . . . . . . . . 92
.
.
. . . . . . . . . . . . . . . . . . . . 93
. . . . . . . . . . . . . . . . . . . . 93
.
. . . . . . . . . . . . . . . . . . . . 93
. . . . . . . . . . . . . . . . . . . . 94
. . . . . . . . . . . . . . . . . . . . 94
.
. . . . . . . . . . . . . . . . . . . 98
.
.
.
.
.
7.10.1. Ejercicios propuestos .
.
.
.
7.11. Encapsulación en clases
.
.
7.8.1. Ejercicio .
.
7.9. Depuración .
7.10. Autoevaluación .
7.11.1. Window .
7.11.2. Dialog .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
8. Interfaz gráfica
103
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Introducción .
8.5.
Comentarios de: Indice - Prácticas de Arquitectura de Computadores y Sistemas Operativos (0)
No hay comentarios