sisoputnfrba / foro

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

Dividir el codigo ansisop en N paginas #361

Closed damian1791 closed 8 years ago

damian1791 commented 8 years ago

Hola, que tal?? La duda que tengo es sobre como un proceso llega a dividirse en N paginas, primero que nada confirmar que la UMC es la que hace la division en paginas de un proceso, es correcto esa afirmación?? osea, la consola manda el codigo ansisop al nucleo... este arma el PCB, lo separa en instrucciones, etc. y manda el codigo a la UMC para que lo divida en paginas... es correcto??

mgarciaisaia commented 8 years ago

¡Aloha!

Creo que sí, que eso último que dijiste es correcto.

Lo que sí, no termino de entender a cuál de todos los aspectos de "dividir el código en N páginas te referís".

Hablé bastante de esto (con ejemplo berreta y todo) en #299, pero no estoy seguro si es la misma duda o no.

Si leyendo eso no tenés tu respuesta, fijate si podés reescribir la pregunta para entenderla mejor.

¡Un abrazo!

damian1791 commented 8 years ago

primero, gracias por la respuesta. Segundo, ahora empieza la pregunta en si... porque no entiendo el COMO dividir en paginas, yo tengo , por archivo de configuracion, cuanto mide una pagina pero QUE es lo que tengo que dividir en paginas?? que es lo que me manda el nucleo para que yo le diga cuantas páginas son para el proceso X?? me manda el codigo ansisop o que?? eso no me queda claro, ni a mi ni a mi grupo...

tferraro commented 8 years ago

Buenas!

Cito al enunciado un poquito:

(...)La Consola es un intérprete de scripts AnSISOP, cuya única responsabilidad es enviar el código del programa al Núcleo y mostrar por pantalla los mensajes que el Núcleo le indique imprimir.+ Al iniciar, leerá su archivo de configuración, se conectará mediante sockets1 al Proceso Núcleo y, luego de un intercambio de mensajes inicial (handshake) , enviará el código del Programa AnSISOP al Núcleo. A partir de ese momento..(...).

Como vemos aquí, la consola le tiene que enviar el código del programa al Núcleo. Teniendo el código del programa ansisop, sabiendo el tamaño de cada página y conociendo que sabes el tamaño en páginas de tu stack. Como harías para calcularías el tamaño en páginas del proceso?

Saludos!

Tom

damian1791 commented 8 years ago

Cito otro poquito del enunciado: PARTE UMC: UMC recibirá de este último un Identificador de programa, la cantidad de páginas totales requeridas, y el código del Programa PARTE NUCLEO: PARTE 1: El proceso Núcleo al ser iniciado se conectará con el Proceso Unidad de Memoria Central (UMC), obtendrá el tamaño de página, y quedará a la espera de conexiones por parte de Procesos CPU o Procesos Consola. PARTE 2: ...el Núcleo deberá solicitarle a la UMC lás páginas necesarias para almacenar el código del programa y el stack... En conclusion, la umc espera que el nucleo le diga cuantas pagina necesita para un proceso, el nucleo espera que la umc le diga cuanto mide una pagina(segun PARTE 1) o espera que la umc le diga cuantas paginas necesita para un proceso(Segun PARTE 2). Osea, ni el TP se pone de acuerdo en que hay que hacer, y no me queda claro, y vos me respondes con una pregunta... esta bien, gracias igual, esperare otra respuesta.

Disculpa las molestias y el tiempo perdido. Saludos.

alkchofa commented 8 years ago

Buenas, en la _primera parte_ hace referencia a cuando arranca todo el sistema. Por lo tanto, cuando el nucleo se conecte con la UMC, este ultimo le informa a el núcleo el tamaño de las pags y el tamaño queda invariante durante toda la ejecución. Dicho de otra manera, ANTES de atender cualquier consola. Con respecto a la _segunda parte_, bueno.. creo q aclarada la primera parte esto es muy obvio... no?

Saludos, maxi.

damian1791 commented 8 years ago

No, no es obvio, porque primero partimos de que la UMC hace la divisiones de un proceso en N paginas, ahora vos me estas diciendo que la UMC le dice al nucleo cuanto mide una pagina, y este se encarga de saber cuantas paginas necesita para un proceso. ¿En que quedamos al final? ¿Lo hace el nucleo? ¿o lo hace la UMC la division de un proceso a N paginas?

Gracias. Saludos.

tferraro commented 8 years ago

Holiss!

@damian1791, @alkchofa no dijo en ningún momento que las divisiones del almacenamiento en las N páginas no se realizaría en la UMC, simplemente que para uno poder mandar el código a la UMC, primero debe pedir el espacio y luego almacenar. De ahí el cálculo del tamaño que te mencionaba.

Estando todas las páginas seguidas (por lo menos a nivel de lo que expone la UMC de su funcionamiento, no lo que realmente haga), sería más fácil mandar página por página a la UMC o mandar todo el código y que almacene el conjunto en varias páginas?

Saludos!!

Tom

mgarciaisaia commented 8 years ago

Lo que citás de la UMC y la segunda parte del Núcleo son las dos caras de la misma moneda: primero dice que la UMC recibe del Núcleo cuántas páginas necesita el Programa a inicializar, y después dice que el Núcleo le solicita a la UMC esa cantidad de páginas. Es decir, hablan ambos de la misma operación, visto desde lados distintos.

Cada Programa va a tener las páginas necesarias para almacenar su código, más las páginas que se reserven para su Stack. Las del Stack están definidas por configuración - hay una cantidad de páginas que se reservan para cada Programa para su Stack. Las del código son las necesarias para que el código entre. El código tiene una cantidad variable de bytes, entonces cada Programa podría necesitar una cantidad diferente de páginas de código. Y, ¿cómo saber en cuántas páginas entra un código determinado? Bueno, dividiendo el tamaño del código por el tamaño de las páginas.

Y, ¿cómo sabe el Núcleo cuánto mide cada página?

Parte 1 :)

damian1791 commented 8 years ago

A ver si entendí bien, se conecta el nucleo con la UMC, la UMC le dice cuanto mide cada pagina. Cada vez que se inicie un programa nuevo, el nucleo informa a la UMC el PID, cantidad de pag necesarias, y el codigo del programa. La UMC, ademas de iniciar las estructuras que necesite para el programa, informa al SWAP (con los mismos datos que recibio del nucleo). El SWAP separa o parte ese codigo en las N paginas informadas. Es correcto??

mgarciaisaia commented 8 years ago

Así es :)

damian1791 commented 8 years ago

Muchas gracias. Cierro el issues.