- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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); //缺省所
您可能关注的文档
- 戴军熔-07年浙江省英语高考试题分析及启示.ppt
- 别做这些傻事.doc
- 别出心裁.ppt
- 制作启动U盘装系统.doc
- 打破吃新.ppt
- 系统总体设计说明书-V0.1.doc
- 操盘手与技术分析.doc
- 操盘精华荟萃.doc
- 改制上市业务流程图.doc
- 纠缠不休的环路补偿.doc
- 2024年全国各地化学中考真题汇编 专题7自然界的水含详解.docx
- 2024年全国各地化学中考真题汇编 专题4物质的分类微粒的性质含详解.docx
- 2024年全国各地化学中考真题汇编 专题17化学思想方法的应用含详解.docx
- 山东各市近三年(2022-2024)中考化学真题分类汇编专题8盐和化肥含详解.docx
- 山东各市近三年(2022-2024)中考化学真题分类汇编专题12 质量守恒定律和化学方程式.docx
- 2024-2025学年上海市崇明区九校联考八年级上学期期中考试化学试卷含答案.docx
- 2024年全国各地化学中考真题汇编 专题11金属和金属资源含详解.docx
- 2024-2025学年上海市八年级上学期化学教材同步知识清单主题3物质的组成与结构含答案.docx
- 山东各市近三年(2022-2024)中考化学真题分类汇编专题19化学计算题含详解.docx
- 2024年全国各地化学中考真题汇编 专题13酸和碱含详解.docx
文档评论(0)