Correzione dell'algoritmo di gestione delle risorse

This commit is contained in:
Claudio Maggioni 2016-05-23 21:08:48 +02:00
parent 7b84f5ddb9
commit 9a5ecc3f52
2 changed files with 40 additions and 19 deletions

3
compiling_error.txt Normal file
View 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

View file

@ -69,7 +69,7 @@
Processo.prototype.rilasciaRisorsaDaIndice = function(index){
risorse.varie[this.risorseVarie[index].numero]=-1;
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){
for(var tmp=0; i<this.risorseVarie.length; tmp++){
@ -84,7 +84,7 @@
if(risorse.varie[this.risorseVarie[j].numero]==-1){
risorse.varie[this.risorseVarie[j].numero] = this.pid;
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 false;
@ -163,16 +163,34 @@
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
processiDisponibili[0].log("<span style=\"color: orange\">Forzatura dello stato a pronto</span>");
for(var j=0; j<processiDisponibili[0].risorseVarie.length; j++){
if(risorse.varie[processiDisponibili[0].risorseVarie[j].numero]!=processiDisponibili[0].pid){
processi[risorse.varie[processiDisponibili[0].risorseVarie[j].numero]].rilasciaRisorsaDaNumero(processiDisponibili[0].risorseVarie[j].numero);
processiDisponibili[0].ottieniRisorsaDaIndiceOFallisci(j);
if(processiPronti.length<2&&processiDisponibili.length){ //se non ci sono tanti pronti assegna tutte le risorse necessarie al processo più vecchio
for(var i=0; i<processiDisponibili.length; i++){
processiDisponibili[i].log("<span style=\"color: orange\">Forzatura dello stato a pronto</span>");
var j;
for(j=0; j<processiDisponibili[i].risorseVarie.length; 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);
}
}
if(j==processiDisponibili[i].risorseVarie.length){
processiDisponibili[i].cambiaStato("pronto");
processiPronti.push(processiDisponibili.splice(i, 1)[0]);
break;
}
}
processiDisponibili[0].cambiaStato("pronto");
processiPronti.push(processiDisponibili.splice(0, 1)[0]);
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){
@ -596,14 +614,14 @@
</tbody>
</table>
</div>
</div>
<div class="section card">
<h3>Seleziona il processo: <select>
<option value="1">Processo 1</option>
<option value="2">Processo 2</option>
</select></h3>
<br/>
<div class="section card">
<h3>
Seleziona il processo:
<select>
<option value="1">Processo 1</option>
<option value="2">Processo 2</option>
</select>
</h3>
<table class="proc">
<tr>
<th>PID:</th>
@ -637,7 +655,7 @@
</div>
<script>
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>");
window.open(processi[0].pagine,"","width=600,height=450");
return false;