OS磁盘管理算法
一、算法
#include
using namespace std;
#define page 32
#define pageframe 1
const int maxn = 1000;
enum status{Ready,Running,Block,Finish};
//先来先服务
int flag[page];
int process[page];//页号P对应的块号
int page_iddx[page];///对应的地址
int use_size = 0;//已经使用的内存
int pro_num=0;//进程的数目
void init()
{
for(int i=0;i<=page;++i)
{
flag[i]=0;
process[i] = 1000;/// 开始初始化时为不存在的页号
}
}
struct P
{
string s;/// 进程名字
string status; /// 进程当前的状态
int arrive_time; /// 进程到达的时间
int serve_time;/// 服务时间
int remain_time;//剩余时间
int size;//进程大小
int p;//占用内存块数目
}pcb[maxn];
bool cmp(P a,P b)///从小到大
{
return a.arrive_timepage||use_size>page)/// 判断是否越界
{
cout<<"越界"<=sum && process[j]<(sum+pcb[i].p))
{
process[j] = 1000;
--use_size;
}
}
put();
/// 运行完成输出运行完成
cout<<"-------------------------------"<>pro_num;
init();/// 初始化
/// memset(flag,0,sizeof(flag));
for (int i=1;i<=pro_num;++i)/// 进程一般从1开始
{
pcb[i].status = "Ready";/// 开始都处于就绪状态
cout<<"请输入第"<>pcb[i].s;
cout<<"请输入第"<>pcb[i].arrive_time;
cout<<"请输入第"<>pcb[i].serve_time;
pcb[i].remain_time = pcb[i].serve_time;/// 剩余时间
cout<<"请输入第"<>pcb[i].size;
}
sort(pcb+1,pcb+1+pro_num,cmp);/// 先来先服务,进行排序
run();
return 0;
}
二、结果