Closed ValenGriggio18 closed 1 month ago
Buenas! Cómo va?
Si nos vamos a la teoría, el estado NEW es justamente el estado donde están los procesos mientras que el SO genera todas sus estructuras administrativas y hace todo lo que tiene que hacer para que el proceso ejecute, entre las cuales se encuentra el crear el primer hilo o el TID 0, es por eso que en el enunciado no creamos el TID 0 de entrada, ya que los hilos no pasan por el estado NEW y van directo a READY.
En la parte de la syscall en la CPU les aclaramos que tienen que crear el TID 0 porque si no alguno podría pensar que después les vamos a cread un THREAD_CREATE para el TID 0 y no es Asi.
Saludos.-
Perfecto, muchísimas gracias :)
Si las dudas quedaron resueltas no te olvides de cerrar el issue 👮♂️
🛠️ Lenguaje
Go
🖋️ Descripción
Buenas! quiero consultar respecto a dos partes del enunciado que me generan una contradicción al leerlas porque seguramente las esté interpretando mal. Hay una parte del enunciado (que igual voy a dejar más abajo citada) que dice que al llegar un nuevo proceso a la cola NEW y la misma esté vacía, se enviará un pedido a memoria para ver si tiene espacio, y si la respuesta es afirmativa, recién ahí creamos el TID 0. Esto me genera ruido porque está hablando de un proceso que ya está en la cola de NEW y que no tiene TID 0, y yo tenía eentendido que para que un proceso exista como tal su TID 0 (hilo principal) debe crearse junto al proceso. Es decir, si el proceso ya existía y estaba encolado en NEW, su respectivo TID 0 no debería estar también creado junto con el proceso? y de recibir la respuesta afirmativa de memoria se lo pasaría a estado READY. Yo lo entiendo de esta manera porque hay otra parte del enunciado donde habla de las Syscalls que va a atender el Kernel, y en la syscall PROCESS_CREATE nos dice que el Kernel creará un nuevo PCB y un TCB asociado con TID 0 y lo dejará en estado NEW. Es decir acá nos dice que apenas el kernel atiende la syscall PROCESS_CREATE ya crea un nuevo PCB y un TCB asociado con TID 0, pero en la otra parte del enunciado dice quee hasta que memoria no nos confirme, no podemos crear el TID 0. Yo entiendo que la forma de proceder es la que describí antes, es decir se crea todo junto y lo que nos confirma la petición a memoria es si podemos pasarlo a ready o no, pero el TID 0 ya debeería estar creado cuando el proceso está en la cola de NEW. Muchas gracias desde ya :)
📔 Citas del enunciado/videos
PRIMERA CITA ( la que habla de la petición de memoria): Se tendrá una cola NEW que será administrada estrictamente por FIFO para la creación de procesos. Al llegar un nuevo proceso a esta cola y la misma esté vacía se enviará un pedido a Memoria para inicializar el mismo, si la respuesta es positiva se crea el TID 0 de ese proceso y se lo pasa al estado READY y se sigue la misma lógica con el proceso que sigue.
SEGUNDA CITA (la que habla de la syscal PROCESS_CREATE): PROCESS_CREATE, esta syscall recibirá 3 parámetros de la CPU, el primero será el nombre del archivo de pseudocódigo que deberá ejecutar el proceso, el segundo parámetro es el tamaño del proceso en Memoria y el tercer parámetro es la prioridad del hilo main (TID 0). El Kernel creará un nuevo PCB y un TCB asociado con TID 0 y lo dejará en estado NEW.
💭 Soluciones posibles
No response
📝 Normas del foro