Aim: Write A Program To Implement Process Creation Program
Aim: Write A Program To Implement Process Creation Program
#include<stdio.h> #include<conio.h> void main() { FILE *fp1, *fp2, *fp3; char ch; clrscr(); fp1 = fopen( "abc.txt" , "r"); fp2 = fopen( "xyz.txt" , "w"); printf("\n\n\nCONTENTS OF THE SOURCE ARE: "); while(!feof(fp1)) { ch = fgetc(fp1); fputc(ch, fp2); fputc(ch, stdout); } fclose(fp1); fclose(fp2); fp3 = fopen("xyz.txt", "r"); printf("\n\n\nFILE COPYING OPERATION SUCCESSFUL "); printf("\n\n\nCONTENTS OF DESTINATION ARE: "); while(!feof(fp3)) fputc(fgetc(fp3), stdout); getch(); }
OUTPUT:
CONTENTS OF THE SOURCE ARE : UNIX IS THE SECOND BEST O.S. FILE COPYING OPERATION SUCCESSFUL CONTENTS OF DESTINATION ARE : UNIX IS THE SECOND BEST O.S.
CONCLUSION:
THUS WE HAVE IMPLEMENTED PROCESS CREATION
AIM: WRITE A PROGRAM TO IMPLEMENT FIRST COME FIRST SERVE ALGORITHM PROGRAM:
#include<stdio.h> #include<conio.h> struct process { int bt; int wt; int tat; } p[20]; void main() { int i, pn, k, x, total=0, tat_avg=0; float avg; clrscr(); printf("\n ENTER THE NUMBER OF PROCESSES: "); scanf(" %d", &pn); printf("\n\n ENTER THE PROCESSES IN SEQUENCE: "); for( i = 1 ; i <= pn; i++) { printf("\n\n ENTER THE BURST TIME FOR PROCESS %d :", i); scanf(" %d ", &p[i].bt); } printf("\n\n THE WAITING TIMES ARE "); p[1].wt=0; printf("\n\n "); printf("\n\n FOR THE PROCESS 1 : %d", p[1].wt); for ( i = 2 ; i <= pn; i++) { p[ i ].wt = p[ i - 1].wt + p[ i - 1 ].bt; printf("\n\n FOR THE PROCESS %d : %d", i, p[ i ].wt); } printf("\n\n\n THE TURN AROUND TIME ARE "); for ( k = 1 ; k <= pn ; k++) { p[ k ].tat = p[ k ].bt + p[ k ].wt; printf("\n\n FOR THE PROCESS %d : %d", k, p[ k ].tat); } for( x = 1; x <= pn ; x++) tat_avg = tat_avg + p[ x ]. tat; tat_avg = tat_avg/pn;
printf("\n\n\n"); for( i = 1; i <= pn ; i++) { total = total + p[ i ].wt; } avg = total/pn; printf("\n\n THE AVERAGE TURN AROUND TIME : %d ", tat_avg); printf("\n\n THE TOTAL WAITING TIME : %d ", total); printf("\n\n THE AVERAGE WAITING TIME : %f ", avg); getch(); }
OUTPUT:
ENTER THE NUMBER OF PROCESSES: 4 ENTER THE PROCESSES IN SEQUENCE: ENTER THE BURST TIME FOR PROCESS 1 ENTER THE BURST TIME FOR PROCESS 2 ENTER THE BURST TIME FOR PROCESS 3 ENTER THE BURST TIME FOR PROCESS 4 THE WAITING TIMES ARE FOR THE PROCESS 1 : 0 FOR THE PROCESS 2 : 12 FOR THE PROCESS 3 : 23 FOR THE PROCESS 4 : 53 THE TURN AROUND TIME ARE FOR THE PROCESS 1 : 12 FOR THE PROCESS 2 : 23 FOR THE PROCESS 3 : 53 FOR THE PROCESS 4 : 73 THE AVERAGE TURN AROUND TIME THE TOTAL WAITING TIME THE AVERAGE WAITING TIME : 40 : 88 : 22.000000 : 12 : 11 : 30 : 20
CONCLUSION:
THUS WE HAVE IMPLEMENTED FIRST COME FIRST SERVE ALGORITHM
printf("\n PROCESS
for(i= 0; i < n ; i++ ) printf("\n p%d\t\t%d\t\t%d\t\t%d\t\t", p[ i ].p_num, p[ i ].bt, p[ i ].wt, p[ i ].tat); printf("\n\nTOTAL \t\t\t%.3f\t\t%.3f", sum_wt, sum_tat); printf("\nAVERAGE \t\t\t%.3f\t\t%.3f", sum_wt/n, sum_tat/n); getch(); }
OUTPUT:
ENTER THE NUMBER OF PROCESS : 4 ENTER THE BURST TIME FOR EACH PROCESS : 7 PROCESS P3 P0 P2 P1 TOTAL AVERAGE BURST TIME 4 7 8 9 9 8 4 TURN AROUND TIME 4 11 19 28 62.000 15.500
CONCLUSION:
THUS WE HAVE IMPLEMENTED SHORTEST JOB FIRST(SJF) ALGORITHM
x->bt_rem = 0; } else { } printf("\n p%d from %d to %d ", x->p_num, abc, cur_time); if(x->bt_rem == 0) { x->tat = cur_time; if ( start == x) start= NULL; else { x = x->next; if( x == NULL ) y->next = NULL; else if ( y == NULL ) start = x; else y->next = x; } } else { if(x->next!=NULL) { y = x; x = x->next; } else { printf("\n p%d from %d to %d" , x->p_num, cur_time, cur_time += x->bt_rem ); x->tat = cur_time + x->bt_rem; x->bt_rem = 0; x= start= NULL; cur_time += tq; x->bt_rem -= tq;
} } } } for(i = 0 ; i < n ; i++ ) { p[ i ].wt = p[ i ].tat - p[ i ].bt; sum_tat += p[ i ].tat; sum_wt += p[ i ].wt;
for(i= 0; i < n ; i++ ) printf("\n p%d\t\t%d\t\t%d\t\t%d\t\t", i, p[ i ].bt, p[ i ].wt, p[ i ].tat); printf("\n\nTOTAL \t\t\t%.3f\t\t%.3f", sum_wt, sum_tat); printf("\nAVERAGE \t\t\t%.3f\t\t%.3f", sum_wt/n, sum_tat/n); getch(); }
OUTPUT:
ENTER THE NUMBER OF PROCESSES : 3 ENTER THE BURST TIME FOR EACH PROCESS : 24 ENTER THE TIME QUANTUM : 5 P1 FROM 0 TO 5 P2 FROM 5 TO 9 P3 FROM 9 TO 13 P1 FROM 13 TO 18 P1 FROM 18 TO 32 PROCESS P0 P1 P2 TOTAL AVERAGE BURST TIME 24 4 4 WAITING TIME 22 5 9 36.000 12.000 TURN AROUND TIME 46 9 13 68.000 22.667 4 4
CONCLUSION:
THUS WE HAVE IMPLEMENTED ROUND ROBIN ALGORITHM
p[ j ].p_num = p[ j+1 ].p_num; p[ j+1 ].p_num = temp; } } } for( i = 0 ; i < n ; i++ ) { p[ i ].tat = cur_time + p[ i ].bt; cur_time = p[ i ].tat; p[ i ].wt = p[ i ].tat - p[ i ].bt; sum_tat += p[ i ].tat; sum_wt += p[ i ].wt; } printf("\n PROCESS BURST TIME\t WAITING TIME\t TURN AROUND TIME PRIORITY");
for(i= 0; i < n ; i++ ) printf("\n p%d\t\t%d\t\t%d\t\t%d\t\t%d", p[ i ].p_num+1, p[ i ].bt, p[ i ].wt, p[ i ].tat, p[ i ].pr); printf("\n\nTOTAL \t\t\t%.3f\t\t%.3f", sum_wt, sum_tat); printf("\nAVERAGE \t\t\t%.3f\t\t%.3f", sum_wt/n, sum_tat/n); getch(); }
OUTPUT:
ENTER THE NUMBER OF PROCESS : 5 ENTER THE BURST TIME FOR EACH PROCESS : 11 ENTER THE PRIORITY FOR EACH PROCESS : 4 PROCESS BURST TIME p2 2 p5 6 p1 11 p3 4 p4 2 TOTAL AVERAGE WAITING TIME 0 2 8 19 23 52.000 10.400 1 2 4 4 5 2 3 PRIORITY 1 3 4 4 5 6
CONCLUSION:
THUS WE HAVE IMPLEMENTED PRIORITY BASED SCHEDULING ALGORITHM
ff = 1; for(k = 0; k<n ; k++) if( finish[k] == 1) if(ff == 1) fc = 1; }while( fc == 0 && k<n ); f = 0; for(i = 0; i<n ; i++) if( finish[i] == 0 ) f = 1; if(f==0) printf("\nSYSTEM IS NOT IN SAFE STATE"); if(f==1) { printf("\nSYSTEM IS IN SAFE STATE"); printf("\nSEQUENCE OF PROCESSES : "); for(i=0; i<n; i++) printf("%d", rp[i]); } getch(); }
OUTPUT:
ENTER THE NUMBER OF PROCESS : 5 ENTER THE NUMBER OF RESOURCES : 3 ENTER THE ALLOCATION MATRIX : 0 1 0 200 302 211 002 ENTER THE MAX MATRIX : 7 5 3 322 402 222 432 ENTER THE AVAILBALE ARRAY : 3 3 2 SYSTEM IS IN SAFE STATE SEQUENCE OF PROCESSES : 12340
CONCLUSION:
THUS WE HAVE IMPLEMENTED BANKER'S ALGORITHM
else { printf("\n\n\nONE ITEM IS CONSUMED........"); outctr = outctr --; } } fflush(stdin); printf("\n\nDO YOU WANT TO CONTINUE?"); scanf(" %ch ", &ch ); } while ( ch =='y' || ch == 'Y'); getch(); }
OUTPUT:
1. PRODUCER 2. CONSUMER Enter your choice: 1 ONE ITEM IS PRODUCED. DO YOU WANT TO CONTINUE? Y 1. PRODUCER 2. CONSUMER Enter your choice: 2 ONE ITEM IS CONSUMED....... DO YOU WANT TO CONTINUE? Y 1. PRODUCER 2. CONSUMER Enter your choice: 2 ONE ITEM IS CONSUMED....... DO YOU WANT TO CONTINUE? Y 1. PRODUCER 2. CONSUMER Enter your choice: 2 CONSUMER IS SLEEPING BUFFER IS EMPTY. YOU CANNOT CONSUME MORE ITEMS. PRODUCER SHOULD WAKE UP........... FIRST PRODUCE THE ITEMS DO YOU WANT TO CONTINUE? Y
1. PRODUCER 2. CONSUMER Enter your choice: 1 ONE ITEM IS PRODUCED. DO YOU WANT TO CONTINUE? Y 1. PRODUCER 2. CONSUMER Enter your choice: 1 ONE ITEM IS PRODUCED. DO YOU WANT TO CONTINUE? Y 1. PRODUCER 2. CONSUMER Enter your choice: 1 ONE ITEM IS PRODUCED. DO YOU WANT TO CONTINUE? Y 1. PRODUCER 2. CONSUMER Enter your choice: 1 PRODUCER IS SLEEPING BUFFER IS FULL. YOU CANNOT PRODUCE MORE ITEMS. START CONSUMING.... FIRST COMSUME THE ITEMS.... DO YOU WANT TO CONTINUE? Y 1. PRODUCER 2. CONSUMER Enter your choice: 2 ONE ITEM IS CONSUMED....... DO YOU WANT TO CONTINUE? N
CONCLUSION:
THUS WE HAVE IMPLEMENTED PRODUCER CONSUMER ALGORITHM
AIM: WRITE A PROGRAM TO IMPLEMENT PAGE REPLACEMENT ALGORITHM 'FIFO' AND 'LRU' PROGRAM:
#include<stdio.h> #include<graphics.h> #include<conio.h> int y, i, n, k, j, flag, l, gm, xyz, f1, p[50], m[50], gd=DETECT; int y1 = 50, x = 50, c = 0; char ch[20]; void fifo(); void lru(); void draw(); void main() { clrscr(); printf("\n ENTER NUMBER OF PAGES : "); scanf("%d", &k ); printf("\n ENTER SIZE OF MEMORY : "); scanf("%d", &n ); printf("\n\n"); for(i=0 ; i<n ; i++) m[i]=0; for(i=0 ; i<k ; i++) { printf("\n ENTER %d PAGE NUMBER : ", i+1); scanf("%d", &p[i] ); } printf("\n ENTER: \n\n '0' FOR FIFO\n\n '1' FOR LRU\n\n "); scanf("%d", &f1 ); j=0; initgraph(&gd,&gm,"..\\bgi"); switch(f1) { case 0: fifo(); break; case 1: lru(); break; } getch(); }
void fifo() { for(i = 0; i<k ; i++ ) { if(j == n) j = 0; if(i== 0) m[j] = p[i]; else { for(l=0; l<n ; l++) { if(p[i] == m[l]) { flag=1; } } } if(flag == 0) { m[j] = p[i]; } draw(); j++; } } void lru() { for(i = 0; i<k ; i++ ) { if(j >= n) j = j-n; if(i < n) m[j] = p[i]; else { for(l=0; l<n ; l++) { if(p[i] == m[l]) { flag=1; j = j-1; } } }
if(flag == 0) { m[j] = p[i]; if(c!=0) { c=0; j= j-2; } } draw(); j++; } } void draw() { y = y1; if (xyz == 6) { x=50; y1=250; y=y1; } rectangle(x, y, x+50, y+(50*n)); for(l=0; l<n ; l++) { line(x, y+50, x+50, y+50); sprintf(ch, "%d", m[l]); outtextxy( x+20, y+20, ch); y= y+50; } if (flag) { outtextxy(x+20, y+20,"HIT"); flag=0; if(f1 == 1) c=1; if(f1 == 0) j--; } x+=100; xyz++; }
OUTPUT:
ENTER NUMBER OF PAGES : 6 ENTER SIZE OF MEMORY : 3 ENTER 1 PAGE NUMBER : 2 ENTER 2 PAGE NUMBER : 3 ENTER 3 PAGE NUMBER : 2 ENTER 4 PAGE NUMBER : 1 ENTER 5 PAGE NUMBER : 5 ENTER 6 PAGE NUMBER : 1 ENTER: '0' FOR FIFO '1' FOR LRU 0 2 0 0 2 3 0 2 3 0 hit 2 3 1 5 3 1 5 3 1 hit
CONCLUSION:
THUS WE HAVE IMPLEMENTED PAGE REPLACEMENT ALGORITHM 'FIFO' AND 'LRU'
PROGRAM:
#include<stdio.h> #include<conio.h> #include<string.h> int menu(); void wait(int); void signal(int); struct chopstik { int flag; }p[5]; int i,j,k,n,flag,ch; char ans='y'; void main() { clrscr(); for(i=0;i<5;i++) { p[i].flag=1; } printf("\n\t\t\t DINING PHILOSOPHER'S PROBLEM\n "); do { printf("\n ENTER THE PHILOSOPHER'S NUMBER TO PROCESS : "); scanf("%d",&n); ch=menu(); if(ch==1) { if(p[n].flag==1&&p[(n+1)%5].flag==1) { wait(n); wait((n+1)%5); printf("\n PHILOSOPHER %d IS EATING ",n); } else printf("\n PHILOSOPHER %d CAN NOT EAT",n); } else if(p[n].flag==0&&p[(n+1)%5].flag==0) { signal(n); signal((n+1)%5);
printf("\n PHILOSOPHER %d IS THINKING ",n); } printf("\n DO YOU WANT TO CONTINUE ?"); scanf( %ch, &ch); }while(ans=='y'||'Y'); getch(); } int menu() { printf("\n MENU "); printf("\n 1: EAT"); printf("\n 2: THINK"); printf("\n ENTER YOUR CHOICE :"); scanf("%d",&ch); return(ch); } void wait(int z) { p[z].flag=p[z].flag-1; } void signal(int z) { p[z].flag=p[z].flag+1; }
OUTPUT:
DINING PHILOSOPHER'S PROBLEM ENTER THE PHILOSOPHER'S NUMBER TO PROCESS : 1 MENU 1: EAT 2: THINK ENTER YOUR CHOICE : 1 PHILOSOPHER 1 IS EATING DO YOU WANT TO CONTINUE ? Y ENTER THE PHILOSOPHER'S NUMBER TO PROCESS : 2 MENU 1: EAT 2: THINK ENTER YOUR CHOICE : 1
PHILOSOPHER 2 CAN NOT EAT DO YOU WANT TO CONTINUE ? Y ENTER THE PHILOSOPHER'S NUMBER TO PROCESS : 3 MENU 1: EAT 2: THINK ENTER YOUR CHOICE : 1 PHILOSOPHER 3 IS EATING DO YOU WANT TO CONTINUE ? Y ENTER THE PHILOSOPHER'S NUMBER TO PROCESS : 4 MENU 1: EAT 2: THINK ENTER YOUR CHOICE : 2 PHILOSOPHER 4 IS THINKING DO YOU WANT TO CONTINUE ? Y ENTER THE PHILOSOPHER'S NUMBER TO PROCESS : 5 MENU 1: EAT 2: THINK ENTER YOUR CHOICE : 1 PHILOSOPHER 5 CAN NOT EAT DO YOU WANT TO CONTINUE ? N
CONCLUSION:
THUS WE HAVE IMPLEMENTED DINING PHILOSOPHER'S PROBLEM