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){
|
||||
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);
|
||||
}
|
||||
}
|
||||
processiDisponibili[0].cambiaStato("pronto");
|
||||
processiPronti.push(processiDisponibili.splice(0, 1)[0]);
|
||||
if(j==processiDisponibili[i].risorseVarie.length){
|
||||
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){
|
||||
|
@ -595,15 +613,15 @@
|
|||
</script>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section card">
|
||||
<h3>Seleziona il processo: <select>
|
||||
<h3>
|
||||
Seleziona il processo:
|
||||
<select>
|
||||
<option value="1">Processo 1</option>
|
||||
<option value="2">Processo 2</option>
|
||||
</select></h3>
|
||||
|
||||
<br/>
|
||||
</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;
|
||||
|
|
Reference in a new issue