Closed Lowdive closed 9 years ago
sólo puse el issue pa que no se me olvide qué rollo
Le acabo de dar una corrida con el codigo como esta desde de tu merge y parece que si esta reemplazando las paginas con bit de referencia 0. Utilice los siguientes archivos para la prueba y Output es la salida que obtuve: datos.txt p 32 1 p 32 2
datos2.txt p 16 3
Output: http://pastebin.com/MufSNKxU
Donde comienza a hacer swap se salta las primeras 4 paginas del proceso 1 que tienen prendido el bit de referencia. Despues se encuentra una pagina del proceso 2 y la manda a swap, hace lo mismo hasta que hay suficientes marcos.
Tienes los datos de entrada con el que te salio que se estaba saltando las paginas con bit de referencia 0?
lo estoy corriendo para asegurarme, pero sí tengo los mismos datos de ayer, igual ahorita lo meto a pastebin para que este claro si está bien.
2015-05-09 18:07 GMT-05:00 Alberto Harden Cooper Saldívar < notifications@github.com>:
Donde comienza a hacer swap se salta las primeras 4 paginas del proceso 1 que tienen prendido el bit de referencia. Despues se encuentra una pagina del proceso 2 y la manda a swap, hace lo mismo hasta que hay suficientes marcos.
Tienes los datos de entrada con el que te salio que se estaba saltando las paginas con bit de referencia 0?
— Reply to this email directly or view it on GitHub https://github.com/ahardencoopers/prfOperativos/issues/4#issuecomment-100559274 .
José Elí Santiago Rodríguez. Disponibilidad de Horario. https://www.google.com/calendar/embed?src=elisantiago.4e%40gmail.com&ctz=America/Mexico_City&mode=Week
http://pastebin.com/Skk4xjyg Está bien, sí funciona, sólo que ayer no vi bien el output y me pareció que se había saltado los 0's después de los 4x1's que están hardcoded.
Ok, a dejar el issue abierto para poner cualquier set de datos que cause problemas.
perfecto, aquí dejo uno que sí dio problemas, pero ahorita no lo estoy llevando como prioridad, estoy haciendo el loop en main para que funcionen las instrucciones de A, F, L y E, y también no tener que usar datos2.txt: http://pastebin.com/2zLM02is EDIT: (mismo proceso pidiendo más marcos de página, se vuelve loco el swap, creo que por ser el mismo process ID se chivea con lo de los marcos disponibles y marcos solicitados, le suma de más)
Ok, al rato lo checo.
"NOTA En esta versión de memoria virtual con paginación, un proceso se carga completito a memoria real en una sola solicitud al programa, incluyendo páginas que contienen el código del proceso y otras para su área de datos. La longitud máxima de un proceso es de 2048 bytes. Observen que esto es diferente a la forma como se revisó en clase, donde aprendimos que los procesos se pueden cargar a memoria por partes en base a un esquema por demanda."
Entonces me la estaba complicando solo... acorde a lo que dice ahí los requerimientos, sólo habrá una solicitud para cargar 1 proceso. No se puede hacer instrucción P dos veces para un mismo proceso, a menos que ya esté liberado de memoria.
Le pregunte al profe la utlima clase y dijo que un proceso si podia pedir mas memoria despues de ser cargado.
Como lo hacemos? le volvemos a preguntar en el final?
Mmta, sí, a menos que me digas que se entiende perfectamente eso en el doc de requerimientos... entonces hay que buscarle cómo resolver eso de una vez.
2015-05-10 14:46 GMT-05:00 Alberto Harden Cooper Saldívar < notifications@github.com>:
Le pregunte al profe la utlima clase y dijo que un proceso si podia pedir mas memoria despues de ser cargado.
Como lo hacemos? le volvemos a preguntar en el final?
— Reply to this email directly or view it on GitHub https://github.com/ahardencoopers/prfOperativos/issues/4#issuecomment-100688192 .
José Elí Santiago Rodríguez. Disponibilidad de Horario. https://www.google.com/calendar/embed?src=elisantiago.4e%40gmail.com&ctz=America/Mexico_City&mode=Week
Entonces a pegarnos al documento de requerimientos y voy a quitar multiples asignaciones de memoria a un proceso.
De todas maneras si lo volvemos a ocupar lo podemos tomar de los commits pasados.
okas.
2015-05-10 14:50 GMT-05:00 Alberto Harden Cooper Saldívar < notifications@github.com>:
Entonces a pegarnos al documento de requerimientos y voy a quitar multiples asignaciones de memoria a un proceso.
De todas maneras si lo volvemos a ocupar lo podemos tomar de los commits pasados.
— Reply to this email directly or view it on GitHub https://github.com/ahardencoopers/prfOperativos/issues/4#issuecomment-100688547 .
José Elí Santiago Rodríguez. Disponibilidad de Horario. https://www.google.com/calendar/embed?src=elisantiago.4e%40gmail.com&ctz=America/Mexico_City&mode=Week
Ya lo cambie, ahora los proceso solo pueden hacer 1 solicitud de memoria como viene en los requerimientos.
es que lo probé así como está y creo que sólo da la vuelta y no reemplaza las que tienen bit ref 0, les da otra vuelta, pero sólo lo probé un par de veces, lo checo mañana más a fondo. "It works by looking at the front of the queue as FIFO does, but instead of immediately paging out that page, it checks to see if its referenced bit is set. If it is not set, the page is swapped out. Otherwise, the referenced bit is cleared, the page is inserted at the back of the queue (as if it were a new page) and this process is repeated. This can also be thought of as a circular queue. If all the pages have their referenced bit set, on the second encounter of the first page in the list, that page will be swapped out, as it now has its referenced bit cleared. If all the pages have their reference bit set then second chance algorithm degenerates into pure FIFO."