Filtrar

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.

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 pasadoHAY 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.

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).

14407a0ac8fb7e47b99966bb74ad848f.png

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.

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:
pdf

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.

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.

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.

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