操作系统的存储管理方式.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统的存储管理方式.doc

操作系统 实验报告 实验名称: 操作系统的存储管理方式 班 级: 姓 名: 学 号: 类 型: 实验地点: 日 期: 一、实验目的: 动态测试WINDOWS2000/XP系统内存 二、实验环境: PC机一台(VC、C、VB等编程环境) 三、实验内容和要求: 1.了解WINDOWS 用户进程地址空间分布、系统地址空间分布、WINDOWS中用户空间内存分配方式(以页为单位的虚拟内存分配方法)、WINDOWS的内存保护机制。 四、实验步骤: #includeiostream #includecstring #includectime #includewindows.h using namespace std; const int MM_SIZE=100; //内存块数 const int ROW=10; //绘制内存行数 const int COL=10; //绘制内存列数 const int NEME_LEN=10; //名字长度 const int WAITTIME=2000; //等待时间 int UsedNum=0; //当前已占用的内存块数 int FreeNum=MM_SIZE; //当前空闲的内存块数 int ProCnt=0; //当前用户进程数 int NowID=1; //当前分配的进程编号 int MM[MM_SIZE]; //Main Memony //0 - 内存块未被使用 //-1 - 内存块在初始化时已被系统占用 //k - 内存块已被分配给pID=k 的用户进程 /*进程Obj*/ class PROCESS { public: PROCESS():next(0){} //构造函数重载,用于构造队列队头 PROCESS(char* Name,int pN):PageNum(pN),next(0) { pName=new char[NEME_LEN]; strcpy(pName,Name); PageTable=new int[MM_SIZE]; for(int i=0;iMM_SIZE;i++) PageTable[i]=-1; pID=NowID++; } ~PROCESS() { delete pName; delete PageTable; } PROCESS* next; //指向下一个进程 char* GetpName(void)const {return pName;} //获取进程名 int GetpID(void)const {return pID;} //获取进程编号 int GetPageNum(void)const {return PageNum;} //获取进程所需页数 void UnionTable(int i,int j); //关联页号i 与块号j(创建页表) void PrintPageTable(void); //打印页表 protected: char* pName; //进程名 int pID; //进程编号 int PageNum; //进程所需页数 int* PageTable; //页表 }; PROCESS* ProLinkHead=new PROCESS; //申请进程队列队头空间 void PROCESS::UnionTable(int i,int j) { PageTable[i]=j; return; } void PROCESS::PrintPageTable(void) { cout PAGETABLE (页表)endl; cout 页号ID 块号ID#endl; for(int i=0;iMM_SIZE;i++) if(PageTable[i]!=-1) printf( %-2d %-2d\n,i,PageTable[i]); coutendl; return; } void Initial_MM(void); //初始化 void Menu(void); //菜单 void CheckMM(void); //查看内存状态 void PrintProList(void); //打印当前用户进程列表 void CheckPro(void); //查看进程状态 void CreatePro(void); //创建新用户进程 void DelPro(void); //删除用户进程 /*主函数*/ int main(void) { srand(time(0)); Initial_MM(); Menu(); return 0; } /*初始化内存状态*/ void Initial_MM(void) { memset(MM,0,sizeof(int)*MM_SIZE); //缺省所

文档评论(0)

zzqky + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档