sisoputnfrba / foro

Foro de consultas para el trabajo práctico
148 stars 7 forks source link

Procesos e hilos #4305

Closed Eliaslis closed 1 week ago

Eliaslis commented 1 week ago

🛠️ Lenguaje

C

🖋️ Descripción

Buenas, ¿Cómo va? Con mis compañeros nos surgieron algunas dudas trabajando, así que ahí va la lista:

  1. Como lo que se van a planificar son los hilos de los procesos, está bien pensar en una cola o lista alternativa para colocar a los procesos en el sistema ya iniciados? Esto es para no mezclar dentro de las mismas estructuras hilos con procesos, o así lo pensamos nosotros.
  2. Si se bloquea un hilo, ¿se bloquea el proceso entero? ¿Habría que tener colas de bloqueados para hilos y otras colas para los procesos?
  3. Similar con la cola de exit, a medida que finalizan los hilos de un proceso, ¿habría que tenerlos en una cola de exit para hilos y cuando finaliza el proceso entero tener una cola de exit para procesos?
  4. ¿Puede haber varios procesos inicializados?, es decir, con su TID 0 creados y encolados donde corresponda. Muchas gracias 🤠

📔 Citas del enunciado/videos

No response

💭 Soluciones posibles

No response

📝 Normas del foro

f-and commented 1 week ago

Buenas!

  1. Si, van a necesitar alguna lista para manejar los procesos, ya que estos son los que indicarían los TIDs que tienen.

  2. No, ya que, por ejemplo tienen la syscall THREAD_JOIN, que bloquearía al hilo que la llamo hasta que el otro hilo (del mismo proceso) se termine. Van a tener que manejar varias listas de bloqueados porque un hilo se puede bloquear por varias razones (join de hilos, mutex, recursos, etc.).

  3. Les pregunto a ustedes, necesitan una cola de exit? Para que la usarían?

  4. Van a haber varios procesos inicializados, para eso tienen la syscall PROCESS_CREATE. Si la pregunta va por el lado de las colas de NEW y READY, ambas van a poder tener varios procesos en cualquier momento, únicamente en el caso de NEW no va a haber un TID 0 generado (porque si está encolado el proceso y no hay memoria para inicializarlo, aun no se crea el hilo inicial); y en el caso de READY puede haber procesos con más de un hilo creado.

Espero haber respondido tus consultas, no dudes en responderme por cualquier inquietud.

Saludos.-

gona7 commented 1 week ago

Buenas! Gracias por la respuesta, muy clara la verdad.

Una pregunta para ver si nos queda más claro y redondear entonces, en New se van a estar encolando los procesos nuevos que lleguen. Pero una vez inicializados sus Hilos 0 y asignado su espacio en memoria, los procesos en sí con la PCB se irían fuera de la cola de NEW, y pasarian a estar en una especie de lista aparte a los estados del diagrama?

Es decir, los procesos no van a estar moviendose entre READY, EXEC, BLOCKED, etc. Sino que lo estamos estamos pensando como que deberian estar en una lista aparte por si necesitan acceder justamente como decis por ejemplo a los TIDs que tienen. Esta bien ese acercamiento?

Gracias nuevamente!

f-and commented 1 week ago

Claro, existirían aparte de los estados porque no se mandaría a ejecutar el proceso sino el hilo específico de dicho proceso.

gona7 commented 1 week ago

Graciass! Clarisimo eso entonces.

Aprovechando el "hilo" (badumss jeje) de conversación, otra duda con la consigna es cuando el proceso que está en NEW y NO puede inicializarse porq no tiene memoria a asignar, en ese caso el proceso se tiene que quedar quieto ahi esperando y todos los demás procesos que estén atrás tambien esperarán a que el proceso que llegó antes pueda ser inicializado? Eso es correcto?

f-and commented 1 week ago

Exactamente, porque para el planificador a largo plazo maneja un esquema FIFO.

SantiagoDopazo commented 1 week ago

Hola buenas, La duda quedo resuelta? Si es así no olviden cerrar el issue. @gona7, @Eliaslis.