>pcb_number;Р?}Р?cout<<("\n ID priority CPUtime ALLtime State\n");Р for(i=0;i >pcb_number;Р?}Р?cout<<("\n ID priority CPUtime ALLtime State\n");Р for(i=0;i

全文预览

操作系统课程设计-进程调度算法优先级调度

上传者:业精于勤 |  格式:doc  |  页数:27 |  大小:0KB

文档介绍
umber of the PCB to be started:");Р cin>>pcb_number;Р?}Р?cout<<("\n ID priority CPUtime ALLtime State\n");Р for(i=0;i<pcb_number;i++)Р insert();Р //insert(pcb_number);Р */ Р?cout<<"就绪队列初始化成功!"<<endl;Р?::print_init (ready_queue);Р?cout<<endl;Р}Р//调用destory(),将进程插入阻塞队列Рvoid block(PCB *pcb)Р{//将pcb插入到阻塞队列Р?pcb->State =2; //将PCB所指进程的状态设置为阻塞Р?pcb->CPUtime -=2; //设进程执行半个时间片单位后被阻塞Р//?pcb->next =NULL; Р?print(pcb);Р?cout<<(" 变迁2:running->blocked\n");Р?//将pcb插入到阻塞队列Р?//插入方式参考唤醒条件Р?//因为是随机唤醒一个进程,所以简单的把它放置在阻塞队列的头部Р?pcb->next =block_queue->next ;Р?block_queue->next =pcb;Р}Рvoid update(PCB *pcb)Р{//就绪队列中进程的优先级均增加1Р?PCB *temp=ready_queue->next ;Р?while(temp && temp->next )Р?{//就绪队列的最后一个是闲逛进程Р temp->priority ++;Р temp=temp->next ;Р?}Р}Рvoid run_priority(PCB *pcb)Р{Р?//如果pcb是闲逛进程,则不作处理,再次放入就绪队列ready_queue

收藏

分享

举报
下载此文档