sisoputnfrba / foro

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

Paginación y bitarray #3702

Closed fmigliavacca closed 4 months ago

fmigliavacca commented 5 months ago

Hola como va! Tengo una duda sobre la utilización de bit array. En caso por ejemplo de tener marcos de 8 bytes y que de un marco específico haya llenado solo la mitad, o sea 4 bytes. En bit array debería darle valor 1 o 0 a ese marco?. Yo supongo que darle valor 0 y luego aclarar en algún lado que la mitad haya sido ocupada para poder ocupar el resto con parte de otro proceso. Espero su respuesta, saludos!

iago64 commented 5 months ago

Buenas! Cómo va?

Creo que el problema no esta tan relacionado con la programación en C si no mas bien con el concepto teorico. Cuando estamos en un esquema de paginación, cada página le pertenece a un único proceso y no importa si ocupa 1 byte o la página entera, al momento de asignarsela, es de ese proceso solamente. Dicho lo anterior, si reservas una página para un proceso, el bit en el bitarray tiene que ir en 1 para marcar que esa página esta ocupada.

Saludos.-

fmigliavacca commented 5 months ago

Perfecto. Y otra consulta, cuando yo guardo cosas asociadas a un proceso en memoria será el código, el heap, la pila, etc... Mi pregunta es, cómo hago para diferenciar qué parte del proceso es cuál? Puedo tener estructuras extras mías que me lo indique? O hay alguna forma específica de cómo debe hacerse?. Por ejemplo, si es con segmentación, uno tiene segmento de datos, segmento de código. Pero con paginación, cómo diferencio en qué frames hay una cosa y en cuáles otra?

iago64 commented 5 months ago

Buenas!

Por suerte el TP busca aplicar algunas cosas y no todo lo que se ve en la teoría, en este caso, la parte de Memoria de Usuario solo va a contener la parte de datos y la vas a acceder por medio de las operaciones asociadas (MOV_IN, MOV_OUT, COPY_STRING, etc) con lo cual el heap y la pila no tienen que implementarlos. Por otro lado para lo que es el código, es lo que ya deberían tener funcionando o a punto de funcionar que es esto de abrir los archivos de pseudocódigo y que no tienen que cargarlos en el espacio de direcciones del usuario

Saludos.-

fmigliavacca commented 5 months ago

Okay entiendo. En mi grupo lo que hicimos es leer todo el archivo de pseudocódigo cuando kernell me lo pide asociandolo a un PID y metiendolo en una lista de procesos, en esa lista pusimos todas las instrucciones y el PID asociado a cada lista de instrucciones. Entonces me decis que NO tengo que eso cargarlo en el espacio de usuario? O sea, en el void* grande que creo al principio? Está bien que lo ponga en esa lista que hice?

iago64 commented 5 months ago

Buenas!

Si, la parte de las instrucciones la tienen bien como me comentas que lo hicieron.

Saludos.-

RaniAgus commented 4 months ago

¡Buenas @fmigliavacca! ¿Te sirvió la respuesta de Dami? Saludos

RaniAgus commented 4 months ago

¡Buenas! Cierro el issue por inactividad, ante cualquier consulta pueden reabrirlo o abrir uno nuevo. Saludos