You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Tengo una duda sobre la manera de replanificar cuando se encuentra una syscall. Mi duda es en qué momento se realiza la replanificación. Lo que interpeto es lo siguiente pero siento que estoy pifiando en algo:
La CPU va ejecutando instrucciones
Hace fetch, decode y execute de alguna syscall (por ejemplo THREAD_CREATE)
Cuando la CPU ejecuta esa instruccion (solicitando al kernel que cree el hilo etc), el kernel desaloja a ese hilo y pone a ejecutar otro (en el caso de FIFO)
En el caso de las pruebas básicas de PLANI que fueron enviadas:
SET DX 0
SET AX 1
THREAD_CREATE PLANI_THREAD 6
Despues de ejecutar THREAD_CREATE se deberia desalojar el hilo que tenía esta instrucción y se debería empezar a ejecutar el hilo creado? Todas las syscalls deberían realizar un desalojo o algunas pueden ser no bloqueantes?
Por otro lado, a la hora de realizar el log obligatorio de memoria:
destrucción de Proceso: “## Proceso <Creado/Destruido> - PID: - Tamaño: <TAMAÑO>
El tamaño a printear debería ser el tamaño del proceso eliminado, no? Supongo que sí pero me quiero sacar la duda, ya que capaz es el tamaño de la partición donde estaba alojado el proceso (en caso de particiones dinámicas el tamaño de la partición es el mismo que el proceso, pero si son fijas puede ser distinto)
Muchas gracias:)
The text was updated successfully, but these errors were encountered:
En este TP para los enunciados de C, al momento de crear un nuevo Thread uds lo único que tienen que hacer es poner este nuevo thread en Ready como dice el enunciado, cito a continuación:
THREAD_CREATE, esta syscall recibirá como parámetro de la CPU el nombre del archivo de pseudocódigo que deberá ejecutar el hilo a crear y su prioridad. Al momento de crear el nuevo hilo, deberá generar el nuevo TCB con un TID autoincremental y poner al mismo en el estado READY.
Una vez puesto el nuevo thread en Ready el Thread que invocó la syscall, continúa ejecutando, como cualquier syscall no bloqueante.
Respecto a la segunda duda, si, el tamaño que tienen que loguear es el tamaño del proceso.
Muchas gracias por la respuesta :)
Por otro lado, ¿solo la syscall DUMP_MEMORY bloquea al hilo? ¿El resto de las syscalls no bloquea al hilo que la invoca?
En las pruebas iniciales de planificación con FIFO, al no ser bloqueante el THREAD_CREATE, ¿Entonces debería solamente ejecutar todo el hilo main y no ejecutar ninguno de los hilos que crea?
Tenes que ver cada syscall en particular, por ejemplo MUTEX_LOCK te puede bloquear, mientras que MUTEX_UNLOCK no, o el caso de IO que te bloquea siempre al igual que DUMP_MEMORY.
🛠️ Lenguaje
C
Buenas!
Tengo una duda sobre la manera de replanificar cuando se encuentra una syscall. Mi duda es en qué momento se realiza la replanificación. Lo que interpeto es lo siguiente pero siento que estoy pifiando en algo:
En el caso de las pruebas básicas de PLANI que fueron enviadas:
SET DX 0
SET AX 1
THREAD_CREATE PLANI_THREAD 6
Despues de ejecutar THREAD_CREATE se deberia desalojar el hilo que tenía esta instrucción y se debería empezar a ejecutar el hilo creado? Todas las syscalls deberían realizar un desalojo o algunas pueden ser no bloqueantes?
Por otro lado, a la hora de realizar el log obligatorio de memoria:
destrucción de Proceso: “## Proceso <Creado/Destruido> - PID: - Tamaño: <TAMAÑO>
El tamaño a printear debería ser el tamaño del proceso eliminado, no? Supongo que sí pero me quiero sacar la duda, ya que capaz es el tamaño de la partición donde estaba alojado el proceso (en caso de particiones dinámicas el tamaño de la partición es el mismo que el proceso, pero si son fijas puede ser distinto)
Muchas gracias:)
The text was updated successfully, but these errors were encountered: