您的位置:首页 > Web前端 > JavaScript

JavaScript 编写 主存储器空间的分配和回收【操作系统】

2010-06-12 21:52 232 查看
]<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<title>操作系统04</title>
<mce:style type="text/css"><!--
.letft {
font-size: 12px;
background-color: #CCC;
margin: 10px;
height: auto;
width: 50px;
border: 1px inset #999;
float: left;
}
--></mce:style><style type="text/css" mce_bogus="1">.letft {
font-size: 12px;
background-color: #CCC;
margin: 10px;
height: auto;
width: 50px;
border: 1px inset #999;
float: left;
}</style>
</head>
<mce:script language="javascript" type="text/javascript"><!--

var memory=128//主存大小已k为单位
var Blank_length //未 分 配长度
var memory_begin=[0,    5,      10,     14,    26,     32,128];//主存各分区的初始值
var memory_state=['OS','Jcb01','Jcb03','Blank','Jcb02','Blank','end'];//某时刻各分区的状态
function main(Jcb_name,Jcb_length)//装入作业 分配内存
{
//alert("df");
for (var i=0;i<=memory_begin.length-1;i++)
{
if(i==memory_begin.length-1){break;}else Blank_length=memory_begin[i+1]-memory_begin[i];//各分区之间的长度
if(Blank_length>Jcb_length&&memory_state[i]=='Blank')
{  //alert('>')
memory_state[i]=Jcb_name;
New_Blank=memory_begin[i]+Jcb_length;
memory_begin.splice(i+1,0,New_Blank);//插入一个Blank
memory_state.splice(i+1,0,'Blank');
for(i=0;i<=memory_begin.length-1;i++)
{
document.getElementById('db').innerHTML+=memory_begin[i]+'<br>'+memory_state[i]+'<br>';
}
break;
}
if(Blank_length==Jcb_length&&memory_state[i]=='Blank')
{// alert('=')
//alert(Blank_length)
memory_state[i]=Jcb_name;
for(i=0;i<=memory_begin.length-1;i++)
{
document.getElementById('db').innerHTML+=memory_begin[i]+'<br>'+memory_state[i]+'<br>';
}
break;
}
if(Blank_length<Jcb_length&&memory_state[i]=='Blank'&&i==memory_begin.length-2)
{
document.getElementById('db').innerHTML+='内存申请失败'
}
}
}
function maindf(Jcb_name)//撤离作业 回收内存
{document.getElementById('db1').innerHTML=''
for (var i=0;i<=memory_begin.length-1;i++)
{
if(Jcb_name==memory_state[i])
{  // alert(memory_state[i])
if(memory_state[i+1]=='Blank')
{//删除作业 同时合并空间
memory_begin.splice(i+1,1);
memory_state.splice(i+1,1);
memory_state[i]='Blank';
if(memory_state[i-1]=='Blank'){memory_begin.splice(i,1); memory_state.splice(i,1);}//后为空
for(i=0;i<=memory_begin.length-1;i++)
{
document.getElementById('db1').innerHTML+=memory_begin[i]+'<br>'+memory_state[i]+'<br>';
}
}else//前后都是作业
{
memory_state[i]='Blank';
for(i=0;i<=memory_begin.length-1;i++)
{
document.getElementById('db1').innerHTML+=memory_begin[i]+'<br>'+memory_state[i]+'<br>';         }
}//直接撤销 空间释放
}
}
}

function yunxing()
{ alert('插入jxb04,大小为4k');
main('Jcb04',4);
alert('撤离jcb03');
maindf('Jcb03');
alert('撤离jcb02');
maindf('Jcb02');

}

// --></mce:script>
<body onLoad="yunxing()">
<div id="dbfd" onClick="main()">
<div class="letft" id="db""></div>
<div class="letft" id="db1""></div>
</div>
</body>
</html>


运行结果:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息