文档介绍:题目二:,首先假定内存被分为2048块(块和页大小一致),利用位式图中该位的状态表示状况,判断它内存的块是否被占用,0表示内存块为空闲状态,新作业可申请该块;1表示内存被占用,新的作业不能占用该块。该位示图使用32字长的字表示,故需要64个这样的字。位示图存放在文件中,每行表示32字长的字,共64行。块和页的大小为512字节。程序中使用结构体node来存放作业的相关信息(加入内存的进程名,新作业的申请内存的大小(单位为字节),分配的块数,分配块在内存中的位置,最后块的碎片的大小(单位为字节));使用sum来记录当前的空闲的内存块数。该程序在显示完内存的分配之后,使用switch—case来为用户提供可供是实现的功能。用户选择不同的功能之后,程序会自动进入到不同的实现模块中,用户再依次根据程序的提示进行操作。模拟页式存储中内存的分配和管理这个程序划分为了以下几个模块:显示当前的内存分配的位示图,添加新的作业,完成作业(将原来分配给用户的内存空间回收),显示作业的内存分配的页表等功能。在添加新的作业的这个功能中,当用户申请的作业的存放空间大于当前内存拥有的最大的内存空间,则该程序不给予分配。在完成作业的功能中,程序将原来分配给作业的内存空间按照存放在结构体中的内存空间的链表回收。显示位示图的功能就是将现在的位示图显示到屏幕上。显示作业的相关信息就是将存放该作业的节点中包括的所有内容显示出来。:typedefstructnode{charjobname[20];//申请内存空间的进程名intnum;//申请空间的大小(字节数)intblock;//分配的块数intnums[PAGES];//保存分配的块号intslice;//保存碎片大小structnode*next;}jobs;用来存放用户作业链表的头节点的结构体指针:jobs*head;用来存放当前的内存中剩余的空间数:intsum;:readdata(),strings,intiagetline(in,s)!=NULLGetline(in,s)!=NULListringstreamsin(s)(ia)(b):choose():add()开始输入要添加的作业的进程名输入该作业需要的内存空间大小numnum%PAGESIZE==0是block