Lavoro sulla tab. della memoria
This commit is contained in:
parent
c623b1061c
commit
258d9c2cf0
2 changed files with 70 additions and 18 deletions
84
index.html
84
index.html
|
@ -4,7 +4,7 @@
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta name="author" content="Claudio Maggioni, Fabio Brambilla, Pamela Dardano, Federico Mainetti"/>
|
<meta name="author" content="Claudio Maggioni, Fabio Brambilla, Pamela Dardano, Federico Mainetti"/>
|
||||||
<meta name="description" content="Simulazione di uno scheduler in HTML, Javascript e (purtroppo) CSS."/>
|
<meta name="description" content="Simulazione di uno scheduler in HTML, Javascript e (purtroppo) CSS."/>
|
||||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script>
|
<script src="jquery.min.js"></script>
|
||||||
<link href='https://fonts.googleapis.com/css?family=Hammersmith+One' rel='stylesheet' type='text/css'>
|
<link href='https://fonts.googleapis.com/css?family=Hammersmith+One' rel='stylesheet' type='text/css'>
|
||||||
<script>
|
<script>
|
||||||
var lunghezzaExec=300 //in millis
|
var lunghezzaExec=300 //in millis
|
||||||
|
@ -57,30 +57,58 @@
|
||||||
this.log("<span style=\"color: violet\">"+this.stato+"</span>");
|
this.log("<span style=\"color: violet\">"+this.stato+"</span>");
|
||||||
};
|
};
|
||||||
Processo.prototype.termina = function (){
|
Processo.prototype.termina = function (){
|
||||||
this.cambiaStato("terminazione");
|
if(this.terminazioneCont===undefined){
|
||||||
(this.pagine).forEach(function(item, index){
|
this.terminazioneCont=0;
|
||||||
if(item>=0) resettaPagina(item);
|
this.cambiaStato("terminazione");
|
||||||
});
|
}
|
||||||
this.cambiaStato("terminato");
|
if(this.pagine[this.terminazioneCont+1]===undefined){
|
||||||
var i = processiPronti.indexOf(this);
|
if(this.pagine[this.terminazioneCont]!=-1){
|
||||||
processiTerminati.push(processiPronti.splice(i, 1)[0]);
|
aggiornaMemoria(this.pagine[this.terminazioneCont],"#FF6666");
|
||||||
|
resettaPagina(this.pagine[this.terminazioneCont]);
|
||||||
|
this.pagine[this.terminazioneCont]=-1;
|
||||||
|
}
|
||||||
|
this.cambiaStato("terminato");
|
||||||
|
this.terminazioneCont=undefined;
|
||||||
|
var i = processiPronti.indexOf(this);
|
||||||
|
processiTerminati.push(processiPronti.splice(i, 1)[0]);
|
||||||
|
return "TERM";
|
||||||
|
}
|
||||||
|
else if(this.pagine[this.terminazioneCont]==-1){
|
||||||
|
this.terminazioneCont++;
|
||||||
|
return this.termina();
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
aggiornaMemoria(this.pagine[this.terminazioneCont],"#FF6666");
|
||||||
|
resettaPagina(this.pagine[this.terminazioneCont]);
|
||||||
|
this.pagine[this.terminazioneCont]=-1;
|
||||||
|
this.terminazioneCont++;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
Processo.prototype.esecuzioneCicloSingolo = function(){
|
Processo.prototype.numeroPagineAllocate = function(){
|
||||||
|
var tmp=0;
|
||||||
|
for(var i=0; i<this.pagine.length; i++){
|
||||||
|
if(this.pagine[i]>=0) tmp++;
|
||||||
|
}
|
||||||
|
return tmp;
|
||||||
|
}
|
||||||
|
Processo.prototype.esecuzioneCicloSingolo = function(){ //false: non terminato, true: terminato
|
||||||
if(this.contatorePercorso>=this.percorsoAllocazione.length){
|
if(this.contatorePercorso>=this.percorsoAllocazione.length){
|
||||||
this.termina();
|
return this.termina();
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
this.stato="esecuzione";
|
this.stato="esecuzione";
|
||||||
this.log("<span style=\"color: violet\">esecuzione</span> pagina <span style=\"color: orange\">" +
|
this.log("<span style=\"color: violet\">esecuzione</span> pagina <span style=\"color: orange\">" +
|
||||||
this.percorsoAllocazione[this.contatorePercorso]+"</span>");
|
this.percorsoAllocazione[this.contatorePercorso]+"</span>");
|
||||||
if(paginaDaCaricareGiaAllocata(this)){
|
if(paginaDaCaricareGiaAllocata(this)){
|
||||||
this.contatorePercorso++;
|
this.contatorePercorso++;
|
||||||
return true;
|
this.stato="pronto";
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return allocaSegmento(this);
|
allocaSegmento(this);
|
||||||
|
this.stato="pronto";
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
this.stato="pronto";
|
|
||||||
};
|
};
|
||||||
var processiPronti = new Array();
|
var processiPronti = new Array();
|
||||||
var processiTerminati = new Array();
|
var processiTerminati = new Array();
|
||||||
|
@ -151,7 +179,15 @@
|
||||||
function loopProcessiPronti(){
|
function loopProcessiPronti(){
|
||||||
if(processiPronti.length>0){
|
if(processiPronti.length>0){
|
||||||
if(pidAttuale >= processiPronti.length) pidAttuale=0;
|
if(pidAttuale >= processiPronti.length) pidAttuale=0;
|
||||||
processiPronti[pidAttuale].esecuzioneCicloSingolo();
|
var tmp;
|
||||||
|
if((tmp = processiPronti[pidAttuale].esecuzioneCicloSingolo())===true) pidAttuale--;
|
||||||
|
else if(tmp==="TERM"){
|
||||||
|
window.setTimeout(aggiornaMemoria, lunghezzaExec);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
aggiornaMemoria(processiPronti[pidAttuale].pagine[processiPronti[pidAttuale]
|
||||||
|
.percorsoAllocazione[processiPronti[pidAttuale].contatorePercorso-1]],"#CCFF66");
|
||||||
|
}
|
||||||
pidAttuale++;
|
pidAttuale++;
|
||||||
vuoto=false;
|
vuoto=false;
|
||||||
}
|
}
|
||||||
|
@ -169,7 +205,7 @@
|
||||||
if(!interrompi) loopProcessiPronti();
|
if(!interrompi) loopProcessiPronti();
|
||||||
}
|
}
|
||||||
function testaProcessiPronti(){
|
function testaProcessiPronti(){
|
||||||
for(var j=0; j<100; j++){
|
for(var j=0; j<10; j++){
|
||||||
new Processo();
|
new Processo();
|
||||||
}
|
}
|
||||||
loopProcessiPronti();
|
loopProcessiPronti();
|
||||||
|
@ -183,6 +219,19 @@
|
||||||
}
|
}
|
||||||
lunghezzaExec=tmp;
|
lunghezzaExec=tmp;
|
||||||
}
|
}
|
||||||
|
function aggiornaMemoria(eseguita, colore){
|
||||||
|
for(var i=0; i<100; i++){
|
||||||
|
var cella = document.getElementById("memoria"+Math.floor(i/10)+i%10);
|
||||||
|
if(eseguita==i) cella.style.background=colore;
|
||||||
|
else if(processiPronti[pidAttuale]!==undefined&&risorse.mem[i].pid==(processiPronti[pidAttuale].pid)) cella.style.background="lightblue";
|
||||||
|
else if(risorse.mem[i].pid!=0) cella.style.background="orange";
|
||||||
|
else cella.style.background="white";
|
||||||
|
cella.innerHTML= risorse.mem[i].pid!=0 ? risorse.mem[i].pid : "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function trovaProcessoPronto(pid){
|
||||||
|
return $.grep(processiPronti, function(e){ return e.pid == pid; });
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
body{
|
body{
|
||||||
|
@ -355,7 +404,6 @@
|
||||||
td.memCell{
|
td.memCell{
|
||||||
width: 3em;
|
width: 3em;
|
||||||
height: 3em;
|
height: 3em;
|
||||||
color: grey;
|
|
||||||
background: white;
|
background: white;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
|
@ -429,7 +477,7 @@
|
||||||
for(var i=0; i<10; i++){
|
for(var i=0; i<10; i++){
|
||||||
document.write("<tr>")
|
document.write("<tr>")
|
||||||
for(var j=0; j<10; j++){
|
for(var j=0; j<10; j++){
|
||||||
document.write("<td class=\"card memCell\" style=\"display: table-cell\" id=\""+i+j+"\">"+(10*i+j)+"</td>");
|
document.write("<td class=\"card memCell\" style=\"display: table-cell\" id=\"memoria"+i+j+"\"></td>");
|
||||||
}
|
}
|
||||||
document.write("</tr>")
|
document.write("</tr>")
|
||||||
}
|
}
|
||||||
|
|
4
jquery.min.js
vendored
Normal file
4
jquery.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
Reference in a new issue