计算机虚拟页式存储管理系统的仿真实现.docx

上传人:b****2 文档编号:17873834 上传时间:2023-08-04 格式:DOCX 页数:70 大小:465.07KB
下载 相关 举报
计算机虚拟页式存储管理系统的仿真实现.docx_第1页
第1页 / 共70页
计算机虚拟页式存储管理系统的仿真实现.docx_第2页
第2页 / 共70页
计算机虚拟页式存储管理系统的仿真实现.docx_第3页
第3页 / 共70页
计算机虚拟页式存储管理系统的仿真实现.docx_第4页
第4页 / 共70页
计算机虚拟页式存储管理系统的仿真实现.docx_第5页
第5页 / 共70页
计算机虚拟页式存储管理系统的仿真实现.docx_第6页
第6页 / 共70页
计算机虚拟页式存储管理系统的仿真实现.docx_第7页
第7页 / 共70页
计算机虚拟页式存储管理系统的仿真实现.docx_第8页
第8页 / 共70页
计算机虚拟页式存储管理系统的仿真实现.docx_第9页
第9页 / 共70页
计算机虚拟页式存储管理系统的仿真实现.docx_第10页
第10页 / 共70页
计算机虚拟页式存储管理系统的仿真实现.docx_第11页
第11页 / 共70页
计算机虚拟页式存储管理系统的仿真实现.docx_第12页
第12页 / 共70页
计算机虚拟页式存储管理系统的仿真实现.docx_第13页
第13页 / 共70页
计算机虚拟页式存储管理系统的仿真实现.docx_第14页
第14页 / 共70页
计算机虚拟页式存储管理系统的仿真实现.docx_第15页
第15页 / 共70页
计算机虚拟页式存储管理系统的仿真实现.docx_第16页
第16页 / 共70页
计算机虚拟页式存储管理系统的仿真实现.docx_第17页
第17页 / 共70页
计算机虚拟页式存储管理系统的仿真实现.docx_第18页
第18页 / 共70页
计算机虚拟页式存储管理系统的仿真实现.docx_第19页
第19页 / 共70页
计算机虚拟页式存储管理系统的仿真实现.docx_第20页
第20页 / 共70页
亲,该文档总共70页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

计算机虚拟页式存储管理系统的仿真实现.docx

《计算机虚拟页式存储管理系统的仿真实现.docx》由会员分享,可在线阅读,更多相关《计算机虚拟页式存储管理系统的仿真实现.docx(70页珍藏版)》请在冰点文库上搜索。

计算机虚拟页式存储管理系统的仿真实现.docx

计算机虚拟页式存储管理系统的仿真实现

 

操作系统课程设计

实践报告

 

题目:

计算机虚拟页式存储管理系统的仿真实现

姓名:

******

学院:

信息科技学院

专业:

计算机科学技术系

班级:

************

学号:

*********

指导教师:

******职称:

******

 

2017年3月12日

 

摘要……………………………………………………………………………………………3

关键词………………………………………………………………………………………3

Abstract………………………………………………………………………………………3

Keywords…………………………………………………………………………………3

1绪论…………………………………………………………………………………………4

1.1选题目的……………………………………………………………………………4

1.2选题意义……………………………………………………………………………4

2设计思路与完成功能说明…………………………………………………………………4

2.1课程设计思路………………………………………………………………………4

2.1.1模拟多进程并发环境…………………………………………………………4

2.1.2页面访问请求与异常处理………………………………………………………5

2.1.3过程可视化……………………………………………………………………5

2.1.4整体思路流程图……………………………………………………………6

2.2完成功能说明………………………………………………………………………7

3裸机硬件部件仿真设计……………………………………………………………8

3.1存储空间的设计与抽象………………………………………………………8

3.2存储管理部件MMU的抽象与设计……………………………………………9

3.3中央处理器CPU的抽象与设计………………………………………………9

4通用数据结构设计……………………………………………………………………9

4.1后备作业队列抽象设计……………………………………………………………9

4.1.1数据结构设计………………………………………………………………9

4.1.2基础操作…………………………………………………………………9

4.2进程状态队列抽象设计………………………………………………………10

4.2.1数据结构设计………………………………………………………………10

4.2.2基础操作…………………………………………………………………10

4.3快表抽象设计…………………………………………………………………11

4.3.1数据结构设计………………………………………………………………11

4.3.2基础操作…………………………………………………………………11

4.4页表项抽象设计………………………………………………………………12

4.4.1数据结构设计……………………………………………………………………12

4.4.2基础操作……………………………………………………………………………12

4.5外页表项抽象设计……………………………………………………………12

4.5.1数据结构设计……………………………………………………………………12

4.5.2基础操作…………………………………………………………………13

4.6页表基址寄存器抽象设计………………………………………………………13

4.6.1数据结构设计……………………………………………………………………13

4.6.2基础操作………………………………………………………………………13

4.7程序状态字抽象设计……………………………………………………………13

4.7.1数据结构设计…………………………………………………………………13

4.7.2基础操作………………………………………………………………………13

4.8驻留集抽象设计…………………………………………………………………13

4.8.1数据结构设计……………………………………………………………………13

4.8.2基础操作………………………………………………………………………14

4.9内存抽象设计……………………………………………………………………14

4.9.1数据结构设计…………………………………………………………………14

4.9.2基础操作………………………………………………………………………15

4.10外存抽象设计……………………………………………………………………15

4.10.1数据结构设计………………………………………………………………15

4.10.2基础操作…………………………………………………………………15

5软件系统设计………………………………………………………………………………15

5.1系统结构……………………………………………………………………………15

5.1.1底层硬件抽象…………………………………………………………………15

5.1.2功能模拟……………………………………………………………………15

5.1.3模块整合……………………………………………………………………16

5.1.4系统结构图…………………………………………………………………17

5.2系统类图与顺序图…………………………………………………………………18

5.2.1系统类图…………………………………………………………………18

5.2.2系统顺序图………………………………………………………………19

5.3功能实现流程……………………………………………………………………20

5.3.1实现作业生成、进程创建与资源分配……………………………20

5.3.2实现进程调度与进程上下文切换………………………………………21

5.3.3实现对快表和驻留集的管理……………………………………………22

5.3.4实现快表和慢表的搜索…………………………………………………23

5.3.5实现缺页异常处理与命中率的计算…………………………………24

5.3.6实现过程可视化…………………………………………………………24

6关键操作……………………………………………………………………………………25

6.1模拟并发环境…………………………………………………………………………25

6.1.1进程阻塞原语…………………………………………………………………25

6.1.2进程唤醒原语…………………………………………………………………25

6.1.3进程上下文切换……………………………………………………………25

6.2页面替换算法………………………………………………………………………26

6.2.1先入先出FIFO页面替换算法……………………………………………26

6.2.2最久未被访问LRU页面替换算法…………………………………………27

6.2.3时钟CLOCK页面替换算法…………………………………………………28

6.3过程可视化…………………………………………………………………………29

7技术问题分析与解决方案…………………………………………………………………30

7.1存在问题与解决方案……………………………………………………………30

7.2其他设想……………………………………………………………………………31

8实践体会…………………………………………………………………………………31

参考文献……………………………………………………………………………………32

附件1…………………………………………………………………………………………33

附件2…………………………………………………………………………………………38

附件3…………………………………………………………………………………………39

 

计算机虚拟页式存储管理系统的仿真实现

***专业学生***

指导教师***

摘要:

任何程序和数据必须占用内存空间才能得以执行和处理,但让进程全部信息驻留于内存是对内存资源的极大浪费,因此利用“部分装入,部分替换”来实现存储空间在逻辑上的扩充是提高内存利用率的有效手段,虚拟页式存储管理是将程序信息副本存放在外存中,当它被调度投入运行时仅装入当前使用页面;进程执行过程中访问到不在内存的页面时,再由系统自动调入,根据页面替换算法选择淘汰页面。

它依靠底层硬件MMU支撑来完成地址转换和存储保护的功能,从逻辑上为用户提供一个比物理内存容量大得多的、可寻址的存储器。

本次课程设计目标是利用c++程序设计语言抽象硬件部件,模拟系统软件功能,完成并行环境下计算机虚拟页式存储管理系统的仿真实现。

在实现过程中,采用QtCreator集成开发环境,利用c++面向对象的思想,用对象类对硬件部件进行抽象模拟,用成员函数作为接口,模拟各部件API完成功能的集成,基本完成了预期功能;实现了并发环境下的页面访问请求,利用多种页面替换算法实现缺页异常处理中的页面替换;实现了进程调度、内外存实时占用情况及页面替换的过程可视化,并最终将过程中涉及到的数据变化保存至指定文档。

关键词:

虚拟页式存储管理;内存;外存;页面替换算法;MMU;c++;可视化

TheComputerSimulationofVirtualPageStorageManagementSystem

Studentmajoringin******

Tutor***

Abstract:

.Anyprogramordatamustoccupymemoryspacecanbeimplementedandprocessing,butletalloftheinformationprocessresidesinthememoryistothememoryresourceswaste,therefore"partoftheload,partialsubstitution"isusedtorealizethestoragespaceonthelogicofexpansionisaneffectivemethodforimprovingmemoryutilization,virtualstoragemanagementpagetypeistheprogramacopyoftheinformationstoredinCRT,whenitisdispatchingoperationuseonlyintothecurrentpage;Theexecutionofaprocesstoaccesstothepagethatisnotinthememory,againbythesystemautomaticallytransferinto,accordingtothepagereplacementalgorithmselectionpage.ItreliesontheunderlyinghardwareMMUsupporttocompletetheaddresstranslationandstorageprotectionfunction,logicallyprovidesuserswithamuchlargerthanphysicalmemorycapacity,addressablememory.Thiscoursewasdesignedbyusingc++programdesignlanguageabstracthardwarecomponents,functionofsimulationsystemsoftware,completetheparallelcomputervirtualpagestoragemanagementsystemundertheenvironmentofthesimulationimplementation.Intheprocessofimplementation,usingQtCreatorintegrateddevelopmentenvironment,usingtheideasofobject-orientedc++,useobjectclassestoabstractsimulationofhardwarecomponents,withamemberfunctionastheinterface,analogcomponentsAPIcompletefunctionintegration,basicallycompletedtheexpectedfunction;Pageaccessrequestrealizedconcurrentenvironment,usingavarietyofpagereplacementalgorithmimplementationmissingpagepagereplacementinexceptionhandling;Realizedthereal-timeprocessscheduling,bothinsideandoutsidestorageusageandpagereplacementprocessvisualization,andeventuallywillbeinvolvedintheprocessofdatasavedtothespecifieddocument.

Keywords:

Virtualpagestoragemanagement;Memory;Peripheralstorage;Pagereplacementalgorithm.MMU.C++;visualization

 

1绪论

1.1选题目的

编写程序模拟请求分页虚存管理中的存储管理部件MMU进行虚实地址转换的过程以及缺页异常的处理,利用页面替换算法淘汰页面,并实现过程可视化。

主要包括:

(1)模拟作业执行与调度,进程创建与终止;

(2)模拟进程调度与进程上下文切换;

(3)实现硬件页表基址寄存器与快表的管理与访问;

(4)仿真实现存储管理部件MMU;

(5)仿真实现页表、外页表并对其进行管理与访问;

(6)处理缺页异常,按照替换算法选择淘汰页面;

(7)实现对内存与外存的抽象设计;

(8)内存与外存占用情况的可视化;

(9)进程调度与页面替换过程可视化。

从而将操作系统的处理器管理与存储管理联系在一起,将理论与实践相结合,从整体上系统的了解并发环境中的地址转换机制,更深入的理解计算机虚拟页式存储管理系统的实现,在加深对理论理解的同时强化编程能力与算法思维。

1.2选题意义

存储管理是操作系统的重要组成部分,负责管理计算机系统的重要资源——内存储器。

由于任何程序和数据必须占用内存空间才能得以执行和处理,因此存储管理的优劣直接影响系统性能。

但是进程全部信息驻留于内存是对内存资源的极大浪费,因此利用“部分装入,部分替换”来实现存储空间在逻辑上的扩充是提高内存利用率的有效手段。

操作系统是一个并发系统,所有功能都是在并发环境下实现的,因此,如何将虚拟页式存储管理和处理器管理有效的结合起来是该选题的重点也是难点,这也是意义所在。

找到独立章节的理论知识之间的联系并用代码建立联系,实现相应的功能,不仅仅是对理论知识的深入理解的过程,也是实践能力、动手能力和编程能力的考验与锻炼有着重要意义。

虚拟页式存储管理系统涉及到的硬件有中央处理器CPU、存储管理部件MMU、内存、外存以及页表基址寄存器、快表等相关寄存器。

将这些硬件设备抽象成代码实现不仅仅需要对这些硬件的属性结构有全面的了解,还需要对他们的功能做出动态的仿真。

从而在深化理论知识的同时,也对面向对象的抽象能力与对数据结构灵活运用的能力的锻炼有着重要意义。

同时,虚拟页式存储管理系统所基于的“装入替换”涉及到了页面的装入、替换与淘汰,因此需要页面替换算法来实现这些功能。

常见的页面替换算法诸如先入先出页面替换算法(FIFO)、最近最少使用页面替换算法(LRU)、时钟页面替换算法(LRU)等,用程序设计语言实现这些算法,也对算法思维的培养有着重要意义。

2设计思路与完成功能说明

2.1课程设计思路

2.1.1模拟多进程并发环境

首先从高级调度开始,作业生成后从后备作业队列根据相关调度策略(以先来先服务为例)获取作业,接着动态创建作业所需一系列进程,即从PCB池中申请空白PCB,对其初始化并分配内存空间等一系列资源。

如果获得所需的资源,将该PCB从新建态转换为就绪态,即加入就绪队列,同时更改进程状态位。

需要注意的是,在进程的抽象设计中,为了简化设计而使PCB代表进程,进程的指令数随机生成,指令所需访问的逻辑页面随机生成,逻辑页号与物理页号的对应关系由系统为每个进程自动生成。

进程访问某一页面时MMU根据CPU给出的逻辑地址获取相应的逻辑页号与页内偏移;然后以页号为索引搜索快表,如果快表中存在该页号,则获得物理页号与偏移地址拼接成物理地址;如果快表中不存在该页号,则搜索慢表,如果慢表中存在该页号(即页表项的驻留位为1),也就是该页面存在于内存,则直接获取相应物理页号,并将该项填入快表;如果慢表中不存在该页号,也就是该页面未调入内存(即页表项驻留位为0),则发出异常信号;该进程被阻塞,释放CPU资源并在保存现场信息后进入等待队列,下一个进程获得CPU资源开始回复自己的现场,也就是进程上下文切换,然后进入运行态。

进程从外页表获得该缺页的信息后,如果驻留集未满则直接加入该页面对应的逻辑页号,如果驻留集满则采用页面替换策略选择淘汰相应页面对应的逻辑页号,并加入新页面对应的逻辑页号,同时将新页面的逻辑页号与物理页号的对应关系加入进程快表信息。

这时进程等待事件已经结束,进程被唤醒,进入就绪队列等待CPU资源。

需要注意,在页面的访问与替换过程中涉及到页表引用位、驻留位等标志位的转变。

进程指令执行完毕后,需要结束进程进入终止态,从PCB池中撤销该进程PCB,并收回进程所占内存空间。

2.1.2页面访问请求与异常处理

页面访问请求过程如下:

(1)MMU接收CPU传送来的逻辑地址并按照页面大小把它从某位起分解成两部分:

页号和页内偏移;

(2)以页号为索引快速搜索快表TLB;

(3)如果命中,立即送出页框号,并与页内偏移拼接成物理地址;

(4)如果不命中,由硬件以页号为索引搜索页表,页表基址由硬件页表基址寄存器指出;

(5)如果页表被命中,说明访问页面已经在内存中,可送出页框号,并与页内偏移拼接成物理地址,同时要把这个页面和页框信息装入快表TLB,以备再次访问。

(6)如果发现页表中的对应页面失效,MMU发出缺页异常;

缺页异常处理过程如下:

(1)挂起请求调页的进程;

(2)根据页号搜索外页表,找到存放此页的磁盘物理地址;

(3)查看内存是否有空闲页框,如果有则分配一个;

(4)如果内存中无空闲页框,按照替换算法选择淘汰页面;

(5)将修改过的的淘汰页内容写回磁盘原先位置;

(6)进行调页,把页面装入内存所分配的页框中,同时修改进程页表项。

2.1.3过程可视化

(1)控制台显示作业与进程的创建、执行、调度等状态信息,并显示进程的页面访问请求、页面替换过程以及内存、外存的占用情况;

(2)将作业与进程的创建、执行、调度等状态信息写入文档,并将进程的页面访问请求以及页面替换过程写入文档,将内存与外存的占用情况写入文档;

(3)将进程的页面访问请求以及页面替换过程写入图形化界面,将内存与外存的占用情况以位示图的方法写入图形化界面,实现动态的过程可视化。

 

2.1.4整体思路流程图

 

图2.1.4-1整体思路流程图

 

图2.1.4-2整体思路流程图

2.2完成功能说明

(1)抽象并设计CPU模块。

实现进程上下文切换,模拟进程指令的执行与进程对页面访问请求的生成,实现对快表和页表基址寄存器等硬件寄存器的访问与管理,其中,快表按照FIFO算法进行表项替换;

函数声明

参数

返回值

函数功能

setPCB

PCBpcb

void

设置进程控制块,表示该进程正在运行

setPSW

PSWpsw

void

设置程序状态字,用于进程上下文切换

setPtbr

PTBRptbr

void

设置进程的页表基址,用于进程上下文切换

setTLB

TQueueptlb

void

置快表内容,用于进程上下文切换

setPC

intpc

void

设置指令计数器

setIR

intir

void

设置当前指令

getIR

int

获得当前指令逻辑地址

InitTlb

void

初始化快表

ClearTlb

void

清空快表

(2)抽象并设计MMU模块,实现对逻辑地址的分解、对快表与慢表的搜索、发出缺页异常信号,并调用相应异常处理模块完成对缺页异常的处理,最后输出物理地址;

函数声明

参数

返回值

函数功能

setLogicAddr

void

获得逻辑地址

setPageNoTemp

void

获得页号

setOffsetAddr

void

获得偏移地址

setCPU

CPUcpu

void

获得当前CPU状态

setPhysicAddr

void

获得物理地址

CutLogicAddr

void

分解逻辑地址,页号3位,页内偏移5位

(3)抽象并设计PCB模块与PCBPOOL模块,设计后备作业队列、进程等待队列、就绪队列,实现作业的生成、调度、执行与终止,以及在作业执行过程中,进程的创建、调度与终止,作业和进程均按照先来先服务算法进行调度,在进程调度时需要保护CPU现场信息,以保证进程能够在自己的运行环境下运行;

函数声明

参数

返回值

函数功能

CreatePCB

int

申请一个空白PCB,分配内存并初始化

FreePCB

PCBfpcb

int

释放PCB

BlockCourse

PCBbpcb

int

进程阻塞原语

WakeCourse

PCB&wpcb

int

进程唤醒原语

ReadyQueueisEmpty

int

判断就绪队列是否为空

WaitQueueisEmpty

int

判断等待队列是否为空

EnReadyQueue

PCBqpcb

int

进就绪队列,表示进程已获得内存等资源,进入就绪态

DeReadyQueue

PCB

出就绪队列,表示进程获得处理器,进入运行态

Read

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2