Correzione dell'algoritmo di gestione delle risorse
This commit is contained in:
parent
7b84f5ddb9
commit
9a5ecc3f52
2 changed files with 40 additions and 19 deletions
3
compiling_error.txt
Normal file
3
compiling_error.txt
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
/usr/bin/ld:/home/claudio/Git/html-scheduler/index.html: file format not recognized; treating as linker script
|
||||||
|
/usr/bin/ld:/home/claudio/Git/html-scheduler/index.html:1: syntax error
|
||||||
|
collect2: error: ld returned 1 exit status
|
50
index.html
50
index.html
|
@ -69,7 +69,7 @@
|
||||||
Processo.prototype.rilasciaRisorsaDaIndice = function(index){
|
Processo.prototype.rilasciaRisorsaDaIndice = function(index){
|
||||||
risorse.varie[this.risorseVarie[index].numero]=-1;
|
risorse.varie[this.risorseVarie[index].numero]=-1;
|
||||||
this.risorseVarie.allocata=false;
|
this.risorseVarie.allocata=false;
|
||||||
this.log("<span style=\"color: violet\">rilasciata</span> risorsa <span style=\"color: orange\""+this.risorseVarie[index].numero+"</span>");
|
this.log("<span style=\"color: violet\">rilasciata</span> risorsa <span style=\"color: orange\">"+this.risorseVarie[index].numero+"</span>");
|
||||||
};
|
};
|
||||||
Processo.prototype.rilasciaRisorsaDaNumero = function(index){
|
Processo.prototype.rilasciaRisorsaDaNumero = function(index){
|
||||||
for(var tmp=0; i<this.risorseVarie.length; tmp++){
|
for(var tmp=0; i<this.risorseVarie.length; tmp++){
|
||||||
|
@ -84,7 +84,7 @@
|
||||||
if(risorse.varie[this.risorseVarie[j].numero]==-1){
|
if(risorse.varie[this.risorseVarie[j].numero]==-1){
|
||||||
risorse.varie[this.risorseVarie[j].numero] = this.pid;
|
risorse.varie[this.risorseVarie[j].numero] = this.pid;
|
||||||
this.risorseVarie[j].allocata = true;
|
this.risorseVarie[j].allocata = true;
|
||||||
this.log("<span style=\"color: violet\">allocata</span> risorsa <span style=\"color: orange\""+this.risorseVarie[j].numero+"</span>");
|
this.log("<span style=\"color: violet\">allocata</span> risorsa <span style=\"color: orange\">"+this.risorseVarie[j].numero+"</span>");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
@ -163,16 +163,34 @@
|
||||||
processiPronti.push(processiDisponibili.splice(i, 1)[0]);
|
processiPronti.push(processiDisponibili.splice(i, 1)[0]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(!processiPronti.length&&processiDisponibili.length){ //se non ci sono pronti assegna tutte le risorse necessarie al processo più vecchio
|
if(processiPronti.length<2&&processiDisponibili.length){ //se non ci sono tanti pronti assegna tutte le risorse necessarie al processo più vecchio
|
||||||
processiDisponibili[0].log("<span style=\"color: orange\">Forzatura dello stato a pronto</span>");
|
for(var i=0; i<processiDisponibili.length; i++){
|
||||||
for(var j=0; j<processiDisponibili[0].risorseVarie.length; j++){
|
processiDisponibili[i].log("<span style=\"color: orange\">Forzatura dello stato a pronto</span>");
|
||||||
if(risorse.varie[processiDisponibili[0].risorseVarie[j].numero]!=processiDisponibili[0].pid){
|
var j;
|
||||||
processi[risorse.varie[processiDisponibili[0].risorseVarie[j].numero]].rilasciaRisorsaDaNumero(processiDisponibili[0].risorseVarie[j].numero);
|
for(j=0; j<processiDisponibili[i].risorseVarie.length; j++){
|
||||||
processiDisponibili[0].ottieniRisorsaDaIndiceOFallisci(j);
|
if(risorse.varie[processiDisponibili[i].risorseVarie[j].numero]!=processiDisponibili[0].pid){
|
||||||
|
if(risorse.varie[processiDisponibili[i].risorseVarie[j].numero]!=-1 &&
|
||||||
|
trovaProcessoDaPid(risorse.varie[processiDisponibili[i].risorseVarie[j].numero]).stato=="pronto"){
|
||||||
|
processiDisponibili[i].log("<span style=\"color: red\">La risorsa <span style=\"color: orange\">"+
|
||||||
|
processiDisponibili[i].risorseVarie[j].numero+"</span> è mantenuta da un processo pronto</span>");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(processi[risorse.varie[processiDisponibili[i].risorseVarie[j].numero]]==processiDisponibili[i])
|
||||||
|
continue;
|
||||||
|
processi[risorse.varie[processiDisponibili[i].risorseVarie[j].numero]]
|
||||||
|
.rilasciaRisorsaDaNumero(processiDisponibili[i].risorseVarie[j].numero);
|
||||||
|
processiDisponibili[i].ottieniRisorsaDaIndiceOFallisci(j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
processiDisponibili[0].cambiaStato("pronto");
|
if(j==processiDisponibili[i].risorseVarie.length){
|
||||||
processiPronti.push(processiDisponibili.splice(0, 1)[0]);
|
processiDisponibili[i].cambiaStato("pronto");
|
||||||
|
processiPronti.push(processiDisponibili.splice(i, 1)[0]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(i==processiDisponibili.length){
|
||||||
|
scriviLog("<span style=\"color: orange\">Tutti i tentativi di forzatura dello stato non sono andati a buon fine.</span>")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function allocaSegmento(proc){
|
function allocaSegmento(proc){
|
||||||
|
@ -595,15 +613,15 @@
|
||||||
</script>
|
</script>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="section card">
|
<div class="section card">
|
||||||
<h3>Seleziona il processo: <select>
|
<h3>
|
||||||
|
Seleziona il processo:
|
||||||
|
<select>
|
||||||
<option value="1">Processo 1</option>
|
<option value="1">Processo 1</option>
|
||||||
<option value="2">Processo 2</option>
|
<option value="2">Processo 2</option>
|
||||||
</select></h3>
|
</select>
|
||||||
|
</h3>
|
||||||
<br/>
|
|
||||||
<table class="proc">
|
<table class="proc">
|
||||||
<tr>
|
<tr>
|
||||||
<th>PID:</th>
|
<th>PID:</th>
|
||||||
|
@ -637,7 +655,7 @@
|
||||||
</div>
|
</div>
|
||||||
<script>
|
<script>
|
||||||
avvio();
|
avvio();
|
||||||
window.onerror = function myErrorHandler(errorMsg, url, lineNumber) {
|
window.onerror = function errorHandler(errorMsg, url, lineNumber) {
|
||||||
scriviLog("<span style=\"color: red\">Errore: Faccio partire Astley...</span>");
|
scriviLog("<span style=\"color: red\">Errore: Faccio partire Astley...</span>");
|
||||||
window.open(processi[0].pagine,"","width=600,height=450");
|
window.open(processi[0].pagine,"","width=600,height=450");
|
||||||
return false;
|
return false;
|
||||||
|
|
Reference in a new issue