sisoputnfrba / foro

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

Duda MMU #3082

Closed tomasmartinez02 closed 1 year ago

tomasmartinez02 commented 1 year ago

Buenas, tengo una duda con la parte de la MMU de cpu.

num_segmento = floor(dir_logica / tam_max_segmento) desplazamiento_segmento = dir_logica % tam_max_segmento

En esta parte dice como obtener el numero y el desplazamiento del segmento, la duda es si debería pasarle a memoria el numero del segmento y el offset para que memoria busque la base de el segmento según el numero de segmento o si puedo calcular la base del segmento y su desplazamiento como:

baseSegmento = num_segmento * tam_max_segmento;
dirFisica = baseSegmento + desplazamiento_segmento;

Gracias.

iago64 commented 1 year ago

Buenas! Cómo va?

Deberían calcularle la dirección física a la memoria ya que es lo que hace la Memory Management Unit (o MMU para los amigos). Nosotros les dejamos las cuentas del segmento y del desplazamiento para simplificarles las cosas un toque.

Saludos.-

tomasmartinez02 commented 1 year ago

Excelente, gracias. Lo que no me queda claro es si la forma de calcular que propuse en el issue es valida o no.

LeandroCarbajales commented 1 year ago

Buenas! La base del segmento no se "calcula", es la que diga la tabla de segmentos para ese segmento en particular. Luego la dirección física sí se calcula de esa forma.

Saludos! Lean

tomasmartinez02 commented 1 year ago

Buenísimo, entonces debería solicitarle a memoria la base de ese segmento, esperar que me la devuelva, calcular la dir física y volver a pasarla a memoria? Gracias.

LeandroCarbajales commented 1 year ago

La tabla de segmentos del proceso en ejecución está en la MMU, por lo que no debería pedirle nada a Memoria para traducir la dirección.

tomasmartinez02 commented 1 year ago

Gracias!