Problema de paralelización en el control 81
Luis Mateu B. 6 May 202306/05/23 a las 14:20 hrs.2023-05-06 14:20:06 Información
Este semestre sí voy a preguntar sobre paralelización en el control, algo que no hice en semestres anteriores pero sí en exámenes. Recomiendo que resuelvan la pregunta 1 de este examen. Tomen como referencia los problemas de paralelización de las clases auxiliar (en especial la búsqueda de un factor) y la tarea 1 de este semestre.
Preparación para el control del miércoles 10 de mayo 76
Luis Mateu B. 1 May 202301/05/23 a las 12:04 hrs.2023-05-01 12:04:01 Información
El control es el miércoles 10 de mayo (la próxima semana) en el horario extendido de la clase auxiliar (16:00 a 18:00). Para preparar el control consideren resolver alguno de los controles del semestre pasado o antepasado, publicados en esta página. Ejemplos de soluciones de este tipo de problemas son los que se han visto en las clases auxiliares.
El control es sin apuntes, pero pueden llevar un torpedo de una hoja por lado y lado. Debe estar manuscrito y no se aceptan fotocopias ni nada impreso. La idea es que aprovechen de estudiar cuando hagan el torpedo.
Entra hasta implementación de herramientas de sincronización en nThreads sin timeout, es decir hasta la tarea 4.
El control es sin apuntes, pero pueden llevar un torpedo de una hoja por lado y lado. Debe estar manuscrito y no se aceptan fotocopias ni nada impreso. La idea es que aprovechen de estudiar cuando hagan el torpedo.
Entra hasta implementación de herramientas de sincronización en nThreads sin timeout, es decir hasta la tarea 4.
Auxiliar #7 Implementación de Mensajes 66
Pablo Jaramillo V. 24 Abr 202324/04/23 a las 20:15 hrs.2023-04-24 20:15:24 Auxiliares
El auxiliar #7 será donde siempre. Veremos la herramienta de mensajes implementada con nThreads, con un ejemplo de uso y la implementación.
Material:
Como siempre se tiene disponible el video del año pasado. HAY UN ERROR EN LA GRABACIÓN. Lea más adelante para la corrección.
Durante la clase auxiliar se detectó un error en el código de nReceive. Actualicé el .zip de arriba con la solución correcta.
El error consta de la linea donde se asigna *msg:
nThread sender_th = nth_getFront(this_th->sendQueue);
*pth = sender_th ? sender_th : NULL;
void *msg = sender_th->msg;
Esto genera un SEGFAULT cuando nReceive despierta por caducación de su timeout, cuando esto sucede la queue de la cual se obtiene sender_th va a estar vacia, por lo que sender_th será NULL. Esto hace la condición in-line de la asignación de *pth redundante y hace caso omiso a que sucede en la asignación de *msg, se haría algo similar a *msg = (*NULL)->msg, lo que no es valido.
Una corrección valida sería la siguiente, donde se revisa si sendTask es NULL y si lo es entonces el menaje es NULL, y si no lo es entonces es el mensaje.
nThread sendTask= nth_getFront(thisTh->sendQueue);
if (pth!=NULL)
*pth= sendTask;
void *msg= sendTask==NULL ? NULL : sendTask->send.msg;
Material:
Como siempre se tiene disponible el video del año pasado. HAY UN ERROR EN LA GRABACIÓN. Lea más adelante para la corrección.
Durante la clase auxiliar se detectó un error en el código de nReceive. Actualicé el .zip de arriba con la solución correcta.
El error consta de la linea donde se asigna *msg:
nThread sender_th = nth_getFront(this_th->sendQueue);
*pth = sender_th ? sender_th : NULL;
void *msg = sender_th->msg;
Esto genera un SEGFAULT cuando nReceive despierta por caducación de su timeout, cuando esto sucede la queue de la cual se obtiene sender_th va a estar vacia, por lo que sender_th será NULL. Esto hace la condición in-line de la asignación de *pth redundante y hace caso omiso a que sucede en la asignación de *msg, se haría algo similar a *msg = (*NULL)->msg, lo que no es valido.
Una corrección valida sería la siguiente, donde se revisa si sendTask es NULL y si lo es entonces el menaje es NULL, y si no lo es entonces es el mensaje.
nThread sendTask= nth_getFront(thisTh->sendQueue);
if (pth!=NULL)
*pth= sendTask;
void *msg= sendTask==NULL ? NULL : sendTask->send.msg;
Cátedras del mates 25 y jueves 27 de abril 24
Luis Mateu B. 24 Abr 202324/04/23 a las 19:02 hrs.2023-04-24 19:02:24 Cátedras presenciales
Ambas clases serán presenciales.
Temario: Implementación de timeouts, nSleepNanos, round robin (repaso), implementación del scheduling round robin, cómo despertar los cores, implementación de la rutina de atención del timer de tiempo virtual
Presentación: pdf
Video de la clase presencial.
Temario: Implementación de un núcleo de Unix, espacio de direcciones virtuales, peers (contrapartes), relación entre Unix y nThreads, núcleo clásico y núcleo moderno, spin-locks
Presentación: pdf
Video de un semestre previo.
Martes 25
Temario: Implementación de timeouts, nSleepNanos, round robin (repaso), implementación del scheduling round robin, cómo despertar los cores, implementación de la rutina de atención del timer de tiempo virtual
Presentación: pdf
Video de la clase presencial.
Jueves 27
Temario: Implementación de un núcleo de Unix, espacio de direcciones virtuales, peers (contrapartes), relación entre Unix y nThreads, núcleo clásico y núcleo moderno, spin-locks
Presentación: pdf
Video de un semestre previo.
Auxiliar #6 30
José Astorga Tobar 19 Abr 202319/04/23 a las 12:27 hrs.2023-04-19 12:27:19 Auxiliares
- Diagramas de estrategias de scheduling
- Implementación de scheduler con prioridades para 1 core
Presentación Video código: sched-pri-1core.c
Notar que la solución del video tiene una diferencia con la solución presentada en la pauta. Esto es debido a un bug que detectó el profesor luego de que la auxiliar del video fuese realizada. La diferencia la pueden ver en la siguiente imagen (Izquierda código final, Derecha código del video).
Saludos
Cátedras del martes 18 y jueves 20 de abril 42
Luis Mateu B. 17 Abr 202317/04/23 a las 16:24 hrs.2023-04-17 16:24:17 Cátedras presenciales
Ambas clases serán presenciales.
Temario: Implementación de threads, la pila, threads nivel de núcleo (pthreads) vs. threads nivel usuario (nThreads), compatibilidad de nThreads con pthreads, el cambio de contexto, implementación de un scheduler FCFS para single core, implementación de semáforos, implementación de secciones críticas, caso single core.
Presentación: pdf
Video de la clase presencial de un semestre previo
Jueves 20
Temario: Implementación de secciones críticas, nSelf, implementación de FCFS para multicore
Video
Martes 18
Temario: Implementación de threads, la pila, threads nivel de núcleo (pthreads) vs. threads nivel usuario (nThreads), compatibilidad de nThreads con pthreads, el cambio de contexto, implementación de un scheduler FCFS para single core, implementación de semáforos, implementación de secciones críticas, caso single core.
Presentación: pdf
Video de la clase presencial de un semestre previo
Jueves 20
Temario: Implementación de secciones críticas, nSelf, implementación de FCFS para multicore
- Presentación:
Video
- de la clase presencial de un semestre previo
Errata tarea 3: acción requerida 30
Luis Mateu B. 16 Abr 202316/04/23 a las 10:58 hrs.2023-04-16 10:58:16 Acción requerida
Hay un error en el programa de prueba de la tarea 3. Por favor modifiquen la función main incluida en el archivo test-batch.c de modo que quede así:
int main() {
resetTime(); // agregar!
printf("Test secuencial: 1 solo job a la vez\n");
...
}
Sin esta modificación no es posible aprobar el test de orden de llegada.
int main() {
resetTime(); // agregar!
printf("Test secuencial: 1 solo job a la vez\n");
...
}
Sin esta modificación no es posible aprobar el test de orden de llegada.
Auxiliar #5 Timeouts y Patrón Productor/Consumidor 37
Pablo Jaramillo V. 10 Abr 202310/04/23 a las 21:52 hrs.2023-04-10 21:52:10 Auxiliares
Hola! La auxiliar #5 será este Miercoles a las 16:15 en la B112. Vamos a ver 2 ejercicios ambos sobre sincronización de threads, uno utilizando timeouts y el otro viendo un ejemplo de uso del patrón productor/consumidor.
Material:
Como la otra vez les dejo acá disponible las diapositivas y soluciones, además de la plantilla para quien quiera seguir el auxiliar en vivo / quiera intentarlo por su cuenta.
Para quien no pueda ir/quiera referencia a futuro tenemos el video del año pasado, cubriendo los mismos problemas.
Material:
Como la otra vez les dejo acá disponible las diapositivas y soluciones, además de la plantilla para quien quiera seguir el auxiliar en vivo / quiera intentarlo por su cuenta.
Para quien no pueda ir/quiera referencia a futuro tenemos el video del año pasado, cubriendo los mismos problemas.
Cátedras del martes 11 y jueves 13 de abril 39
Luis Mateu B. 10 Abr 202310/04/23 a las 14:34 hrs.2023-04-10 14:34:10 Cátedras presenciales
Ambas clases serán presenciales.
Comenzamos con la segunda unidad: administración de procesos
Temario: principio de virtualización, procesos livianos vs. procesos pesados, preemptiveness, scheduling de procesos, interrupciones y timer, estados de un proceso, descriptor de proceso, ráfagas de CPU.
Temario: estrategias de scheduling, first come first served (FCFS), shortest job first (SJF), prioridades, round robin
Presentación: pdf
Video de un semestre previo
Martes 11
Comenzamos con la segunda unidad: administración de procesos
Temario: principio de virtualización, procesos livianos vs. procesos pesados, preemptiveness, scheduling de procesos, interrupciones y timer, estados de un proceso, descriptor de proceso, ráfagas de CPU.
Presentación: pdf
Video de un semestre previo
Jueves 13
Temario: estrategias de scheduling, first come first served (FCFS), shortest job first (SJF), prioridades, round robin
Presentación: pdf
Video de un semestre previo
Auxiliar #4 49
José Astorga Tobar 4 Abr 202304/04/23 a las 19:03 hrs.2023-04-04 19:03:04 Auxiliares
La auxiliar #4 se desarrollará de manera presencial mañana a las 16:15 en la sala B112. Veremos sincronización de threads utilizando semáforos
codigos.zip (5.8 kb)
Auxiliar_4_Semaforos.pdf (461 kb)
Existe un video de un semestre anterior, pero la solución de la p1b (p2 en el video) mostrada en el video es incorrecta. p1b_sol.c contiene la solución correcta y comentada. También se corrigieron algunos errores en la presentación del enunciado.
Video
codigos.zip (5.8 kb)
Auxiliar_4_Semaforos.pdf (461 kb)
Existe un video de un semestre anterior, pero la solución de la p1b (p2 en el video) mostrada en el video es incorrecta. p1b_sol.c contiene la solución correcta y comentada. También se corrigieron algunos errores en la presentación del enunciado.
Video