void roundRobin(int map[N][5],int proc_count,char filename[]) { QUEUE q; int cur_time=0; int new_proc[N]; int i,k,quantum_used,p,temp,c,cpu_util=0; int blocked[N]={-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}; int turn_around[N]; int proc_added=0; q.rear=q.front=-1; FILE *fp=fopen(filename,"w"); fclose(fp); while(1) { int process_state[N]={0}; k=0; for(i=0;i<proc_count;i++) { if(cur_time==map[i][3]) { new_proc[k++]=i; proc_added++; } } for(i=0;i<proc_count;i++) { if(blocked[i]==cur_time) { new_proc[k++]=i; blocked[i]=-1; } } sort_proc(new_proc,k); for(i=0;i<k;i++) insertQ(&q,new_proc[i]); if(q.rear!=q.front) { p=peekFront(q); process_state[p]=1; cpu_util++; quantum_used=(quantum_used+1)%2; map[p][4]++; if(map[p][4]==map[p][1]) { removeQ(&q); quantum_used=0; turn_around[p]=cur_time; } if(quantum_used==0 && map[p][4]!=map[p][1] && map[p][4]!=(map[p][1])/2) { p=removeQ(&q); quantum_used=0; insertQ(&q,p); } if(map[p][4]==(map[p][1])/2) { p=removeQ(&q); quantum_used=0; blocked[p]=map[p][2]+cur_time+1; } } temp=q.front; while(temp!=q.rear) { temp=(temp+1)%N; if(q.arr[temp]!=p) process_state[q.arr[temp]]=2; } for(i=0;i<proc_count;i++) { if(blocked[i]!=-1 && i!=p) { process_state[i]=3; } } printProcessStateToFile(filename,process_state,proc_count,cur_time); c=checkBlocked(blocked,proc_count); if(q.front==q.rear && c && proc_added==proc_count) break; cur_time++; p=-1; } fp=fopen(filename,"a"); fprintf(fp,"\n"); fprintf(fp,"Finishing Time : %d\n",cur_time); fprintf(fp,"CPU utilization : %3.2f\n",(float)cpu_util/(cur_time+1)); for(i=0;i<proc_count;i++) { temp=turn_around[i]-map[i][3]+1; fprintf(fp,"Turnaround process %d : %d\n",i,temp); } fclose(fp); }
void shortestRemainingJobFirst(int map[N][5],int proc_count,char filename[]) { int i,cur_time=0,k=0,j,min,temp; int ready[N],c; int blocked[N]={-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}; int cpu_util=0; int turn_around[N]; int proc_added=0; FILE *fp=fopen(filename,"w"); fclose(fp); for(i=0;i<proc_count;i++) { map[i][4]=map[i][1]; } while(1) { int process_state[N]={0}; for(i=0;i<proc_count;i++) { if(cur_time==map[i][3]) { ready[k++]=i; proc_added++; } } for(i=0;i<proc_count;i++) { if(blocked[i]==cur_time) { ready[k++]=i; blocked[i]=-1; } } if(k>0) { min=ready[0]; j=0; for(i=0;i<k;i++) { if(map[ready[i]][4]<map[min][4] || (map[ready[i]][4]==map[min][4] && ready[i]<min)) { min=ready[i]; j=i; } } temp=ready[k-1]; ready[k-1]=ready[j]; ready[j]=temp; process_state[min]=1; map[min][4]--; cpu_util++; if(map[min][4]==0) { k--; turn_around[min]=cur_time; } if(map[min][4]==(map[min][1])/2) { blocked[min]=map[min][2]+cur_time+1; k--; } } for(i=0;i<k;i++) { if(ready[i]!=min) process_state[ready[i]]=2; } for(i=0;i<proc_count;i++) { if(blocked[i]!=-1 && i!=min) process_state[i]=3; } printProcessStateToFile(filename,process_state,proc_count,cur_time); c=checkBlocked(blocked,proc_count); if(k==0 && c && proc_added==proc_count) break; cur_time++; min=-1; } fp=fopen(filename,"a"); fprintf(fp,"\n"); fprintf(fp,"Finishing Time : %d\n",cur_time); fprintf(fp,"CPU utilization : %3.2f\n",(float)cpu_util/(cur_time+1)); for(i=0;i<proc_count;i++) { temp=turn_around[i]-map[i][3]+1; fprintf(fp,"Turnaround process %d : %d\n",i,temp); } fclose(fp); }
ProviderName ProviderRegistrar::findProvider(const ProviderName & providerName, Boolean test) { // CIMObjectPath objectName = providerName.getObjectName(); Uint32 flags = providerName.getCapabilitiesMask(); // validate arguments /* if(objectName.getNameSpace().isNull() || objectName.getClassName().isNull()) { throw Exception("Invalid argument."); } */ CIMInstance provider; CIMInstance providerModule; ProviderName temp; Boolean hasNoQuery; switch (flags) { case ProviderType_INSTANCE: if (_prm->lookupInstanceProvider(providerName.getNameSpace(),providerName.getClassName(), provider,providerModule,0)) { if (test) checkBlocked(providerModule); return ProviderName( provider.getProperty(provider.findProperty ("Name")).getValue ().toString (), providerModule.getProperty(providerModule.findProperty ("Location")).getValue().toString(), providerModule.getProperty(providerModule.findProperty ("InterfaceType")).getValue().toString(), ProviderType::INSTANCE); } break; case ProviderType_ASSOCIATION: if (_prm->lookupInstanceProvider(providerName.getNameSpace(),providerName.getClassName(), provider,providerModule,1)) { if (test) checkBlocked(providerModule); return ProviderName( provider.getProperty(provider.findProperty ("Name")).getValue ().toString (), providerModule.getProperty(providerModule.findProperty ("Location")).getValue().toString(), providerModule.getProperty(providerModule.findProperty ("InterfaceType")).getValue().toString(), ProviderType::ASSOCIATION); } break; case ProviderType_QUERY: if (_prm->lookupInstanceProvider(providerName.getNameSpace(),providerName.getClassName(), provider,providerModule,0,&hasNoQuery)) { if (test) checkBlocked(providerModule); return ProviderName( provider.getProperty(provider.findProperty ("Name")).getValue ().toString (), providerModule.getProperty(providerModule.findProperty ("Location")).getValue().toString(), providerModule.getProperty(providerModule.findProperty ("InterfaceType")).getValue().toString(), ProviderType::INSTANCE); } break; case ProviderType_METHOD: if (_prm->lookupMethodProvider(providerName.getNameSpace(),providerName.getClassName(), providerName.getMethodName(),provider,providerModule)) { if (test) checkBlocked(providerModule); return ProviderName( provider.getProperty(provider.findProperty ("Name")).getValue ().toString (), providerModule.getProperty(providerModule.findProperty ("Location")).getValue().toString(), providerModule.getProperty(providerModule.findProperty ("InterfaceType")).getValue().toString(), ProviderType::METHOD); } break; default: CIMObjectPath objectName(String::EMPTY, providerName.getNameSpace(),providerName.getClassName()); temp = _lookupProvider(objectName); } return(temp); }