资源简介

实验二 存储管理 一、目的和要求 1. 实验目的 (1)掌握时间片轮换的进程调度算法; (2)掌握带优先级的进程调度算法; (3)选用面向对象的编程方法。 2、实验学时:2学时 3、实验要求 (1)自定义PCB的数据结构; (2)使用带优先级的时间片轮转法调度进程,每运行一个时间片,优先级减半。 (3)命令集 A)create 随机创建进程,进程的优先级与所需要的时间片随机决定; B)ps 查看当前进程状态 C)sleep 命令将进程挂起 D)kill 命令杀死进程 E)quit命令退出 二、实验内容 根据教师指定的实验课题,完成设计、编码、测试工作。

资源截图

代码片段和文件信息

#include 
#include 
#include
#include
#include 
using namespace std;

int YeCount=100;   //内存物理块数,0未使用,1已使用   
int Use[100]={0};   //={0}
int UnUse=100;

class Course{
public:
void Init();
void AssignYe(Course *TempC);
void FreeYe(Course *TempC);
void PrintResult(Course *TempC);
void ShowCourse();

string name;
    int number;
int Ye[100];     //由0开始
    Course *next;
};


void Course::Init()
{
srand((unsigned)time(NULL));     //用系统时间当种子,对随机函数初始化
int c=rand()%50+1;               //判断已用物理块数

for (int i=1;i<=c;i++)
{
int m=rand()%100;               //不包括100以内的随机数
Use[m]=1;
UnUse--;
}
}

void Course::AssignYe(Course *TempC)
{
string CourseName;
int YeNumberm;
Course *TempP;
bool flag;
m=0;
flag=true;

cout<<“请输入进程名字:“;
cin>>CourseName;
cout<<“请输入页数:“;
cin>>YeNumber;

TempP=new Course;
TempP->name=CourseName;
TempP->number=YeNumber;
    for (int i=0;i {
if(Use[i]==0)
{
Use[i]=1;
TempP->Ye[m]=i;
m++;
UnUse--;
YeNumber--;
if((UnUse==0)&&(YeNumber!=0))
{
cout<<“申请的页数已超过可分配的页数!“<<“\n“;
flag=false;
break;
}
if(YeNumber==0)
break;
}
}
if(flag==true)
{
if((TempC!=NULL)&&(TempC->next==NULL))
{
TempC->next=new Course;
*TempC->next=*TempP;
TempC->next->next=NULL;
cout<<“申请进程成功!“<<“\n“;
}
else
{
while(TempC->next!=NULL)
{
TempC=TempC->next;
}
TempC->next=new Course;
*TempC->next=*TempP;
TempC->next->next=NULL;
cout<<“申请进程成功!“<<“\n“;
}
}
}

void Course::FreeYe(Course *TempC)
{
string CourseName;
int m;
Course *TempP*HeadP;
bool flag=false;
m=1;

cout<<“请输入释放进程名字:“;
cin>>CourseName;

HeadP=TempC;
TempP=TempC;
TempC=TempC->next;
while(TempC!=NULL)
{
if (TempC->name==CourseName)
{
if (HeadP!=TempP)
{
TempP->next=TempC->next;
UnUse=UnUse+TempC->number;
for(int i=0;inumber;i++)
Use[TempC->Ye[i]]=0;
delete TempC;
flag=true;
break;
}
else
{
TempP->next=TempC->next;
UnUse=UnUse+TempC->number;
for(int i=0;inumber;i++)
Use[TempC->Ye[i]]=0;
delete TempC;
flag=true;
break;
}
}
TempP=TempC;
TempC=TempC->next;
}
if(flag==false)
{
cout<<“无法释放进程!“<<“\n“;
}
else
cout<<“释放进程成功!“<<“\n“;
}

//输出内存物理块分配情况
void Course::PrintResult(Course *TempC)   
{   
int i=0;
cout<<“\n内存物理块分配情况:\n“;
Course *TempP;
TempP=TempC->next;
cout<<“各进程信息:“;
cout<<“\n进程名称\t进程页数\t所用物理块\n“;
while(TempP)
{
cout<name<<“\t\t“<number<<“\t\t“;
for(i=0;inumber;i++)
cout<Ye[i]<<“ “;
cout<<“\n“;
TempP=TempP->next;
}
}

//显示内存块使用情况   
void Course::ShowCourse()
{
int i=0;
cout<<“\n内存块使用情况:\n“;
for(i=0;i {
cout< if(i%10==9)
cout<<“\n“;
}
co

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       4449  2011-12-03 16:06  存储管理.cpp

     文件      86528  2012-01-15 12:16  存储管理——基本分页存储管理.doc

----------- ---------  ---------- -----  ----

                90977                    2


评论

共有 条评论