资源简介
实验二 存储管理
一、目的和要求
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
相关资源
- 模拟段页式虚拟存储管理中地址转换
- 模拟首次适应动态分区存储管理方案
- 操作系统课程设计实现可变分区存储
- 第一美国银行采用NetApp统一存储简化
- 如何通过VMware虚拟桌面及NetApp存储管
- 建立在Sun平台上的分层式存储管理系
- IBM System Storage DS4000存储管理器拷贝服
- 操作系统实现请求分页存储管理页面
- 编程演示三种存储管理方式的地址换
- 操作系统课程设计报告 分页存储管理
- 操作系统存储管理LRU
- 操作系统文件管理,设备管理,进程
- 操作系统课设 分页式存储管理内含
- 模拟设计页式存储管理的分配与回收
- 动态分区分配存储管理-操作系统课程
- 模拟设计段式虚拟存储管理中地址转
- Netapp存储管理系统中文版
- 嵌入式学习成长记
- 操作系统课程设计-段页式存储管理的
- 操作系统模拟分页式存储管理中硬件
- 操作系统虚拟分页存储管理,LRU页面
- 东华大学 操作系统实验 存储管理 含
- 编写程序实现虚拟存储管理中OPTFIFO
- 可变分区存储管理[附答案]
- 操作系统-基本分页存储管理(内有代
- 编程演示三种存储管理方式的地址换
- 模拟设计动态分区存储管理的分配与
- 请求调页存储管理方式课程设计LRU
- 模拟段式存储管理的分配与回收操作
- 存储管理实验首次适应算法循环首次
评论
共有 条评论