$% SIMULADOR // esta etiqueta solo indicará el nombre de nuestro
simulador
$sys nombre-de-test // sys indicará un texto para el nombre de la
prueba
$mem #bytes // el comando mem es para indicar la memoria total del
sistema
$sleep #segundos // para indicar una pausa en el sistema de #segundos
$so #bytes // será un request especial del SO para reservar memoria
$pr P #bytes // PR o process request será para que un proceso "P"
solicite #bytes
$pe Q // PE o process end, para indicar la terminación de un proceso,
// por lo que se debe liberar su memoria asociada en 1 o más
bloques
$pp // PP o process print, para brindar la lista de procesos en el
sistema
// y la memoria asociada a cada uno
$frag // frag desplegará la lista de bloques libres en la memoria y
su tamaño
$dump // dump mostrará el contenido de la memoria, es decir los
caracteres
// almacenados en cada bloque según los procesos asociados
Lo único que tengo que hacer es ir leyendo cada linea, interpretar el comando que venga ahí, y llamar al metodo respectivo, pero por alguna razón no me sale bien.
Lo que hago es esto:
En el main() recibo el archivo del que voy a leer y lo asigno al stdin, y luego llamo a la funcion leer, donde basicamente lo que hago es interpretar con scanf() el comando y llamar al metodo correspondiente a lo que se deba hacer. Pero siempre me da problemas, a veces se me queda enciclado, o a veces simplemente scanf() no detecta el comando, y me tira el mensaje de error que pongo cuando leo un comando invalido, a pesar que el comando esté bien escrito.
Código C:
Ver original
main(int argc, char **argv) { if(argc <=1) { }else if(argc >2) { }else{ if(stdin == NULL) { }else{ leer(); } } }
Código C:
Ver original
int leer() { char entrada[30]; int valor; int esCorrecto = 0; if(esCorrecto){ }else{ if(esCorrecto){ }else{ if(esCorrecto){ }else{ if(esCorrecto){ nuevoProceso(valor,"so"); }else{ if(esCorrecto){ nuevoProceso(valor, entrada); }else{ if(esCorrecto){ liberarProc(entrada); }else{ if(esCorrecto){ mostrarListaProc(); }else{ if(esCorrecto){ memLibre(); }else{ if(esCorrecto){ }else{ } } } } } } } } } } }