操作系统磁盘管理算法


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;
}

二、结果