sisoputnfrba / foro

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

DUDA DE PLANIFICACIÓN EN EL TP #3571

Closed VEBravo closed 4 months ago

VEBravo commented 4 months ago

Según el enunciado ví que se va a ejecutar un script que recibe la ubicación de un archivo que tiene algunas de las 5 funciones (INCIAR/FINALIZAR PROCESO, DETENER/INICIAR PLANIFICACION y PROCESO ESTADO), separadas por un \n. El problema es que no termino de entender dónde va a estar el archivo de pseudocódigo de instrucciones que le vamos a pasar como PATH y que representa al proceso. Nos lo van a dar en el laboratorio? Los tenemos que crear nosotros?

FredeHG commented 4 months ago

Hola buenas!

Esos archivos se los vamos a dar cuando se acerque la fecha de entrega, ustedes deciden donde van a estar, los archivos de pseudocódigo tienen que ser accesible por el modulo de memoria por lo que la carpeta de memoria misma es un buen candidato para este fin

Para el desarrollo pueden crear sus propios archivos usando como ejemplo lo que esta en la pagina 16 del enunciado

Lo mismo aplica para los archivos de script pero esta vez el que los necesita es el Kernel

Saludos!

VEBravo commented 4 months ago

Entiendo, gracias!

VEBravo commented 4 months ago

Me olvidé de consultar. Hay algo que no termino de entender. Cuando al Kernel por consola se le envía el path para que inicie un proceso. Entiendo que el proceso es marcado con un pid que funciona para todo el sistema. Sin embargo, la idea sería que el kernel también le envíe ese path a la memoria también para que esta guarde las instrucciones? Luego, no termino de entender dónde se van a guardar esas instrucciones tipo assembler que van a estar en la memoria. Se guardarán en la tabla de páginas? O la idea no es que se guarden sino que memoria se encargue de leer ese archivo y a medida que lo va leyendo le pasa las instrucciones a CPU? La parte de memoria sé que se ve recién después del primer parcial pero eso es algo que supongo que debería saber ahora para el chekpoint 2 y me está costando

RaniAgus commented 4 months ago

¡Buenas!

la idea sería que el kernel también le envíe ese path a la memoria también para que esta guarde las instrucciones?

Es correcto, ya que en este enunciado la memoria debe leer y parsear las instrucciones desde el FS en el que se está ejecutando a modo de simplificación. Si quisiéramos ser más fieles a la realidad, les pediríamos compilarlas en un formato tipo código máquina que sepa interpretar la CPU y guardarlas en el DialFS, pero entendemos que no daríamos a basto con los tiempos para implementar una cosa así 😅

Luego, no termino de entender dónde se van a guardar esas instrucciones tipo assembler que van a estar en la memoria.

Estas instrucciones las parsean y guardan en una estructura que crean conveniente, cito: "Al momento de recibir la creación de un proceso, la memoria de instrucciones deberá leer el archivo de pseudocódigo indicado y generar las estructuras que el grupo considere necesarias para poder devolver las instrucciones de a 1 a la CPU según ésta se las solicite por medio del Program Counter."

De nuevo, si fuéramos más fieles a la realidad haríamos que se guarden las instrucciones en el espacio de usuario y el Program Counter (a.k.a. "Instruction Pointer") sería una dirección lógica más que apunta a la siguiente instrucción, pero les ahorramos ese sufrimiento al simplificar el enunciado y dejarles guardarlas en un formato que les quede más cómodo para luego devolvérselo a la CPU.

Saludos

VEBravo commented 4 months ago

Gracias Agus, mucho más claro ahora

VEBravo commented 4 months ago

Ahora que intento resolver el 2do Checkpoint me surgió una duda. Por qué dice que el Kernel tiene que pasarle el proceso a la CPU para que sea procesado? Si ya le está pasando el path a la memoria para que lea el archivo de pseudocódigo y le vaya enviando las instrucciones de a una, por qué es necesario pasarle el proceso a cpu? O eso está relacionado con un tema de planificación y que tenga el pcb del proceso para poder actualizar el PC o alguna cosa así?

RaniAgus commented 4 months ago

está relacionado con un tema de planificación y que tenga el pcb del proceso para poder actualizar el PC o alguna cosa así?

Exactamente, necesitás pasarle el contexto de ejecución para que la CPU actualice el PC y los valores de sus registros. Además, van a haber varios procesos cargados en memoria, así que también necesitás el PID para poder pedirle a Memoria la siguiente instrucción del que corresponda.

Además, la memoria va devolviendo las instrucciones a medida que la CPU las vaya solicitando. Y para que la CPU las solicite el proceso debe estar en EXEC.

VEBravo commented 4 months ago

Perfecto! Muchas gracias