资源简介
实验二 存储管理
一、目的和要求
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
相关资源
- Dell PowerVault MD存储管理软件ISO
- 基本分页存储管理系统设计 课程设计
- 操作系统课程设计进程调度 存储管理
- 三种存储管理方式的地址换算过程
- 动态可变分区存储管理模拟系统
- 计算机操作系统 存储管理 FIFO LRU
- 请求分页存储管理模拟.c
- 操作系统 存储管理 实验报告
- 操作系统的课程设计、请求调页存储
- 段页式虚拟存储管理
- 操作系统存储管理页面置换算法(O
- 可变式分区存储管理 实验报告和源代
- 请求分页存储管理模拟实验
- 请求页式存储管理实验
- 北京邮电大学操作系统实验实验报告
- 操作系统 实验 模拟分页式虚拟存储管
- 请求分页存储管理系统设计与实现顾
- 设计一个可变式分区分配的存储管理
- 存储管理--可变分区管理 操作系统
- 操作系统实验报告+源代码 基本分页存
- 动态分区分配存储管理
- 实现请求页式存储管理模拟程序
- 基本分段存储管理系统的设计
- 模拟设计动态分区存储管理的分配与
- 基本段式存储管理的模拟实现
- 模拟设计段页式虚拟存储管理中地址
- 请求分页式存储管理
- 模拟设计段式存储管理中地址转换
- 虚拟存储器 操作系统 模拟分页式虚拟
- 动态分区存储管理方式的算法 最佳
评论
共有 条评论