<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> 运行结果: