OS all valid programs
OS all valid programs
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
int main()
pid_t pid=fork();
if(pid==0)
if(pid>0)
if(pid<0)
perror("In fork():");
exit(0);
}
/*This is a program to exec() system call
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
char*args[]={"Hi","welcome","toMVJCE",NULL};
execv("./Newfile2",args);
printf("\nBack to Newfile1");
return 0;
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
return 0;
}
//This is a program for wait()system call
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/wait.h>
int main()
pid_t pid=fork();
if(pid==-1)
perror("In fork():");
exit(EXIT_FAILURE);
else if(pid==0)
sleep(2);
exit(EXIT_SUCCESS);
else
printf("\nThe parent process(pid:%d) is waiting for the child process to finish its execution",getpid());
if(wait(NULL)==-1)
{
perror("\nFailed");
exit(EXIT_FAILURE);
printf("\nThe parent process(pid:%d) has detected that child process successfully finished its
execution",getpid());
return 0;
Program 2:
//FCFS//
#include<stdio.h>
void main()
int bt[20],wt[20],tat[20],i,n;
float awt,atat;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&bt[i]);
wt[0]=awt=0;
tat[0]=atat=bt[0];
for(i=1;i<n;i++)
wt[i]=wt[i-1]+bt[i-1];
tat[i]=tat[i-1]+bt[i];
awt=wt[i]+awt;
atat=tat[i]+atat;
for(i=0;i<n;i++)
printf("\nP%d\t%d\t\t%d\t\t%d",i,bt[i],wt[i],tat[i]);
//priority//
#include<stdio.h>
void main()
int p[20],pri[20],bt[20],wt[20],tat[20],i,k,n,temp;
float awt,atat;
scanf("%d",&n);
for(i=0;i<n;i++)
{
p[i]=i;
scanf("%d%d",&bt[i],&pri[i]);
for(i=0;i<n;i++)
for(k=i+1;k<n;k++)
if(pri[i]>pri[k])
temp=p[i];
p[i]=p[k];
p[k]=temp;
temp=pri[i];
pri[i]=pri[k];
pri[k]=temp;
temp=bt[i];
bt[i]=bt[k];
bt[k]=temp;
wt[0]=awt=0;
tat[0]=atat=bt[0];
for(i=1;i<n;i++)
{
wt[i]=wt[i-1]+bt[i-1];
tat[i]=tat[i-1]+bt[i];
awt=wt[i]+awt;
atat=tat[i]+atat;
for(i=0;i<n;i++)
//SJF//
#include<stdio.h>
void main()
int p[20],bt[20],wt[20],tat[20],i,k,n,temp;
float awt,atat;
scanf("%d",&n);
for(i=0;i<n;i++)
p[i]=i;
printf("\nEnter the burst time for process%d",i);
scanf("%d",&bt[i]);
for(i=0;i<n;i++)
for(k=i+1;k<n;k++)
if(bt[i]>bt[k])
temp=bt[i];
bt[i]=bt[k];
bt[k]=temp;
temp=p[i];
p[i]=p[k];
p[k]=temp;
wt[0]=awt=0;
tat[0]=atat=bt[0];
for(i=1;i<n;i++)
wt[i]=wt[i-1]+bt[i-1];
tat[i]=tat[i-1]+bt[i];
awt=wt[i]+awt;
atat=tat[i]+atat;
for(i=0;i<n;i++)
printf("\nP%d\t%d\t\t%d\t\t%d",i,bt[i],wt[i],tat[i]);
//Round Robin//
#include<stdio.h>
void main()
scanf("%d", &n);
{
printf("Enter the burst time for process %d: ", i + 1);
scanf("%d", &bt[i]);
scanf("%d", &qt);
while(1)
temp = qt;
if(rem_bt[i] == 0)
count++;
continue;
rem_bt[i] -= qt;
}
else
temp = rem_bt[i];
rem_bt[i] = 0;
sq += temp;
break;
awt += wt[i];
atat += tat[i];
}
// Display average waiting time and turnaround time
void main()
int produce,consume,in=0,out=0,choice=0,buffer[10],bufsize=10;
while(choice!=3)
printf("\n1.Produce\t2.Consume\t3.Exit\n");
scanf("%d",&choice);
switch(choice)
case 1:if((in+1)%bufsize==out)
printf("\nBuffer is full");
else
scanf("%d",&produce);
buffer[in]=produce;
in=(in+1)%bufsize;
break;
case 2:if(in==out)
printf("\nBuffer is empty");
else
consume=buffer[out];
out=(out+1)%bufsize;
break;
case 3:printf("\nExiting...");
break;
}
//Writer process//
#include<stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<unistd.h>
#include<fcntl.h>
int main()
int fd;
char buf[1024];
char *myfifo="/tmp/myfifo";
mkfifo(myfifo,0666);
fd=open(myfifo,O_WRONLY);
read(fd,"Hi",sizeof("Hi"));
close(fd);
unlink(fd);
//Reader process//
#include<stdio.h>
#include<unistd.h>
#include<fcntl.h>
#include<sys/types.h>
#include<sys/stat.h>
int fd;
char buf[max_buf];
char *myfifo="/tmp/myfifo";
fd=open(myfifo,O_RDONLY);
read(fd,buf,max_buf);
printf("Writer:%s",buf);
close(fd);
return 0;
Banker’s Algorithm
#include<stdio.h>
int main()
int available[3],work[5],max[5][3],allocation[5][3],need[5][3],safe[5],totalres[5];
char finish[5];
int i,j,k,totalloc=0,state,value=0;
for(i=0;i<3;i++)
scanf("%d",&totalres[i]);
for(i=0;i<5;i++)
{
for(j=0;j<3;j++)
scanf("%d",&max[i][j]);
for(i=0;i<5;i++)
for(j=0;j<3;j++)
scanf("%d",&allocation[i][j]);
for(i=0;i<5;i++)
for(j=0;j<3;j++)
need[i][j]=max[i][j]-allocation[i][j];
for(i=0;i<5;i++)
{
finish[i]='f';
for(i=0;i<3;i++)
totalloc=0;
for(j=0;j<5;j++)
totalloc=totalloc+allocation[j][i];
available[i]=totalres[i]-totalloc;
work[i]=available[i];
for(i=0;i<5;i++)
for(j=0;j<3;j++)
printf("%d",allocation[i][j]);
printf("\n");
for(i=0;i<5;i++)
for(j=0;j<3;j++)
{
printf("%d",max[i][j]);
printf("\n");
for(i=0;i<5;i++)
for(j=0;j<3;j++)
printf("%d",need[i][j]);
printf("\n");
for(i=0;i<3;i++)
printf("%d",available[i]);
printf("\n");
for(i=0;i<5;i++)
for(j=0;j<3;j++)
if((finish[i]=='f')&&(need[i][j]<=work[j]))
{
state=1;
else
state=0;
break;
if(state==1)
for(j=0;j<3;j++)
work[j]=work[j]+allocation[i][j];
finish[i]='t';
safe[value]=i;
++value;
if(i==4)
if(value==5)
break;
}
else
i=-1;
for(i=0;i<5;i++)
printf("P%d",safe[i]);
return 0;
#define max 25
void main()
int frag[max],b[max],f[max],i,j,nb,nf,temp,lowest=10000;
scanf("%d",&nb);
scanf("%d",&nf);
printf("\nBlock%d:",i);
scanf("%d",&b[i]);
for(i=1;i<=nf;i++)
printf("\nfile%d:",i);
scanf("%d",&f[i]);
for(i=1;i<=nf;i++)
for(j=1;j<=nb;j++)
if(bf[j]!=1)
temp=b[j]-f[i];
if(temp>=0)
if(lowest>temp)
ff[i]=j;
lowest=temp;
}
}
frag[i]=lowest;
bf[ff[i]]=1;
lowest=10000;
for(i=1;i<=nf&&ff[i]!=0;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]);
#define max 25
void main()
int frag[max],b[max],f[max],i,j,nb,nf,temp,highest=0;
scanf("%d",&nb);
for(i=1;i<=nb;i++)
printf("\nBlock%d:",i);
scanf("%d",&b[i]);
for(i=1;i<=nf;i++)
printf("\nfile%d:",i);
scanf("%d",&f[i]);
for(i=1;i<=nf;i++)
for(j=1;j<=nb;j++)
if(bf[j]!=1)
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;
for(i=1;i<=nf&&ff[i]!=0;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]);
//FIRST FIT //
#include<stdio.h>
#include<conio.h>
#define max 25
void main()
{
int
frag[max],b[max],f[max],i,j,nb,nf,t
emp; static int bf[max],ff[max];
clrscr(
);
printf("
\
n
\
tMemory Management Scheme
-
First 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]);
Page 25 }
for(i=1;i<=nf;i++)
{
for(j=1;j<=nb;j++)
{
if(bf[j]!=1)
{
temp=b[j]
-
f[i];
if(temp>=0)
{
ff[i]=j;
break;
}
}
}
frag[i]=temp;
bf[ff[i]]=1;
}
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();
}
//FIFO//
#include<stdio.h>
int main() {
scanf("%d", &n);
scanf("%d", &a[i]);
scanf("%d", &no);
frame[i] = -1;
avail = 0;
// Check if the page is already in the frame
if (frame[k] == a[i]) {
avail = 1;
break;
if (avail == 0) {
frame[j] = a[i];
if (frame[k] != -1) {
printf("%d\t", frame[k]);
} else {
printf("-\t");
printf("\n");
}
return 0;