回 帖 发 新 帖 刷新版面

主题:明天交作业,跪求两个操作系统课程设计的程序

实验四    可变分区存储管理程序模拟
一、    实验题目:最佳适应算法
二、    实验内容:
每次为作业分配内存时,总是把能满足要求、又是最小的空闲分区分配给作业
三、程序设计及实现过程
以图形的方式显示内存的使用情况,阴影部分代表已分配的区域,空白部分为空闲分区.同时输出此时的作业申请.然后假设一个比较大的能满足要求的分区,利用循环寻找在这个内存中满足要求且最小的空闲分区.若找到就把这个区域以蓝色填充图案显示出来,若找不到就输出原内存分区图和不能分配的文本.
四、实验结果及分析
结果: 若能分配就输出分配后的内存分区图,若不能分配则输出原内存分配图,在此图下面输出不能分配的文本.
分析: 内存分区图是随机产生的,空闲区域和内存申请也是随机的,所以比较符合真实的内存情况.
五、实验收获和体会
对这个实验来说,我觉得以图形显示结果最合适了.所以我选择了用图形表示结果的方式. 最初我不是很会图形的输出,我看了很多相关内容,才搞明白怎么使用画图语句。这里只是用了一个画矩形的语句,然后用不同的填充方式来表示空闲区与已分配区域的显示。还有一些关于屏幕显示尺寸的换算关系我了解了不少,这样才能准确定位显示的位置。 

一、    实验题目:首次适应算法
三、    实验内容:
分配内存时从链首开始顺序查找,直至找到一个大小能满足要求的空闲分区为止再按作业的大小从该区划出一块内存空间分配给请求者,如找不到合适的分区则此次内存分配失败,返回。
四、    程序设计及实现过程
以图形的方式显示内存的使用情况,阴影部分代表已分配的区域,空白部分为空闲分区.同时输出此时的作业申请.然后假设一个比较大的能满足要求的分区,按地址从低到高的顺序利用循环寻找在这个内存中第一个能满足要求的空闲分区.若找到就把这个区域以蓝色填充图案显示出来,若找不到就输出原内存分区图和不能分配的文本.
五、实验结果及分析
结果: 若能分配就输出分配后的内存分区图,若不能分配则输出原内存分配图,在此图下面输出不能分配的文本.
分析: 内存分区图是随机产生的,空闲区域和内存申请也是随机的,所以比较符合真实的内存情况.
六、实验收获和体会
这个实验和上个实验差不多,所以调试起来比较顺利。

实验五     页式虚拟存储管理程序模拟
一、    实验题目:先进先出页面置换算法
三、    实验内容:
这个算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰.
三、程序设计及实现过程
        先产生一串随机数放在数组中,然后输出这个数组,表示页面号引用串.然后进行计算并输出结果.这里我使用了一个数组来存放当前内存的页面号,当产生新的页面申请时,判断数组中有与之相同的数吗,若有则直接输出这个数组,若没有则舍去最下面的数让上面的数依次放在下面,把新产生的数放在最上面.然后在数据下面输出一个*号,代表发生了缺页中断.
四、实验结果及分析
    结果: 输出发生几次缺页中断和页面置换.
    分析: 利用一个计数变量,只要发生中断就加1,最后输出就行了.

回复列表 (共1个回复)

沙发

刚好也做了,给你参考一下.我星期五也要交论文了,我们要写四个页面算法 ,到现在我只写了两个,郁闷.!

#include<iostream.h>
void main()
{
    cout<<"****************************************"<<endl;
    cout<<"         FIFO算法置换                   "<<endl;
    cout<<"****************************************"<<endl;
    
    int n,m,k;
    int i=0,j=0,count=0;
    
    int a[32],b[32];
    cout<<"请输入内存容量m:";
    cin>>m;
    cout<<"请输入页面次序:"<<endl;
    for(i=0;i<10;i++)
    {
        cin>>n;
        a[i]=n;
    }
    for(j=0;j<m;j++)                      //初始化b[j];使等于-1,表示开始时内存中无页面.
    {
        b[j]=-1;                         
    }
    
    
    i=0;
    j=0;
    
while(i<10)
{
        
for(k=0;k<m;k++)
{
        
    if(b[k]==a[i])
    {
    cout<<"内存中有这个页面,直接访问."<<endl;
        break;
    }
    }                               // 判断内存中是否有该页面.
    if(k==m)
    {    
    if(b[m-1]<0)
    {
        b[j]=a[i];  
        cout<<b[j]<<"页面进入内存 ,  ";
        count++;
        cout<<"产生"<<count<<"次缺页"<<endl;
        j++;
        j=j%m;
    }
            
    else
    {
    count++;
    cout<<b[j]<<"被置换出去,产生"<<count<<"次缺页" <<endl;            
    b[j]=a[i]; 
    j++;
    j=j%m;
    }
            
}
i++;
}
    
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册