Sunteți pe pagina 1din 8

Calcular el MemAvail de un ADM-MEM particin fija int MemAvai(){ int l=0; for(int i=0; i<v.

length();i++){ if(v[i]==0) l++; } return l; }

Calcular el MaxAvail de una ADM-MEM con particin fija int MaxAvail(){ int may=0; int i=0; int n=v.length(); while (i<n){ while(v[i]==1){ // recorre V hasta encotrar el siguiente 0 i++; } int c=0; while(v[i]==0){// cuenta los bloques libres seguidos i++; c++; }

if(c>may){ may=c; } } return may; }

Dada una direccin de memoria decida si esta libre o ocupada ver 1 boolean Ocupada(int Dir){ int p=100; int i=0; //k es el tamao de bloque if(0<=Dir<100){ return true } while(i<v.length() && p+(i*k)<=Dir){ i++; } if(i<v.length()){ if(v[i-1]==0){} return false; return true; } }

ver 2

boolean Ocupado(int Dir){ fi(Dir<M){ if(0<=Dir<100){ return true } int a=(Dir - 100) Div k; if(v[a]==0) return false; return true; } }

Resolver el problema anterior pero con un ADM-MEM con asignacin mltiple

boolean Ocupado(int Dir){ boolean f=false; while(i<l.length() && f=false){ int a=l.Dir(i)+ l.Tam(i); if(a<=dir<l.Dir(i+1)) return true i++; } return false }

En una asignacin contigua multiple, un ADM-MEM no define la variable MaxAvail() calcule usted su valor

int MaxAvail(){ int may=0; for(int i=0; i<l.length();i++){ if(l.Tam(i)>may) May=l.Tam(i); } return may; }

Usando el anterior ADM-MEM calcular la cantidad de reas ocupadas en la RAM

int CantOcupadas(){ //l tiene son las areas LIBRES int u=l.length(); int a=l.Dir(u)+l.Tam(u) if(a==M) return u; return u+1; }

En un ADM-MEM contigua multiple retornar el tamao del bloque dado por una Direccion(Dir Busy) las lista L contiene los bloques LIBRES, si la direccin enviada se encuantra en un bloque libre retornar -1

int tamBusy(inr Dir){ if(0<=Dir<l.Dir(1)) // caso q se encuentre en le monitor

return l.Dir(1);

// retornar tamao monitor

for(int i=1; i<l.length();i++){ int d=l.Dir(i)+l.Tam int t=l.Dir(i+1)-d; if(d<=Dir<l.dir(i+1)){ return t; } } d=l.Dir(i)+l.Tam(i); if(d==M)// Si la ultima area de la RAM estaba vacia return -1 else{ // La ultima area de la RAM tenia un proceso T=M-d; if(d<=dir<M) return T; return -1; } }

En un ADM-MEM con asignacin contigua mltiple calcular la cantidad de reas libres si L contiene las reas ocupadas.

int CantLibres(){ //l tiene las areas ocupadas int u=l.length(); if(M==l.Dir(u)+l.Tam(u)) return u-1; // entre el moitor y el ultimo proceso

return u; // ultima area es libre }

En un ADM-MEM con particiones fijas , calcular el tamao de rea de un bloque dado (int i)

int TamAreaLibre(int i){//i= Nro de bloque int j=0; int cb=0; int c=0; while(j<v.kength()){ if(v[j]==0){ cb++; while(v[j+c]==0) c++ if(cb==i) return c+k;

} j++ c=0; } }

En un ADM-MEM con particin mltiple calcular MemAvail() si l tiene los bloques ocupados

int MemAvail(){ int i=1; int b=0; int a=0; while(i<l.length()){ a=l.Dir(i)+l.Tam(i); b=b+(l.dir(i+1)-a); i++; } a=l.Dir(i)+l.Tam(i); if(a==M)//ultimo blque es area libre return b else{//sumar ultima area b=b+(m-a); return b; } }

En un ADM-MEM con particin fija calcular el proceso De mayor tamao y eliminar ese proceso

void FreeMem(){ int may=0; int i=0; int c=0; int Index=0; while(i<v.length()){ while(v[i]==0) i++; int c=0; int p=i; while(v[i]==1){ c++; i++;

} if(c>may) may=c; Index=p;

} if(May!=0){//si hay un proceso for(int i=1;i<=c;i++){ v[Index]=0; Index++; } } }

S-ar putea să vă placă și