计算机操作系统实验三页面置换算法模拟实验


    
    计算机工程学院
    实验报告书

    课程名: 操作系统原理A
    题 目: 虚拟存储器理
    页面置换算法模拟实验
    班 级:
    学 号:
    姓 名:

    评语:






    成绩: 指导教师:

    批阅时间: 年 月 日







    实验目求
    1 目:
    请求页式虚存理常虚拟存储理方案通请求页式虚存理中页面置换算法模拟助理解虚拟存储技术特点加深请求页式虚存理页面调度算法理解
    2 求:
    实验求C语言编程模拟拥干虚页进程定干实页中运行缺页中断发生时分FIFOLRU算法进行页面置换情形中虚页数事先定(例10)虚页访问页址流(长度事先定例20次虚页访问)程序机产生事先保存文件中求程序运行时屏幕显示出置换程中状态信息输出访问结束时页面命中率程序应允许通该进程分配实页数较两种置换算法稳定性
    二实验说明
    1.设计中虚页实页表示
    设计利C语言结构体描述虚页实页结构

    pn
    pfn
    time

    pn
    pfn
    next
    虚页结构 实页结构
    虚页结构中pn代表虚页号10虚页pn取值范围0—9pfn代表实页号虚页未装入实页时项值1该虚页已装入某实页时项值装入实页实页号pfntime项FIFO算法中LRU中存放该虚页访问时间
    实页结构中中pn代表虚页号表示pn代表虚页目前正放实页中pfn代表实页号取值范围(0—n1)动态指派实页数n决定next指实页结构体指针实页链表形式组织起关实页链表组织详见面第4点
    2.关缺页次数统计
    计算命中率需统计20次虚页访问中命中次数程序应设置计数器count统计虚页命中发生次数访问虚页pfn项值1表示虚页已装入某实页虚页命中count加1终命中率count20*100
    3.LRU算法中久未页面确定
    找久未虚页面程序中引入时间计数器countime访问虚页面时countime值加1然访问虚页time项值设置增值前countime值表示该虚页次访问时间LRU算法需置换时已分配实页虚页中找出time值虚页久未虚页面应该置换出
    4.算法中实页组织
    分配实页数n程序运行时户动态指派应链表组织动态产生实页调度算法实现方便考虑引入freebusy两链表:free链表组织未分配出实页首指针free_head初始时n实页处free链表中busy链表组织已分配出实页首指针busy_head尾指针busy_tail初始值null访问虚页实页中时产生缺页中断时free链表空取链表首指针指实页分配该虚页free链表空说明n实页已全部分配出时应进行页面置换:FIFO算法busy_head 指实页busy链表中取分配该虚页然该实页插入busy链表尾部LRU算法已分配实页虚页中找出time值虚页该虚页装载实页中置换出该实页中装入前正访问虚页
    三程序流程图




    四程序清单
    #include
    #include
    *全局变量*
    int mSIZE
    *物理块数*
    int pSIZE
    *页面号引串数*
    static int memery[10]{0}
    *物理块中页号*
    static int page[100]{0}
    *页面号引串*
    static int temp[100][10]{0}
    *辅助数组*
    *置换算法函数*
    void FIFO()
    void LRU()
    void OPT()
    *辅助函数*
    void print(unsigned int t)
    void designBy()
    void download()
    void mDelay(unsigned int Delay)
    *函数*
    void main()
    {
    int ikcode
    printf(请输入物理块数(M<10):)
    scanf(d&mSIZE)
    printf(请输入页面号引串数(P<100):)
    scanf(d&pSIZE)
    puts(请次输入页面号引串(连续输入需隔开):)
    for(i0i scanf(1d&page[i]) download()
    do
    {
    puts(输入页面号引串:)
    for(k0k<(pSIZE1)20k++)
    {
    for(i20*k(i {
    if(((i+1)200)||(((i+1)20)&&(ipSIZE1)))
    printf(d\npage[i])
    else
    printf(d page[i])
    }
    }
    printf(* * * * * * * * * * * * * * * * * * * * * * *\n)
    printf(* 请选择页面置换算法:\t\t\t *\n)
    printf(* *\n)
    printf(* 1先进先出(FIFO) 2久未(LRU) *\n)
    printf(* 3退出 *\n)
    printf(* * * * * * * * * * * * * * * * * * * * * * *\n)
    printf(请选择操作:[ ]\b\b)
    scanf(d&code)
    switch(code)
    {
    case 1
    FIFO()
    break
    case 2
    LRU()
    break
    case 3
    OPT()
    break
    case 4
    system(cls)
    system(color 0A)
    exit(0)
    default
    printf(输入错误请重新输入:)
    }
    printf(意键重新选择置换算法:>>>)
    getchar()
    }
    while (code4)
    getchar()
    }
    *载入数*
    void download() {
    printf(\nFinish\n载入成功)
    }
    *设置延迟*
    void mDelay(unsigned int Delay)
    {
    unsigned int i
    for(Delay>0Delay)
    {
    for(i0i<124i++)
    {
    printf( \b)
    }
    }
    }
    *显示设计者信息*
    void print(unsigned int t)
    {
    int ijkl int flag
    for(k0k<(pSIZE1)20k++)
    {
    for(i20*k(i {
    if(((i+1)200)||(((i+1)20)&&(ipSIZE1)))
    printf(d\npage[i])
    else
    printf(d page[i])
    }
    for(j0j {
    for(i20*k(i {
    if(i>j)
    printf( |d|temp[i][j]) else
    printf( | |) }
    for(imSIZE+20*k(i {
    for(flag0l0l if(temp[i][l]temp[i1][l])
    flag++
    if(flagmSIZE)*页面物理块中*
    printf( )
    else
    printf( |d|temp[i][j])
    }
    *行显示20*
    if(i200)
    continue
    printf(\n)
    }
    }
    printf(\n)
    printf(缺页次数:d\t\tt+mSIZE)
    printf(缺页率:dd\nt+mSIZEpSIZE)
    printf(置换次数:d\t\tt)
    printf(访问命中率:d\n(pSIZE(t+mSIZE))*100pSIZE)
    printf(\n)
    }
    *计算程延迟*
    void compute()
    {
    int i
    printf(正进行相关计算请稍候)
    for(i0i++<30printf(\b))
    for(i0i++<30printf( ))
    for(i0i++<30printf(\b))
    }
    *先进先出页面置换算法*
    void FIFO()
    {
    int memery[10]{0}
    int time[10]{0} *记录进入物理块时间*
    int ijkm
    int max0
    *记录换出页*
    int count0
    *记录置换次数*
    *前mSIZE数直接放入*
    for(i0i {
    memery[i]page[i]
    time[i]i
    for(j0j temp[i][j]memery[j]
    }
    for(imSIZEi {
    *判断新页面号否物理块中*
    for(j0k0j {
    if(memery[j]page[i])
    k++
    }
    if(kmSIZE)
    *果物理块中*
    {
    count++
    *计算换出页*
    maxtime[0] for(m2m if(time[m] maxm
    memery[max]page[i]
    time[max]i
    *记录该页进入物理块时间*
    for(j0j temp[i][j]memery[j]
    }
    else
    {
    for(j0j temp[i][j]memery[j]
    }
    }
    compute()
    print(count)
    }
    *久未置换算法*
    void LRU()
    {
    int memery[10]{0}
    int flag[10]{0}
    *记录页面访问时间*
    int ijkm
    int max0
    *记录换出页*
    int count0
    *记录置换次数*
    *前mSIZE数直接放入*
    for(i0i {
    memery[i]page[i]
    flag[i]i
    for(j0j temp[i][j]memery[j]
    }
    for(imSIZEi {
    *判断新页面号否物理块中*
    for(j0k0j {
    if(memery[j]page[i])
    k++
    else
    flag[j]i
    *刷新该页访问时间*
    }
    if(kmSIZE)
    *果物理块中*
    {
    count++
    *计算换出页*
    maxflag[0] for(m2m if(flag[m] maxm
    memery[max]page[i]
    flag[max]i *记录该页访问时间*
    for(j0j temp[i][j]memery[j]
    }
    else
    {
    for(j0j temp[i][j]memery[j]
    }
    }
    compute()
    print(count)
    }
    *佳置换算法*
    void OPT()
    {
    int memery[10]{0}
    int next[10]{0}
    *记录次访问时间*
    int ijklm
    int max
    *记录换出页*
    int count0
    *记录置换次数*
    *前mSIZE数直接放入*
    for(i0i {
    memery[i]page[i]
    for(j0j temp[i][j]memery[j]
    }
    for(imSIZEi {
    *判断新页面号否物理块中*
    for(j0k0j {
    if(memery[j]page[i])
    k++
    }
    if(kmSIZE)
    *果物理块中*
    {
    count++
    *物理快中页次访问时间*
    for(m0m {
    for(li+1l if(memery[m]page[l])
    break
    next[m]l
    }
    *计算换出页*
    maxnext[0]>next[1]01
    for(m2m if(next[m]>next[max])
    maxm
    *次访问时间pSIZE置换物理块中第*
    memery[max]page[i]
    for(j0j temp[i][j]memery[j]
    }
    }
    if(kmSIZE)
    *果物理块中*
    {
    count++
    *物理快中页次访问时间*
    for(m0m {
    for(li+1l if(memery[m]page[l])
    break
    next[m]l
    }
    *计算换出页*
    maxnext[0]>next[1]01 for(m2m if(next[m]>next[max])
    maxm
    *次访问时间pSIZE置换物理块中第*
    memery[max]page[i]
    for(j0j temp[i][j]memery[j]
    }
    }
    五程序运行结果
    ①FIFO

    ②LRU



    六实验体会
    做该次作业时候通课相关容温网络找资源解操作系统中页面调度算法程度解加深课程知识理解懂程序中算法实现程序中基实现求算法相关性分析基实现课程求  
    次作业暴露某方面足处语言功底定足开始某算法够熟悉算法实现设计较复杂次程序存思想漏洞反映出次程序设计求定限制  

    文档香网(httpswwwxiangdangnet)户传

    《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
    该内容是文档的文本内容,更好的格式请下载文档

    下载文档到电脑,查找使用更方便

    文档的实际排版效果,会与网站的显示效果略有不同!!

    需要 2 香币 [ 分享文档获得香币 ]

    下载文档

    相关文档

    操作系统 七次实验报告 常用页面置换算法模拟实验

    操作系统课程第七次实验报告姓名学号系计算机任课教师指导教师评阅教师实验地点 综合楼B102 实验时间2012-9-26实验课表现出勤和个人表现Q1(15+15(组长评分)=30分)得...

    3年前   
    743    0

    合工大页面置换算法操作系统课程设计报告

    计算机与信息学院《操作系统综合设计》报告设计题目:页面置换算法学生姓名:学 号:专业班级:计算机科学与技术班2015 年 X月一、设计题目 3二、开发环境与工具 3三、设计原理 31....

    3年前   
    556    0

    页面置换算法实验(内含完整代码)

    实验二 存储管理 一、 实验目的 通过模拟实现请求页式存储管理的几种基本页面置换算法,了解虚拟存储技术的特 点,掌握虚拟存储请求页式存储管理中几种基本页面置换算法的基本思想和实现过程, 并...

    7个月前   
    170    0

    操作系统实验三磁盘调度算法的实现

    XX大学计算机与通信工程学院实验报告2013 至 2014 学年 第 一 学期课程名称操作系统学号 学生姓名 年级 专业 教学班号 实验地点 实验时间 2013年 月 日 ...

    3年前   
    479    0

    进程调度算法的实现计算机操作系统课程设计

    题目2 进程调度算法的实现2.1 题目的主要研究内容及预期达到的目标(1)设计进程控制块; (2)设计多个进程队列; (3)设计多个进程(≥20); (4)动态生成时间片、执行时间和优先级,...

    3年前   
    583    0

    操作系统实验四主存空间的分配与回收首次适应算法和循环首次适应算法

    实验报告【实验名称】 首次适应算法和循环首次适应算法 【实验目的】理解在连续分区动态的存储管理方式下,如何实现主存空间的分配与回收。【实验原理】首次适应(first fit,FF...

    3年前   
    1047    0

    操作系统实验报告C语言实现银行家算法

    实 验 报 告题 目名 称C语言实现银行家算法院 系信息科学与工程学院班 级完成时间指导老师本次实验成绩组长联系电话邮件地址组员(姓名,学号)主要任务程序算法的编写、实现、运行调...

    3年前   
    467    0

    计算机操作系统内存分配实验报告

    计算机操作系统内存分配实验报告一、实验目的熟悉主存的分配与回收。理解在不同的存储管理方式下,如何实现主存空间的分配与回收。掌握动态分区分配方式中的数据结构和分配算法及动态分区存储管理方式及其实...

    3年前   
    603    0

    操作系统实验心得

    操作系统实验心得  每一次课程设计度让我学到了在平时课堂不可能学到的东西。所以我对每一次课程设计的机会都非常珍惜。不一定我的课程设计能够完成得有多么完美,但是我总是很投入的去研究去学习。所以在...

    12年前   
    982    0

    实验6FFT算法的应用

    实验6 FFT算法的应用实验目的:加深对离散信号的DFT的理解及其FFT算法的运用。实验原理:N点序列的DFT和IDFT变换定义式如下: , 利用旋转因子具有周期性,可以得到快速算法(FF...

    1年前   
    376    0

    工商管理模拟实验报告

    工商管理模拟实验报告 年    级:10春工商管理(本) 姓    名:      胡志元        学    号:  1037001211012     单    位:日照...

    11年前   
    12755    0

    会计模拟实验报告

    会计模拟实验报告所属课程名称: 会计模拟实验 姓 名: 专 业: 会计学 ...

    8个月前   
    177    0

    基础会计模拟实验实习报告

    基础会计模拟实验实习报告  不知不觉,为期一星期的基础会计模拟实验结束了,在这一星期的会计模拟实习中,使得我系统的对于老师讲的一些理论知识实践了一遍,加强了对理论知识的记忆,学到了许多书本上没...

    9年前   
    490    0

    《计算机操作系统》试题库

    1. 单项选择题(共200个题目)100236. 一般用户更喜欢使用的系统是(C )。 A.手工操作 B.单道批处理 C.多道批处理 ...

    2年前   
    668    0

    操作系统课程设计银行家算法报告

    《操作系统--银行家算法》课程设计报告姓 名: 学 号: 班 级:计科班 ...

    3年前   
    618    0

    操作系统课程设计磁盘调度算法

    操作系统课程设计磁盘调度算法目 录1 课程设计目的及要求……………………………………………………12 相关知识…………………………………………………………………13 ...

    3年前   
    547    0

    操作系统课程设计银行家算法的模拟实现

    操作系统课程设计报告专业计算机科学与技术学生姓名班级学号指导教师完成日期信息工程学院题目: 银行家算法的模拟实现 一、设计目的本课程设计是学习完“操作系统原理”课程后进...

    3年前   
    684    0

    操作系统课程设计磁盘调度算法

    《计算操作系统》课程设计报告 姓名: ...

    3年前   
    461    0

    《操作系统 银行家算法》课程设计报告

    《操作系统--银行家算法》课程设计报告姓 名: 学 号: 班 级: 计科班 ...

    3年前   
    810    0

    银行家算法《操作系统》课程设计报告

    《操作系统》课程设计报告课题: 银行家算法 专业计算机科学与技术学生姓名班级计算机学号指导教师信息工程...

    3年前   
    696    0

    文档贡献者

    文***品

    贡献于2020-10-09

    下载需要 2 香币 [香币充值 ]
    亲,您也可以通过 分享原创文档 来获得香币奖励!
    下载文档

    该用户的其他文档