计算机虚拟页式存储管理系统的仿真实现_第1页
计算机虚拟页式存储管理系统的仿真实现_第2页
免费预览已结束,剩余51页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、系统课程设计实践报告题目:姓名:学院:专业:班级:学号:指导教师:计算机虚拟页式存储管理系统的仿真实现*信息科技学院廿算机科学技术系*2017年3月12日目录摘要3关键词3Abstract3Keywords31 绪论41.1 选题目的41.2 选题意义42 设计思路与完成功能说明42.1 课程设计思路42.1.1 模拟多进程并发环境42.1.2 页面访问请求与异常处理52.1.3 过程可视化52.1.4 整体思路流程图62.2 完成功能说明73 裸机硬件部件仿真设计83. 1存储空间的设计与抽象83.2 存储管理部件MMU的抽象与设计93.3 中央处理器CPU的抽象与设计94通用数据结构设计9

2、4.1 后备作业队列抽象设计94.1.1 数据结构设计94. 1.2基础操作94.2 进程状态队列抽象设计104.2.1 数据结构设计104.2.2基础操作104.3 快表抽象设计114.3.1 数据结构设计114.3.2基础操作114.4 页表项抽象设计124.4.1 数据结构设计124.4.2 基础操作124.5 外页表项抽象设计124.5.1 数据结构设计124.5.2基础操作134.6 页表基址寄存器抽象设计134.6.1 数据结构设计134.6.2 基础操作134.7 程序状态字抽象设计134.7.1 数据结构设计134.7.2 基础操作134.8 驻留集抽象设计134.8.1 数据

3、结构设计134.8.2 基础操作144.9 内存抽象设计144.9.1 数据结构设计144.9.2 基础操作154.10 外存抽象设计154.10.1 数据结构设计154.10.2 基础操作155 软件系统设计155.1 系统结构155.1.1 底层硬件抽象155.1.2 功能模拟155.1.3 模块整合165.1.4 系统结构图175.2 系统类图与顺序图185. 2.1系统类图185.2.2系统顺序图195.3 功能实现流程205.3.1实现作业生成、进程创建与资源分配205.3.2实现进程调度与进程上下文切换215.3.3实现对快表和驻留集的管理225.3.4实现快表和慢表的搜索235.

4、3.5实现缺页异常处理与命中率的计算245.3.6实现过程可视化246 关键操作256.1 模拟并发环境256.1.1 进程阻塞原语256.1.2 进程唤醒原语256.1.3 进程上下文切换256.2 页面替换算法266.2.1 先入先出FIFO页面替换算法266.2.2 最久未被访问LRU页面替换算法276.2.3 时钟CLOCK页面替换算法286.3 过程可视化297 技术问题分析与解决方案307.1 存在问题与解决方案307.2 其他设想318 实践体会31参考文献32附件133附件238附件3399计算机虚拟页式存储管理系统的仿真实现*专业学生*指导教师*摘要:任何程序和数据必须占用内

5、存空间才能得以执行和处理,但让进程全部信息驻留于内存是对内存资源的极大浪费,因此利用“部分装入,部分替换”来实现存储空间在逻辑上的扩充是提高内存利用率的有效手段,虚拟页式存储管理是将程序信息副本存放在外存中,当它被调度投入运行时仅装入当前使用页面;进程执行过程中访问到不在内存的页面时,再由系统自动调入,根据页面替换算法选择淘汰页面。它依靠底层硬件MMU支撑来完成地址转换和存储保护的功能,从逻辑上为用户提供一个比物理内存容量大得多的、可寻址的存储器。本次课程设计目标是利用C+程序设计语言抽象硬件部件,模拟系统软件功能,完成并行环境下计算机虚拟页式存储管理系统的仿真实现。在实现过程中,采用QtCr

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

7、rogramordatamustoccupymemoryspacecanbeimplementedandprocessing,butletalloftheinformationprocessresidesinthememoryistothememoryresourceswaste,therefore"partoftheload,partialsubstitution"isusedtorealizethestoragespaceonthelogicofexpansionisaneffectivemethodforimprovingmemoryutilization,virtu

8、alstoragemanagementpagetypeistheprogramacopyoftheinformationstoredinCRT,whenitisdispatchingoperationuseonlyintothecurrentpage;Theexecutionofaprocesstoaccesstothepagethatisnotinthememory,againbythesystemautomaticallytransferinto,accordingtothepagereplacementalgorithmselectionpage.Itreliesontheunderly

9、inghardwareMMUsupporttocompletetheaddresstranslationandstorageprotectionfunction,logicallyprovidesuserswithamuchlargerthanphysicalmemorycapacity,addressablememory.Thiscoursewasdesignedbyusingc+programdesignlanguageabstracthardwarecomponents,functionofsimulationsystemsoftware,completetheparallelcompu

10、tervirtualpagestoragemanagementsystemundertheenvironmentofthesimulationimplementation.Intheprocessofimplementation,usingQtCreatorintegrateddevelopmentenvironment,usingtheideasofobject-orientedc+,useobjectclassestoabstractsimulationofhardwarecomponents,withamemberfunctionastheinterface,analogcomponen

11、tsAPIcompletefunctionintegration,basicallycompletedtheexpectedfunction;Pageaccessrequestrealizedconcurrentenvironment,usingavarietyofpagereplacementalgorithmimplementationmissingpagepagereplacementinexceptionhandling;Realizedthereal-timeprocessscheduling,bothinsideandoutsidestorageusageandpagereplac

12、ementprocessvisualization,andeventuallywillbeinvolvedintheprocessofdatasavedtothespecifieddocument.Keywords:Virtualpagestoragemanagement;Memory;Peripheralstorage;Pagereplacementalgorithm.MMU.C+;visualization1 绪论11选题目的编写程序模拟请求分页虚存管理中的存储管理部件MMU进行虚实地址转换的过程以及缺页异常的处理,利用页面替换算法淘汰页面,并实现过程可视化。主要包括:(1)模拟作业执行与

13、调度,进程创建与终止;(2)模拟进程调度与进程上下文切换;(3)实现硬件页表基址寄存器与快表的管理与访问;(4)仿真实现存储管理部件MMU;(5)仿真实现页表、外页表并对其进行管理与访问;(6)处理缺页异常,按照替换算法选择淘汰页面;(7)实现对内存与外存的抽象设计;(8)内存与外存占用情况的可视化;(9)进程调度与页面替换过程可视化。从而将操作系统的处理器管理与存储管理联系在一起,将理论与实践相结合,从整体上系统的了解并发环境中的地址转换机制,更深入的理解计算机虚拟页式存储管理系统的实现,在加深对理论理解的同时强化编程能力与算法思维。12选题意义存储管理是操作系统的重要组成部分,负责管理计算

14、机系统的重要资源内存储器。由于任何程序和数据必须占用内存空间才能得以执行和处理,因此存储管理的优劣直接影响系统性能。但是进程全部信息驻留于内存是对内存资源的极大浪费,因此利用“部分装入,部分替换”来实现存储空间在逻辑上的扩充是提高内存利用率的有效手段。操作系统是一个并发系统,所有功能都是在并发环境下实现的,因此,如何将虚拟页式存储管理和处理器管理有效的结合起来是该选题的重点也是难点,这也是意义所在。找到独立章节的理论知识之间的联系并用代码建立联系,实现相应的功能,不仅仅是对理论知识的深入理解的过程,也是实践能力、动手能力和编程能力的考验与锻炼有着重要意义。虚拟页式存储管理系统涉及到的硬件有中央

15、处理器CPU、存储管理部件MMU、内存、外存以及页表基址寄存器、快表等相关寄存器。将这些硬件设备抽象成代码实现不仅仅需要对这些硬件的属性结构有全面的了解,还需要对他们的功能做出动态的仿真。从而在深化理论知识的同时,也对面向对象的抽象能力与对数据结构灵活运用的能力的锻炼有着重要意义。同时,虚拟页式存储管理系统所基于的“装入替换”涉及到了页面的装入、替换与淘汰,因此需要页面替换算法来实现这些功能。常见的页面替换算法诸如先入先出页面替换算法(FIFO)、最近最少使用页面替换算法(LRU)、时钟页面替换算法(LRU)等,用程序设计语言实现这些算法,也对算法思维的培养有着重要意义。2 设计思路与完成功能

16、说明21课程设计思路211模拟多进程并发环境首先从高级调度开始,作业生成后从后备作业队列根据相关调度策略(以先来先服务为例)获取作业,接着动态创建作业所需一系列进程,即从PCB池中申请空白PCB,对其初始化并分配内存空间等一系列资源。如果获得所需的资源,将该PCB从新建态转换为就绪态,即加入就绪队列,同时更改进程状态位。需要注意的是,在进程的抽象设计中,为了简化设计而使PCB代表进程,进程的指令数随机生成,指令所需访问的逻辑页面随机生成,逻辑页号与物理页号的对应关系由系统为每个进程自动生成。进程访问某一页面时MMU根据CPU给出的逻辑地址获取相应的逻辑页号与页内偏移;然后以页号为索引搜索快表,

17、如果快表中存在该页号,则获得物理页号与偏移地址拼接成物理地址;如果快表中不存在该页号,则搜索慢表,如果慢表中存在该页号(即页表项的驻留位为1),也就是该页面存在于内存,则直接获取相应物理页号,并将该项填入快表;如果慢表中不存在该页号,也就是该页面未调入内存(即页表项驻留位为0),则发出异常信号;该进程被阻塞,释放CPU资源并在保存现场信息后进入等待队列,下一个进程获得CPU资源开始回复自己的现场,也就是进程上下文切换,然后进入运行态。进程从外页表获得该缺页的信息后,如果驻留集未满则直接加入该页面对应的逻辑页号,如果驻留集满则采用页面替换策略选择淘汰相应页面对应的逻辑页号,并加入新页面对应的逻辑

18、页号,同时将新页面的逻辑页号与物理页号的对应关系加入进程快表信息。这时进程等待事件已经结束,进程被唤醒,进入就绪队列等待CPU资源。需要注意,在页面的访问与替换过程中涉及到页表引用位、驻留位等标志位的转变。进程指令执行完毕后,需要结束进程进入终止态,从PCB池中撤销该进程PCB,并收回进程所占内存空间。212页面访问请求与异常处理页面访问请求过程如下:(1)MMU接收CPU传送来的逻辑地址并按照页面大小把它从某位起分解成两部分:页号和页内偏移;(2)以页号为索引快速搜索快表TLB;(3)如果命中,立即送出页框号,并与页内偏移拼接成物理地址;(4)如果不命中,由硬件以页号为索引搜索页表,页表基址

19、由硬件页表基址寄存器指出;(5)如果页表被命中,说明访问页面已经在内存中,可送出页框号,并与页内偏移拼接成物理地址,同时要把这个页面和页框信息装入快表TLB,以备再次访问。(6)如果发现页表中的对应页面失效,MMU发出缺页异常;缺页异常处理过程如下:(1)挂起请求调页的进程;(2)根据页号搜索外页表,找到存放此页的磁盘物理地址;(3)查看内存是否有空闲页框,如果有则分配一个;(4)如果内存中无空闲页框,按照替换算法选择淘汰页面;(5)将修改过的的淘汰页内容写回磁盘原先位置;(6)进行调页,把页面装入内存所分配的页框中,同时修改进程页表项。213过程可视化(1)控制台显示作业与进程的创建、执行、

20、调度等状态信息,并显示进程的页面访问请求、页面替换过程以及内存、外存的占用情况;(2)将作业与进程的创建、执行、调度等状态信息写入文档,并将进程的页面访问请求以及页面替换过程写入文档,将内存与外存的占用情况写入文档;(3)将进程的页面访问请求以及页面替换过程写入图形化界面,将内存与外存的占用情况以位示图的方法写入图形化界面,实现动态的过程可视化。214整体思路流程图进程上b'tVJ换决得口'L;登阚曲松限列图2.1.4-1整体思路流程图页号A页表拴度?否否内存满否?艮表顼在臧申2否否核页被修改否?贡在内存?是CPU检索快叢启动DO磴件产生觥页中断谜求调页操件系统命令CPU駅外存

21、谏缺页修改页表盼一頁从外存换入内存选择一页换岀从外存中找到缺页抿留CPU现场形成物理地址访问页我将该页写回外存悠改访问位和悠改位缺页中断处理、图2.1.4-2整体思路流程图22完成功能说明(1)抽象并设计CPU模块。实现进程上下文切换,模拟进程指令的执行与进程对页面访问请求的生成,实现对快表和页表基址寄存器等硬件寄存器的访问与管理,其中,快表按照FIFO算法进行表项替换;函数声明参数返回值函数功能setPCBPCBpcbvoid设置进程控制块,表示该进程正在运行setPSWPSWpswvoid设置程序状态字,用于进程上下文切换setPtbrPTBRptbrvoid设置进程的页表基址,用于进程上

22、下文切换setTLBTQueueptlbvoid置快表内容,用于进程上下文切换setPCintpcvoid设置指令计数器setIRintirvoid设置当前指令getIR无int获得当前指令逻辑地址InitTlb无void初始化快表ClearTlb无void清空快表(2)抽象并设计MMU模块,实现对逻辑地址的分解、对快表与慢表的搜索、发出缺页异常信号,并调用相应异常处理模块完成对缺页异常的处理,最后输出物理地址;函数声明参数返回值函数功能setLogicAddr无void获得逻辑地址setPageNoTemp无void获得页号setOffsetAddr无void获得偏移地址setCPUCPUc

23、puvoid获得当前CPU状态setPhysicAddr无void获得物理地址CutLogicAddr无void分解逻辑地址,页号3位,页内偏移5位(3)抽象并设计PCB模块与PCBPOOL模块,设计后备作业队列、进程等待队列、就绪队列,实现作业的生成、调度、执行与终止,以及在作业执行过程中,进程的创建、调度与终止,作业和进程均按照先来先服务算法进行调度,在进程调度时需要保护CPU现场信息,以保证进程能够在自己的运行环境下运行;函数声明参数返回值函数功能CreatePCB无int申请个空白PCB,分配内存并初始化FreePCBPCBfpcbint释放PCBBlockCoursePCBbpcbi

24、nt进程阻塞原语WakeCoursePCB&wpcbint进程唤醒原语ReadyQueueisEmpty无int判断就绪队列是否为空WaitQueueisEmpty无int判断等待队列是否为空EnReadyQueuePCBqpcbint进就绪队列,表示进程已获得内存等资源,进入就绪态DeReadyQueue无PCB出就绪队列,表示进程获得处理器,进入运行态ReadyQueueLength无int获得就绪队列长度EnWaitQueuePCBqpcbint进等待队列,表示进程出现等待事件,被阻塞进入等待态DeWaitQueue无PCB出等待队列,表示等待事件结束(4) 仿真实现存储空间模块

25、,包括内存的抽象与外存的抽象,以及对页表、外页表的管理,页表中有引用位、驻留位等标志位;存储空间按块划分,块与页大小相同,用位示图法表示作业调度、进程调度过程中存储空间的占用情况;函数声明参数返回值函数功能setPCBSpaceintaddr,intpidvoid为进程分配内存空间freePCBSpaceintaddr,intpidvoid释放进程内存空间setPCBpageSpaceintiFvoid为进程页表分配内存空间freePCBpageSpaceintiFvoid释放进程页表内存空间setJOBSpaceintaddrvoid为作业分配外存freeJOBSpaceintaddrvoi

26、d释放作业外存(5) 模拟存储管理程序对缺页异常进行处理,按照FIFO、LRU、CLOCK三种页面替换算法选择淘汰页面,实现页面的调入与调出,并对进程页表标志位进行相应的操作,实现进程驻留集抽象;函数声明参数返回值函数功能setRealPageNoTempLRUpcbpool,ShowProgram,ShowMemory,intint获得页框号LRU算法setRealPageNoTempFIFOpcbpool,ShowProgram,ShowMemory,intint获得页框号FIFO算法setRealPageNoTempCLOCKpcbpool,ShowProgram,ShowMemory,

27、intint获得页框号CLOCK算法(6) 将调度信息以及页面替换信息写入文档,并完成用户界面设计,实现虚拟页式存储管理系统的过程可视化。函数声明参数返回值函数功能setPagePCBpcbvoid获得当前正在运行的PCB状态clearPage无void清空页表界面setTlbPCBpcbvoid获得当前快表的状态clearTlb无void清空快表界面setStayPagePCBpcbvoid获得当前进程LRU方法的驻留集状态clearStayPage无void清空驻留集界面setCycleStayPagePCBpcbvoid获得当前进程CLOCK方法的驻留集状态setFifoStayPage

28、PCBpcbvoid获得当前进程FIFO方法的驻留集状态clearall无void清空全部界面(7)完成命中率的计算以评价模拟系统的优劣。3 裸机硬件部件仿真设计31存储空间的设计与抽象抽象并设计存储空间模块,采用将程序指令存储和数据存储分开的哈弗结构,具体分为内存抽象与外存抽象。存储空间按块划分,块与页大小相同,均为32B。内存1024B即32块,外存2048B即64块。物理地址9位,4位页号,5位页内偏移,可访问512B大小的空间;逻辑地址10位,5位页号,5位页内偏移,可访问1024B大小的空间。32存储管理部件MMU的抽象与设计抽象并设计存储管理部件MMU模块,以对象类的形式模拟存储管

29、理部件MMU的结构和功能。存放逻辑地址与物理地址的寄存器等结构部件以静态属性抽象模拟。地址分解、地址转换、发出异常与异常处理功能等功能以动态成员函数抽象模拟。33中央处理器CPU的抽象与设计抽象并设计中央处理器CPU模块,以对象类的形式模拟中央处理器CPU的结构和功能。程序状态字PSW;页表基址寄存器PTBR;指令计数器PC;指令寄存器IR;快表TLB等寄存器部件都以静态属性抽象模拟。进程调度时进行进程上下文切换以保护CPU现场信息;将逻辑地址传送给存储管理部件MMU;指令的运行等功能以动态成员函数抽象模拟。4 通用数据结构设计41后备作业队列抽象设计411数据结构设计typedefstrue

30、t/后备作业队列,数据结构用队列表示intbase10;/队列基地址intrear;/队列尾指针intfront;/队列头指针JQueue;412基本操作voidEnjob(intjob)/进后备作业队列作业进队列;尾指针+1;intDeJob()/出后备作业队列if(队列为空,作业执行结束)返回-1;else作业出队列;头指针+1;为作业分配外存;返回0;voidInitJob()/初始化后备作业队列队列指针初始化;while(作业数不为0)作业号=生成随机数;作业数=作业数-1;42进程状态队列抽象设计421数据结构设计typedefstruet/进程状态队列PCBbase100;/队列元

31、素为进程控制块intrear;/队列尾指针intfront;/队列头指针PQueue;422基本操作intReadyQueueisEmpty()/判断就绪队列是否为空if(队列头指针=队列尾指针)返回1;返回0;intWaitQueueisEmpty()/判断等待队列是否为空if(队列头指针=队列尾指针)返回1;返回0;intEnReadyQueue(PCBqpcb)/表示进程已获得内存等资源,进入就绪态进程进入就绪队列;队列尾指针+1;PCBDeReadyQueue()/出就绪队列,表示进程获得处理器,进入运行态if(就绪队列不为空)进程出队列;队列头指针+1;else返回空;intRead

32、yQueueLength();/就绪队列长度intEnWaitQueue(PCBqpeb)/表示进程出现等待事件,被阻塞进入等待态进程进入等待队列;队列尾指针+1;PCBDeWaitQueue()/出等待队列,表示等待事件结束if(等待队列不为空)进程出队列;1o队列头指针+1;else返回空;43快表抽象设计431数据结构设计typedefstructTNode/页号和页框号的对应关系的数据结构inttpageno;/页号inttrealpageno;/页框号TNode;typedefstruet/快表队列TNodebase4;/快表大小是3,数据结构为循环队列,所以空出一位intrear;

33、/队列尾指针intfront;/队列头指针TQueue;432基本操作voidInitTlb()/初始化快表快表头指针=快表尾指针=0;intEnTlb(intepageno,interealpageno)/进快表生成新的快表项;快表项进快表;快表尾指针+1;intDeTlb()/出快表if(快表为空)返回-1;else返回表头快表项的物理页号;intTlbisFull()/判断快表是否满if(尾指针+1=头指针)返回1;返回0;voidClearTlb()/清空快表尾指针=头指针=0;intVisitTlb(intpageno);/遍历快表intTlbSize()/快表长度返回尾指针-头指针

34、;ii44页表项抽象设计441数据结构设计typedefstructPage/页表项,大小为2BintiPageNo;/页号intiRealPageNo;/页框号int订nMemory;/驻留标志位intiHavenUse;/引用位intiChange;/修改位intiProtect;/保护位Page;442基本操作voidsetPage()/进程页表生成新页表;设置页号;设置驻留位、引用位、修改位、保护位;对应页框号;voidsetPageInMemory(intpageno,intn)/设置页面的驻留位遍历页表;if(页号相同)该页面驻留位置n;voidsetPageHavenUse(in

35、tpageno,intn);/设置页面的引用位intgetPageInMemory(intpageno)/根据页号获得进程页表驻留位遍历页表;if(遍历未结束&&页号相同)驻留位置n;返回0;if(遍历结束&&不存在页号相同)返回-1;intgetPageHavenUse(intpageno);/根据页号获得进程页表引用位intgetPhyPageNo(intpageno);/根据页号获得对应物理页号45外页表项抽象设计451数据结构设计typedefstructOutPage/外页表项,大小为2BintiOutPageNo;/页号intiOutRealPage

36、No;/页框号intphyAddr;/物理地址OutPage;452基本操作voidsetOutPage()/进程外页表生成新页表;设置页号;对应物理地址;46页表基址寄存器抽象设计461数据结构设计typedefstruetPTBR/页表基地址寄存器抽象intiF;/页表起始地址intiM;/页表长度PTBR;462基本操作voidsetPtbr()/生成页表基地址设置页表基地址;设置页表长度;intgetiF()/获得进程页表基址返回页表基址;47程序状态字抽象设计471数据结构设计typedefstruetPSW/程序状态字抽象intiNumber;/当前运行指令编号intIF;/中断允

37、许标志,为1允许响应中断,否则关中断intiType;/此时运行状态,0表示用户态,1表示内核态PSW;472基本操作voidsetPSW(PSWpsw)/设置程序状态字,用于进程上下文切换设置当前运行指令编号设置中断允许标志,为1允许响应中断,否则关中断设置此时运行状态,0表示用户态,1表示内核态48驻留集抽象设计481数据结构设计typedefstruet/用于CLOCK算法的驻留集,数据结构用循环队列表示intptr;/当前指针指向的位置intfront;/队首标志intrear;/队尾标志int*base;/队列元素13CycleQueue;typedefstruet/用于FIFO的驻

38、留集,数据结构用顺序队列表示int*base;/驻留集基地址intrear;/驻留集尾指针intfront;/驻留集头指针MQueue;482基本操作intfStaySize()/获得驻留集当前长度返回尾指针-头指针;intenCycleQueue(intpageno)/进驻留集if(驻留集已经满)返回-1;else新页号进驻留集;尾指针+1;intdeCycleQueue()/出驻留集if(驻留集已经空)返回-1;else出驻留集;头指针+1;49内存抽象设计491数据结构设计typedefstructMemory/内存空间抽象Pagepage256;/8页大小的页表区,一页32B,共256

39、BMpagempage768;/24页大小的空闲区,共768BMemory;/共32页,1024B492基本操作voidsetPCBSpace(intaddr,intpid)/为进程分配内存空间if(内存空间未占用)进程占用内存空间;位示图置1;voidfreePCBSpace(intaddr,intpid)/为进程释放内存空间进程释放内存空间;位示图置0;410外存抽象设计4101数据结构设计typedefstructDisk/外存空间抽象OutPagedoutpage512;/16页大小的页表区,一页32B,共512BMpagempage1536;/48页大小的空闲区,共1536BDisk

40、;/共64页,2048B4102基本操作voidsetJOBSpace(intaddr)/为作业分配外存if(外存空间未占用)作业占用外存空间;位示图法置1;voidfreeJOBSpace(intaddr)/为作业释放外存作业释放内存空间;位示图置0;5 软件系统设计51系统结构511底层硬件抽象抽象设计中央处理器CPU模块、存储管理部件MMU模块、内存储器与外存储器模块。512功能模拟模拟作业生成、执行与结束。在作业执行过程中由系统向PCB池申请空间,创建进程,初始化进程的指令与页表等信息,当进程获取所需资源后进入就绪队列。如果进程获得CPU资源则进入运行态,这涉及到进程上下文切换,将CP

41、U的快表、页表基址寄存15器、程序状态字等寄存器的内容都切换成当前运行进程的状态。然后模拟进程发出页面请求,CPU将页面逻辑地址传送给MMU,MMU负责将逻辑页号与偏移地址分离,并搜索快表或者慢表获得该逻辑页号与物理页号的对应关系。如果没有则发出缺页异常,进入缺页异常处理程序,如果有则给出物理页号,进行物理页号与偏移地址的拼接,返回给CPU执行指令。缺页异常处理中在从外存获取逻辑页号与物理页号的对应关系后,不仅要加入慢表,也要加入快表,还涉及到页表项的标志位的更改。如果快表已满则根据先入先出算法进行替换,如果驻留集已满则根据LRU、CLOCK、FIFO三种页面替换算法进行页面替换。513模块整

42、合根据设计,抽象模块主要分为:CPU、PCB、MMU、PCB池、存储空间。CPU内存放当前运行的PCB的信息,以及实现对指令的操作;PCB直接代表进程,存放进程的信息;MMU进行虚存管理,包括地址转换与发出异常信息;PCB池初始化PCB分配的内存空间,以及释放PCB占用的空间。为方便整合程序,MMU模块将引用将异常处理程序,完成对页面的换入换出。作业生成模块嵌套进程创建模块,后备作业队列以及进程状态队列需要管控全局。CPU模块应获得当前执行进程的所有状态,MMU模块应获得当前CPU的状态,内存空间模块与外存空间模块应是全局变量,在作业生成时占用外存空间,在进程创建与页面调入时占用内存空间。同理

43、,当作业执行结束或者进程执行结束时都应当释放存储空间。写入文档和图形化界面的代码应当嵌入进程调度和页面替换的代码中。在缺页异常处理过程中,相应进程应进入等待态并使就绪态的进程进入运行态,要进行进程上下文切换,保护进程信息,这也涉及到进程状态队列的进出。大多数功能需要几个模块共同完成,因此在各个模块中都有相应的函数,因此导致大量代码冗余。设计之初的思路为尽可能的将功能细化,使每个函数实现简单的功能,但实际的代码编写无法完全达到这一要求,导致在模块组合时产生混乱。因此,将相关功能整合在抽象模块中,以方便使用;对代码尽可能的实现复用,减少代码冗余的现象;划分各模块功能,并对其有清楚的认识,在整合代码

44、时按照功能进行组合与调试。1#514系统结构图JT给虧而在内存I1.进琨給這刃进人嵌緒杰介也M迪W居Ajiidi颐接收控制执行韦益符物理忙址巡启论址汴问页面创便进出丄诫作业进理I-.:汝切换进即进人运行抠图5.1系统结构图1752系统类图与顺序图521系统类图A.CPU-cpch-cpt-hrclb-uPC:iat-cIH:inj-ctLhSize:intl-atPCBi):vuic坤:voidsetPtbrO:midetlLlSO:voidseLPCO:void姑曰仁RC;vu?dctlRO:i毗Ih(J:voidllearTlb(J:voidIcpu-ellL0:voidCulLo耳iLd

45、dr():vcsid-sulPJjysLu.WdrO:vy-d-?.i?iOff>ctA;Jdr(:v<i-d一sptJ_cigirAddr(j:vnid-eLKpnlPiji!;BGLRL(J:inL汕1肌计1旳削壮阳0:LIll-ui.RualPii«uNuCLiXK():;fll-Disk-WringrulFCBSpticul);vuid-rn?t?F;BSpfici?O:void卩訂r:voidrfreePCISpngeSiwce(:void"seL.'CiBSpjjce0:vuidftl?l:JDBS|jul:u0:vijid-niiTrcsr

46、yirpi:(J:旳pPCBPOOLRe;jtlyMuPue血_iQueue-LreateK;ll():void-hreeR:B(j:vgid*Blackourse):vu-id-WakCuurs&.O:void+pcbx<ainliO:void-knKefidyUu«'.iR0:vniriDeReadyQuujet):vcid*En>aiLQueue):veid-DvWiiitQdUUcO:vuidJOB-JQueue-ln:z.|n?>(:voidEnJobO:void-DvJobO;ril<<dfiretype»踰1已u日«da.Latypa»PTBRrJ<datavype»PIERTftieue疋MmQTy«da.Ta1ype»MPage<<datatype»Disk«d*tatype>?PCSpProID:nil-pPtiDiily:int-卩ProStfiri?:in?-pRunTirc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论