操作系统实验之存储管理

这篇具有很好参考价值的文章主要介绍了操作系统实验之存储管理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、实验目的

1、了解虚拟存储技术的特点,掌握请求页式存储管理的主要页面置换算法原理。

2、掌握请求页式存储管理中页面置换算法的模拟设计方法。

3、通过随机产生页面访问序列开展有关算法的测试及性能比较。

二、实验内容

设计一个虚拟存储区和内存工作区,并使用下述方法计算访问命中率。

①先进先出的算法(FIFO);

       ②最近最少少使用算法(LRU);

③最佳淘汰算法(OPT):选淘汰最不常用的页地址;

④最少访问页面算法(LFR);

⑤最近最不经常使用算法(NUR).

(其中③④为选择内容)

       命中率= 1 - 页面失效次数 / 页地址流长度

三、设计原理(或方案)及相关算法

  1.fifo算法流程图

     操作系统实验之存储管理

 2.Lru算法流程图

  操作系统实验之存储管理

 3.opt算法流程图

操作系统实验之存储管理

运行结果及分析:

操作系统实验之存储管理

 操作系统实验之存储管理

分析:通过多次运行结果发现,OPT算法淘汰页面最少,命中率始终最高,FIFO算法和LRU算法命中率差不多,但是淘汰页面大有不同。

源程序:

 #include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 320//随机数列的长度
#define B 4//内存的页面数
int IsInBuf(int buf[],int x)//返回某个数X有没有在缓冲区buf[]中
{
    int i,j=-1;
    for(i=0;i<B;i++)
    {
        if(buf[i]==x)
        {
            j=i;
            break;
        }else if(buf[i]==-1)
        {
            buf[i]=x;
            j=i;
            break;
        }

    }
    return j;
}
int oldest(int list[],int buf[],int f[],int start)//返回最近最久未使用的页面的位置
{
    int i,j;
    for(i=0;i<B;i++)
    {
        for(j=start;j<N;j++)
        {
            if(buf[i]==list[j])break;
        }
        f[i]=j;
    }
    return oldest2(f);
}
int oldest2(int f[])//返回最长时间不使用的页面的位置
{
    int i,j=0,max=-1;
    for(i=0;i<B;i++)
    {
        if(f[i]>max){max=f[i];j=i;}
        f[i]++;
    }
    return j;
}
void main()
{
    int list[N];
    int buf[B],f[B],i,j,k,max,min;
    int old=0;
    int change=0;
    printf("本程序假设内存为程序分配的内存块数是4!\n");
    srand((int)time(NULL));//生成一系列随机数并初始化环境
    for(i=0;i<B;i++)buf[i]=f[i]=-1;
    printf("产生的随机数列为:\n");
    for(i=0;i<N;i++)
    {
        list[i]=(int)rand()%10;//产生随机数列
        printf("%2d",list[i]);
    }
    printf("\n");
    printf("\nOPT淘汰页面的序列为:\n");
    change=0;
    for(i=0;i<B;i++)buf[i]=f[i]=-1;
    for(i=0;i<N;i++)
    {
        j=IsInBuf(buf,list[i]);
        if(j==-1)
        {
            old=oldest(list,buf,f,i);
            printf("%2d",buf[old]);
            buf[old]=list[i];
            f[old]=0;
            change++;
        }
        else
        {
            printf("");
        }
    }
    printf("\nOPT算法的命中率为:%f\n",1-(float)change/320);
    printf("\nFIFO淘汰页面的序列为:\n");
    change=0;
    for(i=0;i<B;i++)buf[i]=-1;
    for(i=0;i<N;i++)
    {
        j=IsInBuf(buf,list[i]);
        if(j==-1)
        {
            if(buf[old]==-1)printf("");
            else printf("%2d",buf[old]);
            buf[old]=list[i];
            old=(old+1)%(int)B;
            change++;
        }
        else
            printf("");
    }
    printf("\nFIFO算法的命中率为:%f\n",1-(float)change/320);
    printf("\nLRU淘汰页面的序列为:\n");
    change=0;
    for(i=0;i<B;i++)buf[i]=f[i]=-1;
    for(i=0;i<N;i++)
    {
        j=IsInBuf(buf,list[i]);
        old=oldest2(f);
        if(j==-1)
        {
            printf("%2d",buf[old]);
            buf[old]=list[i];
            f[old]=0;
            change++;
        }
        else
        {
            f[j]=0;
            printf("");
        }

    }
    printf("\nLRU算法的命中率为:%f\n",1-(float)change/320);
}


   

 文章来源地址https://www.toymoban.com/news/detail-473369.html

到了这里,关于操作系统实验之存储管理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 从操作系统角度了解内存管理

    内存管理的主要功能有: 内存空间的分配与回收 。由操作系统完成主存储器空间的分配和管理,使程序员摆脱存储分配的麻烦,提高编程效率。 地址转换 。在多道程序环境下,程序中的逻辑地址与内存中的物理地址不可能一致, 因此存储管理必须提供地址变换功能,把逻辑地

    2024年02月09日
    浏览(33)
  • 操作系统的存储管理

      文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。 注意:拷的文件比较大时,需要格式化为NTFS 注意:一个硬盘只有一个扩展分区

    2024年01月24日
    浏览(27)
  • 【JavaEE】简单了解操作系统、进程&内存管理

    目录 前言:  一、操作系统: 操作系统的定位: 应用程序: 系统调用: 操作系统内核: 驱动程序: 硬件设备:  二、进程:  什么是进程?  进程的描述与组织:  描述: 组织: PCB中的 特征(属性) CPU分配——进程调度:  进程调度的相关属性:  三、内存管理:

    2024年02月03日
    浏览(28)
  • 【操作系统】存储器管理练习

    12.(考研真题) 假设一个分页存储系统具有 快表 ,多数活动页表项都可以存在于其中。 若页表放在内存中,内存访问时间是1ns,快表的命中率是85%,快表的访问时间为0.1ns, 则 有效存取时间 为多少? 15.  已知某分页系统,内存容量为64KB,页面大小为1KB,对一个4页大的作业

    2024年02月05日
    浏览(82)
  • 操作系统 | 实验八 文件管理

    掌握文件的存取方法;掌握文件的逻辑结构和物理结构;掌握存储空间的分配和回收;掌握磁盘管理与调度。 用程序模拟磁盘的调度过程,并计算各磁盘调度算法包括先来先服务算法、最短寻道时间优先算法、扫描算法和循环扫描算法的平均寻道长度。 本实验是模拟操作系

    2024年02月06日
    浏览(35)
  • 操作系统实验之文件管理

    目录 一、实验目的 二、实验内容 三、实验思路 四、主要数据结构 五、实验流程图 六、实现代码 七、运行结果 通过这次实验,掌握文件系统的用户管理,掌握普通文件、目录文件管理的基本原理。 1、通过初始化操作建立一个模拟外存空间的虚拟磁盘文件,在该文件中保存

    2024年02月05日
    浏览(39)
  • 【操作系统】——基本分页存储管理

    将内存分为一个个大小相等的分区, 这些分区称作为(页框、页帧、内存块、物理块、物理页面)若对分区进从编号,则又有了对应的(页框号、页帧号、内存块号、物理块号、物理页号),从0开始 进程的信息都是要存在内存中的,既然内存有了分区,那么进程逻辑地址空间

    2024年02月06日
    浏览(31)
  • 操作系统实验——进程管理的算法实现

    笔者在大学下属的事业单位上班,最近去帮着带下操作系统的实验课,这里随手水点参考代码,欢迎各位领导老师莅临指正 编写一个简单的进程调度器 进程控制块(PCB)的定义与管理 进程调度算法的实现 进程创建、销毁和切换 给定一批进程对比3-4种调度算法的时间(自选

    2024年02月06日
    浏览(34)
  • Linux操作系统实验三 文件管理(一)

      1.实验目的与要求 了解Linux文件系统目录结构 掌握目录管理的相关操作 掌握文件管理的相关操作 2.实验平台 实验室安装的实验环境(Linux操作系统)和头歌(www.educoder.net)实验平台(课程实验) 3.实验内容 文件系统目录结构理论知识练习 linux 下目录的创建、应用、查看、

    2024年02月03日
    浏览(45)
  • 计算机系统结构与操作系统实验三(6)-内存管理

    实现内存管理 这里修改makefile文件和run.sh文件 在《操作系统真相还原源码》的基础上稍加修改makefile 注意:这里要用 make all 命令来执行makefile文件了 本实验所有源码👉👉👉 计算机系统结构与操作系统实验三bochs源代码

    2024年02月15日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包