EXPERIMENT-1 AIM: Write a program to illustrate First Come First Serve Scheduling algorithm. Program: #include<iostream> using namespace std; int main() { int n,bt[20],wt[20],tat[20],avwt=0,avtat=0,i,j; cout<<"Enter total number of processes(maximum 20):"; cin>>n; cout<<"\nEnter Process Burst Time\n"; for(i=0;i<n;i++) { cout<<"P["<<i+1<<"]:"; cin>>bt[i]; } wt[0]=0; for(i=1;i<n;i++) { wt[i]=0; for(j=0;j<i;j++) wt[i]+=bt[j]; } cout<<"\nProcess\t\tBurst Time\tWaiting Time\tTurnaround Time"; for(i=0;i<n;i++) { tat[i]=bt[i]+wt[i]; avwt+=wt[i]; avtat+=tat[i]; cout<<"\nP["<<i+1<<"]"<<"\t\t"<<bt[i]<<"\t\t"<<wt[i]<<"\t\t"<<tat[i]; } avwt/=i; avtat/=i; cout<<"\n\nAverage Waiting Time:"<<avwt; cout<<"\nAverage Turnaround Time:"<<avtat; return 0; } OUTPUT: EXPERIMENT-2 AIM: Write a program to illustrate Shortest Job First Scheduling algorithm. Program: #include<iostream> using namespace std; int main(){ int bt[20],p[20],wt[20],tat[20],pr[20],i,j,n,total=0,pos,temp,avg_wt,avg_tat; cout<<"Enter Total Number of Process:"; cin>>n; cout<<"\nEnter Burst Time and Priority\n"; for(i=0;i<n;i++) { cout<<"\nP["<<i+1<<"]\n"; cout<<"Burst Time:"; cin>>bt[i]; cout<<"Priority:"; cin>>pr[i]; p[i]=i+1; } for(i=0;i<n;i++) { pos=i; for(j=i+1;j<n;j++) { if(pr[j]<pr[pos]) pos=j; } temp=pr[i]; pr[i]=pr[pos]; pr[pos]=temp; temp=bt[i]; bt[i]=bt[pos]; bt[pos]=temp; temp=p[i]; p[i]=p[pos]; p[pos]=temp; } wt[0]=0; for(i=1;i<n;i++) { wt[i]=0; for(j=0;j<i;j++) wt[i]+=bt[j]; total+=wt[i]; } avg_wt=total/n; total=0; cout<<"\nProcess\t Burst Time \tWaiting Time\tTurnaround Time"; } for(i=0;i<n;i++) { tat[i]=bt[i]+wt[i]; total+=tat[i]; cout<<"\nP["<<p[i]<<"]\t\t "<<bt[i]<<"\t\t "<<wt[i]<<"\t\t\t"<<tat[i]; } avg_tat=total/n; cout<<"\n\nAverage Waiting Time="<<avg_wt; cout<<"\nAverage Turnaround Time="<<avg_tat; return 0; OUTPUT: EXPERIMENT-3 AIM: Write a program to illustrate Priority Scheduling algorithm. Program: #include<iostream> using namespace std; int main() { int bt[20],p[20],wt[20],tat[20],pr[20],i,j,n,total=0,pos,temp,avg_wt,avg_tat; cout<<"Enter Total Number of Process:"; cin>>n; cout<<"\nEnter Burst Time and Priority\n"; for(i=0;i<n;i++) { cout<<"\nP["<<i+1<<"]\n"; cout<<"Burst Time:"; cin>>bt[i]; cout<<"Priority:"; cin>>pr[i]; p[i]=i+1; } for(i=0;i<n;i++) { pos=i; for(j=i+1;j<n;j++) { if(pr[j]<pr[pos]) pos=j; } temp=pr[i]; pr[i]=pr[pos]; pr[pos]=temp; temp=bt[i]; bt[i]=bt[pos]; bt[pos]=temp; temp=p[i]; p[i]=p[pos]; p[pos]=temp; } wt[0]=0; for(i=1;i<n;i++) { wt[i]=0; for(j=0;j<i;j++) wt[i]+=bt[j]; total+=wt[i]; } avg_wt=total/n; total=0; cout<<"\nProcess\t Burst Time \tWaiting Time\tTurnaround Time"; for(i=0;i<n;i++) { } tat[i]=bt[i]+wt[i]; total+=tat[i]; cout<<"\nP["<<p[i]<<"]\t\t "<<bt[i]<<"\t\t "<<wt[i]<<"\t\t\t"<<tat[i]; } avg_tat=total/n; cout<<"\n\nAverage Waiting Time="<<avg_wt; cout<<"\nAverage Turnaround Time="<<avg_tat; return 0; OUTPUT: EXPERIMENT-4 AIM: Write a program to illustrate Round Robin Scheduling algorithm. Program: #include<iostream> #include<conio.h> using namespace std; int main() { int wtime[10],btime[10],rtime[10],num,quantum,total; cout<<"Enter number of processes(MAX 10): "; cin>>num; cout<<"Enter burst time"; for(int i=0;i<num;i++) { cout<<"\nP["<<i+1<<"]: "; cin>>btime[i]; rtime[i] = btime[i]; wtime[i]=0; } cout<<"\n\nEnter quantum: "; cin>>quantum; int rp = num; int i=0; int time=0; cout<<"0"; wtime[0]=0; while(rp!=0) { if(rtime[i]>quantum) { rtime[i]=rtime[i]-quantum; cout<<" | P["<<i+1<<"] | "; time+=quantum; cout<<time; } else if(rtime[i]<=quantum && rtime[i]>0) {time+=rtime[i]; rtime[i]=rtime[i]-rtime[i]; cout<<" | P["<<i+1<<"] | "; rp--; cout<<time; } i++; if(i==num) { i=0; } } getch(); return 0; } OUTPUT: EXPERIMENT-5 AIM: (a) Write a program to illustrate Least Recent Used Page replacement algorithm. Program: #include <iostream> using namespace std; int min(int counter[],int nFrames) { int minimum = counter[0]; int pos = 0; for(int i=0;i<nFrames;i++) { if(minimum > counter[i]) { minimum = counter[i]; pos = i; } } return pos; } int main() { int pageString[50],n,frames[10],counter[10],recent = 0; int pageFault = 0,nFrames; cout<<"Enter the number of pages: "; cin>>n; cout<<"Enter the page reference string: "; for(int i=0;i<n;i++) cin>>pageString[i]; cout<<"\nEnter the number of frames: "; cin>>nFrames; for(int i=0;i<nFrames;i++) { frames[i] = 0; counter[i] = 0; } for(int i=0;i<n;i++) { int flag =0; for(int j=0;j<nFrames;j++) { if(frames[j] == pageString[i]) {flag=1; counter[j] = recent++; break; } } if(flag == 0) { for(int j=0;j<nFrames;j++) {if(frames[j] == 0) { frames[j] = pageString[i]; counter[j] = recent++; flag=1; pageFault++; break; } } } if(flag == 0){ int PositionToreplace = min(counter,nFrames); frames[PositionToreplace] = pageString[i]; counter[PositionToreplace] = recent++; pageFault++; } cout<<endl; for(int j=0;j<nFrames;j++) { cout<<frames[j]<<" "; } } } cout<<"\nPage Fault: "<<pageFault; return 0; OUTPUT: AIM : (b) Write a program to illustrate First In First Out Page replacement algorithm. Program: #include <iostream> using namespace std; int getReplaceposition(int counter[],int n) { int max = counter[0]; int pos=0; for(int i=0;i<n;i++) { if(counter[i]>max) { pos=i; max = counter[i]; } } return pos; } int main() { int pages[20],frames[10],counter[10]; int nPages,nFrames,pageFault=0; cout<<"Enter the number of pages(MAX 20): "; cin>>nPages; cout<<"Enter the number of frames(MAX 10): "; cin>>nFrames; cout<<"Enter the Page reference string: "; for(int i=0;i<nPages;i++){ cin>>pages[i]; } for(int i=0;i<nFrames;i++) { frames[i] = 0; counter[i] = 0; } for(int i=0;i<nPages;i++) {int flag =0; for(int j=0;j<nFrames;j++) { if(frames[j] == pages[i]) {flag=1; break; } } if(flag == 0) { pageFault++; for(int j=0;j<nFrames;j++) { if(frames[j] == 0) { frames[j] = pages[i]; flag=1; counter[j]++; break; } } } } if(flag == 0) { int pos = getReplaceposition(counter,nFrames); frames[pos] = pages[i]; counter[pos] = 1; for(int k=0;k<nFrames;k++) { if(k!=pos) counter[k]++; } } cout<<endl; for(int j=0;j<nFrames;j++) { cout<<frames[j]<<" "; } } cout<<"\nPage Fault: "<<pageFault; return 0; OUTPUT: AIM: (c) Write a program to illustrate Optimal Page replacement algorithm. Program: #include<iostream> using namespace std; #include<conio.h> int main() { int nop,nof,page[20],i,count=0; cout<<"\nEnter the No. of Pages:"; cin>>nop; cout<<"\n Enter the Reference String:"; for(i=0;i<nop;i++) { cout<<"\t"; cin>>page[i]; } cout<<"\n Enter the No of frames:-"; cin>>nof; int frame[nof],fcount[nof]; for(i=0;i<nof;i++) { frame[i]=-1; fcount[i]=0; } i=0; while(i<nop) { int j=0,flag=0; while(j<nof) { if(page[i]==frame[j]){ flag=1; } j++; } j=0; cout<<"\n"; cout<<"\t"<<page[i]<<"-->"; if(flag==0) { if(i>=nof) { int max=0,k=0; while(k<nof) { int dist=0,j1=i+1; while(j1<nop) { if(frame[k]!=page[j1]) dist++; else { break; } j1++; } fcount[k]=dist; k++; } k=0; while(k<nof-1) { if(fcount[max]<fcount[k+1]) max=k+1; k++; } frame[max]=page[i]; } else { frame[i%nof]=page[i]; } count++; while(j<nof) { cout<<"\t|"<<frame[j]<<"|"; j++; } } i++; } cout<<"\n"; cout<<"\n\tPage Fault is:"<<count; getch(); return 0; } OUTPUT: EXPERIMENT-6 AIM: Write a program to illustrate First Fit Memory Management. Program: #include<iostream> #include<conio.h> using namespace std; int main(){ int num_blocks,num_files,blocks[10],files[10],fragment[10],filesAl[10]; int i=0,j=0; for(i=0;i<10;i++) { fragment[i]=1; filesAl[i]=0; } cout<<"\nEnter the No. of Blocks: ";cin>>num_blocks; cout<<"\nEnter the No. of Files: ";cin>>num_files; cout<<"\nEnter the sizes of blocks "; for(i=0;i<num_blocks;i++) { cout<<"\nBlock["<<i+1<<"]: "; cin>>blocks[i]; } cout<<"\nEnter the sizes of files "; for(i=0;i<num_files;i++) { cout<<"\nFile["<<i+1<<"]: "; cin>>files[i]; } for(i=0;i<num_files;i++) { for(j=0;j<num_blocks;j++) { if(files[i]<=blocks[j]) { blocks[j]=blocks[j]-files[i]; if(blocks[j]!=0) { fragment[j]++; } filesAl[i]=1; break; } } } cout<<"\nBLOCKS\tREMAIN\tFRAGMENTS"; for(i=0;i<num_blocks;i++) cout<<endl<<i+1<<"\t"<<blocks[i]<<"\t"<<fragment[i]; cout<<"\n\nFiles which are not allcoated memory \n"; for(i=0;i<num_files;i++) { if(filesAl[i]==0) { cout<<"\nFile "<<i+1; } } getch(); return 0; } OUTPUT: EXPERIMENT-7 AIM: Write a program to illustrate Best Fit Memory Management. Program: #include <iostream> using namespace std; int main() { int nBlocks,nProcess,blockSize[20],processSize[20]; cout<<" Enter the number of blocks: "; cin>>nBlocks; cout<<" Enter the number of processes: "; cin>>nProcess; cout<<" Enter the size of "<<nBlocks<<" blocks: "; for(int i=0;i<nBlocks;i++) cin>>blockSize[i]; cout<<" Enter the size of "<<nProcess<<" processes: "; for(int i=0;i<nProcess;i++) cin>>processSize[i]; for(int i=0;i<nProcess;i++) { int min = 9999; bool flag = false; int pos=0; for(int j=0;j<nBlocks;j++) { if(min > blockSize[j] && processSize[i]<=blockSize[j]) { min = blockSize[j]; flag = true; pos = j; } } if(flag) { blockSize[pos] = blockSize[pos] - processSize[i]; cout<<"\n\n Process "<<i+1<<" is allocated to Block "<<pos+1; } else { cout<<"\n\n Process "<<i+1<<" cannot be allocated"; } cout<<"\n Remaining Block size\n"; for(int j=0;j<nBlocks;j++) cout<<" "<<blockSize[j]; } return 0; } OUTPUT: EXPERIMENT-8 AIM: Write a program to illustrate Worst Fit Memory Management. Program: #include <iostream> using namespace std; int main() { int nBlocks,nProcess,blockSize[20],processSize[20]; cout<<" Enter the number of blocks: "; cin>>nBlocks; cout<<" Enter the number of processes: "; cin>>nProcess; cout<<" Enter the size of "<<nBlocks<<" blocks: "; for(int i=0;i<nBlocks;i++) cin>>blockSize[i]; cout<<" Enter the size of "<<nProcess<<" processes: "; for(int i=0;i<nProcess;i++) cin>>processSize[i]; for(int i=0;i<nProcess;i++) { int max = blockSize[0]; int pos = 0; for(int j=0;j<nBlocks;j++) if(max < blockSize[j]) { max = blockSize[j]; pos = j; } if(max >= processSize[i]) { cout<<"\nProcess "<<i+1<<" is allocated to block "<<pos+1; blockSize[pos] = blockSize[pos]-processSize[i]; } else{ cout<<"\nProcess "<<i+1<<" can't be allocated"; } } return 0; } OUTPUT: