Code: #include <stdio.h> int main() { int n, i; float num[100], sum = 0.0, avg; clrscr(); printf("Enter the numbers of elements: "); scanf("%d", &n); while (n > 100 || n < 1) { printf("Error! number should in range of (1 to 100).\n"); printf("Enter the number again: "); scanf("%d", &n); } for (i = 0; i < n; ++i) { printf("%d. Enter Marks: ", i + 1); scanf("%f", &num[i]); sum += num[i]; } avg = sum / n; printf("Average = %.2f", avg); getch(); return 0; } Output: Code: #include <stdio.h> #include <conio.h> int main(){ int A[100][4]; int i, j, n, total = 0, index, temp; float avg_wt, avg_tat; clrscr(); printf("Enter number of process: "); scanf("%d", &n); printf("Enter Burst Time:\n"); for (i = 0; i < n; i++) { printf("P%d: ", i + 1); scanf("%d", &A[i][1]); A[i][0] = i + 1; } for (i = 0; i < n; i++) { index = i; for (j = i + 1; j < n; j++) if (A[j][1] < A[index][1]) index = j; temp = A[i][1]; A[i][1] = A[index][1]; A[index][1] = temp; temp = A[i][0]; A[i][0] = A[index][0]; A[index][0] = temp; } A[0][2] = 0; for (i = 1; i < n; i++) { A[i][2] = 0; for (j = 0; j < i; j++) A[i][2] += A[j][1]; total += A[i][2]; } avg_wt = (float)total / n; total = 0; printf("P BT WT TAT\n"); for (i = 0; i < n; i++) { A[i][3] = A[i][1] + A[i][2]; total += A[i][3]; printf("P%d %d %d %d\n", A[i][0], A[i][1], A[i][2], A[i][3]); } avg_tat = (float)total / n; printf("Average Waiting Time= %f", avg_wt); printf("\nAverage Turnaround Time= %f", avg_tat); getch(); return(0); } Output: Code: #include<stdio.h> #include<conio.h> int main() { int n,bt[20],wt[20],tat[20],avwt=0,avtat=0,i,j; clrscr(); printf("Enter total number of processes(maximum 20):"); scanf("%d",&n); printf("\nEnter Process Burst Time\n"); for(i=0;i<n;i++) { printf("P[%d]:",i+1); scanf("%d",&bt[i]); } wt[0]=0; //waiting time for first process is 0 //calculating waiting time for(i=1;i<n;i++) { wt[i]=0; for(j=0;j<i;j++) wt[i]+=bt[j]; } printf("\nProcess\t\tBurst Time\tWaiting Time\tTurnaround Time"); //calculating turnaround time for(i=0;i<n;i++) { tat[i]=bt[i]+wt[i]; avwt+=wt[i]; avtat+=tat[i]; printf("\nP[%d]\t\t%d\t\t%d\t\t%d",i+1,bt[i],wt[i],tat[i]); } avwt/=i; avtat/=i; printf("\n\nAverage Waiting Time:%d",avwt); printf("\nAverage Turnaround Time:%d",avtat); getch(); return 0; } Output: Code: #include<stdio.h> #include<conio.h> void main() { int et[30],ts,n,i,x=0,tot=0; char pn[10][10]; clrscr(); printf("Enter the no of processes:"); scanf("%d",&n); printf("Enter the time quantum:"); scanf("%d",&ts); for(i=0;i<n;i++) { printf("enter process name & estimated time:"); scanf("%s %d",pn[i],&et[i]); } printf("The processes are:"); for(i=0;i<n;i++) printf("process %d: %s\n",i+1,pn[i]); for(i=0;i<n;i++) tot=tot+et[i]; while(x!=tot) { for(i=0;i<n;i++) { if(et[i]>ts) { x=x+ts; printf("\n %s -> %d",pn[i],ts); et[i]=et[i]-ts; } else if((et[i]<=ts)&&et[i]!=0) { x=x+et[i]; printf("\n %s -> %d",pn[i],et[i]); et[i]=0;} } } printf("\n Total Estimated Time:%d",x); getch(); } Output: Code: #include<stdio.h> #include<conio.h> int main() { int bt[20],p[20],wt[20],tat[20],pr[20],i,j,n,total=0,pos,temp,avg_wt,avg_tat; clrscr(); printf("Enter Total Number of Process:"); scanf("%d",&n); printf("\nEnter Burst Time and Priority\n"); for(i=0;i<n;i++) { printf("\nP[%d]\n",i+1); printf("Burst Time:"); scanf("%d",&bt[i]); printf("Priority:"); scanf("%d",&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; printf("\nProcess\t Burst Time \tWaiting Time\tTurnaround Time"); for(i=0;i<n;i++) { tat[i]=bt[i]+wt[i]; total+=tat[i]; printf("\nP[%d]\t\t %d\t\t } %d\t\t\t%d",p[i],bt[i],wt[i],tat[i]); avg_tat=total/n; printf("\n\nAverage Waiting Time=%d",avg_wt); printf("\nAverage Turnaround Time=%d\n",avg_tat); getch(); return 0; } Output: Code: #include<semaphore.h> #include<stdio.h> #include<stdlib.h> #include<pthread.h> #include<string.h> sem_t x,y; pthread_t tid; pthread_t writerthreads[100],readerthreads[100]; int readercount; void *reader(void* param) { sem_wait(&x); readercount++; if(readercount==1) sem_wait(&y); sem_post(&x); printf("\n%d reader is inside",readercount); sem_wait(&x); readercount--; if(readercount==0) { sem_post(&y); } sem_post(&x); printf("\n%d Reader is leaving",readercount+1); } void *writer(void* param) { printf("\nWriter is trying to enter"); sem_wait(&y); printf("\nWriter has entered"); sem_post(&y); printf("\nWriter is leaving"); } int main() { int n2,i; printf("Enter the number of readers:"); scanf("%d",&n2); int n1[n2]; sem_init(&x,0,1); sem_init(&y,0,1); for(i=0;i<n2;i++) { pthread_create(&writerthreads[i],NULL,reader,NULL); pthread_create(&readerthreads[i],NULL,writer,NULL); } for(i=0;i<n2;i++) { pthread_join(writerthreads[i],NULL); pthread_join(readerthreads[i],NULL); } return (0); } Output: Code: #include <stdio.h> #include <conio.h> int current[5][5], maximum_claim[5][5], available[5]; int allocation[5] = {0, 0, 0, 0, 0}; int maxres[5], running[5], safe = 0; int counter = 0, i, j, exec, resources, processes, k = 1; int main() { clrscr(); printf("\nEnter number of processes: "); scanf("%d", &processes); for (i = 0; i < processes; i++) { running[i] = 1; counter++; } printf("\nEnter number of resources: "); scanf("%d", &resources); printf("\nEnter Claim Vector:"); for (i = 0; i < resources; i++) { scanf("%d", &maxres[i]); } printf("\nEnter Allocated Resource Table:\n"); for (i = 0; i < processes; i++) { for(j = 0; j < resources; j++) { scanf("%d", &current[i][j]); } } printf("\nEnter Maximum Claim Table:\n"); for (i = 0; i < processes; i++) { for(j = 0; j < resources; j++) { scanf("%d", &maximum_claim[i][j]); } } printf("\nThe Claim Vector is: "); for (i = 0; i < resources; i++) { printf("\t%d", maxres[i]); } printf("\nThe Allocated Resource Table:\n"); for (i = 0; i < processes; i++) { for (j = 0; j < resources; j++) { printf("\t%d", current[i][j]); } printf("\n"); } printf("\nThe Maximum Claim Table:\n"); for (i = 0; i < processes; i++) { for (j = 0; j < resources; j++) { printf("\t%d", maximum_claim[i][j]); } printf("\n"); } for (i = 0; i < processes; i++) { for (j = 0; j < resources; j++) { allocation[j] += current[i][j]; } } printf("\nAllocated resources:"); for (i = 0; i < resources; i++) { printf("\t%d", allocation[i]); } for (i = 0; i < resources; i++) { available[i] = maxres[i] - allocation[i]; } printf("\nAvailable resources:"); for (i = 0; i < resources; i++) { printf("\t%d", available[i]); } printf("\n"); while (counter != 0) { safe = 0; for (i = 0; i < processes; i++) { if (running[i]) { exec = 1; for (j = 0; j < resources; j++) { if (maximum_claim[i][j] - current[i][j] > available[j]) { exec = 0; break; } } if (exec) { printf("\nProcess%d is executing\n", i + 1); running[i] = 0; counter--; safe = 1; for (j = 0; j < resources; j++) { available[j] += current[i][j]; } break; } } } if (!safe) { printf("\nThe processes are in unsafe state.\n"); break; } else { printf("\nThe process is in safe state"); printf("\nAvailable vector:"); for (i = 0; i < resources; i++) { printf("\t%d", available[i]); } printf("\n"); } } getch(); return 0; } Output: Code: #include<stdio.h> #include<conio.h> int main() { int i,j,n,a[50],frame[10],no,k,avail,count=0; clrscr(); printf("\n ENTER THE NUMBER OF PAGES:\n"); scanf("%d",&n); printf("\n ENTER THE PAGE NUMBER :\n"); for(i=1;i<=n;i++) scanf("%d",&a[i]); printf("\n ENTER THE NUMBER OF FRAMES :"); scanf("%d",&no); for(i=0;i<no;i++) frame[i]= -1; j=0; printf("\tref string\t page frames\n"); for(i=1;i<=n;i++) { printf("%d\t\t",a[i]); avail=0; for(k=0;k<no;k++) if(frame[k]==a[i]) avail=1; if (avail==0) { frame[j]=a[i]; j=(j+1)%no; count++; for(k=0;k<no;k++) printf("%d\t",frame[k]); } printf("\n"); } printf("Page Fault Is %d",count); getch(); return 0; } Output: Code: #include<stdio.h> #include<conio.h> void main() { int q[20],p[50],c=0,c1,d,f,i,j,k=0,n,r,t,b[20],c2[20]; clrscr(); printf("Enter no of pages:"); scanf("%d",&n); printf("Enter the reference string:"); for(i=0;i<n;i++) scanf("%d",&p[i]); printf("Enter no of frames:"); scanf("%d",&f); q[k]=p[k]; printf("\n\t%d\n",q[k]); c++; k++; for(i=1;i<n;i++) { c1=0; for(j=0;j<f;j++) { if(p[i]!=q[j]) c1++; } if(c1==f) { c++; if(k<f) { q[k]=p[i]; k++; for(j=0;j<k;j++) printf("\t%d",q[j]); printf("\n"); } else{ for(r=0;r<f;r++) { c2[r]=0; for(j=i-1;j<n;j--) { if(q[r]!=p[j]) c2[r]++; else break; } } for(r=0;r<f;r++) b[r]=c2[r]; for(r=0;r<f;r++) { for(j=r;j<f;j++) { if(b[r]<b[j]) { t=b[r]; b[r]=b[j]; b[j]=t; } } } for(r=0;r<f;r++) { if(c2[r]==b[0]) q[r]=p[i]; printf("\t%d",q[r]); } printf("\n"); } } } printf("\nThe no of page faults is %d",c); getch(); } Output: Code: #include<stdio.h> #include<conio.h> void main() { int bsize[10], psize[10], bno, pno, flags[10], allocation[10], i, j; clrscr(); for(i = 0; i < 10; i++) { flags[i] = 0; allocation[i] = -1; } printf("Enter no. of blocks: "); scanf("%d", &bno); printf("\nEnter size of each block: "); for(i = 0; i < bno; i++) scanf("%d", &bsize[i]); printf("\nEnter no. of processes: "); scanf("%d", &pno); printf("\nEnter size of each process: "); for(i = 0; i < pno; i++) scanf("%d", &psize[i]); for(i = 0; i < pno; i++) for(j = 0; j < bno; j++) if(flags[j] == 0 && bsize[j] >= psize[i]) { allocation[j] = i; flags[j] = 1; break; } //display allocation details printf("\nBlock no.\tBlock size\t\tprocess no.\t\tFile size"); for(i = 0; i < bno; i++) { printf("\n%d\t\t%d\t\t", i+1, bsize[i]); if(flags[i] == 1) printf("%d\t\t\t%d",allocation[i]+1,psize[allocation[i]]); else printf("Not allocated"); } getch(); } Output: Code: #include<stdio.h> #include<conio.h> void main() { int fragment[20],b[20],p[20],i,j,nb,np,temp,lowest=9999; static int barray[20],parray[20]; clrscr(); printf("\n\t\t\tMemory Management Scheme - Best Fit"); printf("\nEnter the number of blocks:"); scanf("%d",&nb); printf("Enter the number of processes:"); scanf("%d",&np); printf("\nEnter the size of the blocks:-\n"); for(i=1;i<=nb;i++) { printf("Block no.%d:",i); scanf("%d",&b[i]); } printf("\nEnter the size of the processes :-\n"); for(i=1;i<=np;i++){ printf("Process no.%d:",i); scanf("%d",&p[i]); } for(i=1;i<=np;i++){ for(j=1;j<=nb;j++){ if(barray[j]!=1){ temp=b[j]-p[i]; if(temp>=0) if(lowest>temp) { parray[i]=j; lowest=temp; } } } fragment[i]=lowest; barray[parray[i]]=1; lowest=10000; } printf("\nProcess_no\tProcess_size\tBlock_no\tBlock_size\tFragment"); for(i=1;i<=np && parray[i]!=0;i++) printf("\n%d\t\t%d\t\t%d\t\t%d\t\t%d",i,p[i],parray[i],b[parray[i]],fragment[i]); getch(); } Output: Code: #include<stdio.h> #include<conio.h> #define max 25 void main() { int frag[max],b[max],f[max],i,j,nb,nf,temp,highest=0; static int bf[max],ff[max]; clrscr(); printf("\n\tMemory Management Scheme - Worst Fit"); printf("\nEnter the number of blocks:"); scanf("%d",&nb); printf("Enter the number of files:"); scanf("%d",&nf); printf("\nEnter the size of the blocks:-\n"); for(i=1;i<=nb;i++) { printf("Block %d:",i); scanf("%d",&b[i]); } printf("Enter the size of the files :-\n"); for(i=1;i<=nf;i++) { printf("File %d:",i); scanf("%d",&f[i]); } for(i=1;i<=nf;i++) { for(j=1;j<=nb;j++) { if(bf[j]!=1) //if bf[j] is not allocated { temp=b[j]-f[i]; if(temp>=0) if(highest<temp) { ff[i]=j; highest=temp; } } frag[i]=highest; bf[ff[i]]=1; highest=0; } ff[i]=j; highest=temp; } printf("\nFile_no:\tFile_size :\tBlock_no:\tBlock_size:\tFragement"); for(i=1;i<=nf;i++) printf("\n%d\t\t%d\t\t%d\t\t%d\t\t%d",i,f[i],ff[i],b[ff[i]],frag[i]); getch(); } Output: Code: #include<stdio.h> #include<unistd.h> #include<string.h> void main() { int p1[2],p2[2],p3[2],p4[2]; int i,j=0,k=0,l=0; char r[10],s[10],t[10],u[10]; printf("\t PROCESS 1.ENTER THE STRING :"); scanf("%s",r); pipe(p1); pipe(p2); write(p1[1],r,sizeof(r)); write(p2[1],r,sizeof(r)); int a=fork(); if(a==0) { printf("\n\t PROCESS 2:it splits the given string\n"); read(p1[0],r,sizeof(r)); int n=strlen(r); for(i=0;i<n/2;i++) { s[i]=r[i]; } for(i=n/2;i<=n;i++) { t[j++]=r[i]; } pipe(p3); pipe(p4); write(p3[1],s,sizeof(s)); write(p4[1],t,sizeof(t)); int b=fork(); if(b==0) { printf("p4 %d\t",getpid()); printf("p2 %d\n",getppid()); read(p3[0],s,sizeof(s)); printf("\t PROCESS 4:sub string \t %s \t",s); printf("no of char=%d \n",strlen(s)); } else { int c=fork(); if(c==0) { printf("p5 %d\t",getpid()); printf("p2 %d\n",getppid()); read(p4[0],t,sizeof(t)); printf("\t PROCESS 5:sub string \t %s \t",t); printf("no of char=%d \n",strlen(t)); } else { wait(); printf("p2 %d\t",getpid()); printf("p1 %d\n",getppid()); } }} else { wait(); int d=fork(); if(d==0) { printf("p3 %d\t",getpid()); printf("p1 %d\n",getppid()); read(p2[0],r,sizeof(r)); for(i=strlen(r)-1;i>=0;i--) { u[l++]=r[i]; } for(i=0;i<strlen(r);i++) { if(u[i]==r[i]) k++; else continue; } if(k==strlen(r)) printf("\t PROCESS 3: the given string is palindrome\n"); else printf("\t PROCESS 3: the given string is not palindrome\n"); } else { printf("p1 %d\t",getpid()); printf("kernal %d\t\n",getppid()); } } } Output: