You are on page 1of 7

Week-1

1.a.
#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE *fptr1,*fptr2;
char filename[100],c;
printf("enter file name to open\n");
scanf("%s",filename);
fptr1=fopen(filename,"r");
if(fptr1==NULL)
{
printf("cannot open");
exit(0);
}
printf("enter filename to copy\n");
scanf("%s",filename);
fptr2=fopen(filename,"w");
if(fptr2==NULL)
{
printf("cannot open");
exit(0);
}
c=getc(fptr1);
while(c!=EOF)
{
fputc(c,fptr2);
c=fgetc(fptr1);
}
printf("\n file copied to %s",filename);
fclose(fptr1);
fclose(fptr2);
return 0;
}

1.b. #include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<unistd.h>
int main()
{
int fd[2];
if(pipe(fd)==-1)
{
perror("Error creating a pipe\n");
exit(1);
}
if(fork())
{
close(1);
dup(fd[1]);
close(fd[0]);
execlp("ls","ls",NULL);
}
else
{
close(0);
dup(fd[0]);
close(fd[1]);
execlp("sort","sort","-r",NULL);
}
return 0;
}

1.c
#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<unistd.h>
#include<sys/wait.h>
int main()
{
pid_t pid;
pid=fork();
if(pid<0)
perror(":Error occurd");
else if(pid==0)
{
printf("this is the child process .My id is %d\n",getpid());
printf("my parent process is %d\n",getppid());
}
else
{
wait(NULL);
printf("I am the parent process %d waiting for child to complete\n",getpid());
printf("child completed\n");
printf("i am aborting my process\n");
abort();
}
return 0;
}

week -2
2.b sjf

[4/13 3:04 PM] 20251A3639:GANTA SAI TRISHA


#include <stdio.h>

void bubble(int);
struct sjfa
{
int pn,at,bt,ct,wt,tat;
}b[100];
void main()
{
int i,n,sum1=0,sum2=0;
float avg1,avg2;
printf("Enter no of processses:");
scanf("%d",&n);
printf("Enter name,at ,bt:");
for(i=1;i<=n;i++)
scanf("%d %d %d",&b[i].pn,&b[i].at,&b[i].bt);
b[0].ct=b[0].at+b[0].bt;
bubble(n);
for(i=1;i<=n;i++)
{
if(b[i-1].ct>=b[i].at)
b[i].ct=b[i].bt+b[i-1].ct;
else
b[i].ct=b[i].bt+b[i].at;
b[i].tat=b[i].ct-b[i].at;
b[i].wt=b[i].tat-b[i].bt;
}
printf("\n pr\t at\t bt \t ct\t tat \t wt\n");
for(i=1;i<=n;i++)
{
sum1+=b[i].wt;
sum2+=b[i].tat;
printf("%d\t %d\t %d\t %d \t %d \t %d",b[i].pn,b[i].at,b[i].bt,b[i].ct,b[i].tat,b[i].wt);
}
avg1=(float)sum1/n;
avg2=(float)sum2/n;
printf("\nAverage wt:%f\n:",avg1);
printf("\nAverage tat: %f\n",avg2);
}
void bubble(int n)
{
int j,k;
for(j=2;j<=n;j++)
{
for(k=j+1;k<=n;k++)
{
if(b[j].bt>b[k].bt)
{
int temp=b[j].bt;
b[j].bt=b[k].bt;
b[k].bt=temp;
int t=b[j].pn;
b[j].pn=b[k].pn;
b[k].pn=t;
int t1=b[j].at;
b[j].at=b[k].at;
b[k].at=t1;
}
}
}
}

//non preemptive

#include<stdio.h>
void main()
{
struct sjf
{
int pr,bt,tat,wt;
}b[100],a;
int i,j,n,s1=0,s2=0;
float a1=0,a2=0;
printf("Enter the no of processes:");
scanf("%d",&n);
printf("enter the burst time");
for(i=1;i<=n;i++)
{
scanf("%d",&b[i].bt);
}
for(i=1;i<=n;i++)
{
b[i].pr=i;
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n-i;j++)
{
if(b[j].bt>b[j+1].bt)
{
a=b[j];
b[j]=b[j+1];
b[j+1]=a;
}
}
}
b[1].tat=b[1].bt;
for(i=2;i<=n;i++)
b[i].tat=b[i-1].tat+b[i].bt;
b[1].wt=0;
for(i=2;i<=n;i++)
b[i].wt=b[i-1].tat;
printf("pid\t bt\t tat \t wt\n");
for(i=1;i<=n;i++)
{
s1+=b[i].wt;
s2+=b[i].tat;
printf("%d\t %d\t %d\t %d\n",b[i].pr,b[i].bt,b[i].tat,b[i].wt);
}
a1=(float)s1/n;
a2=(float)s2/n;
printf("Average wt:%f \nAverage tat:%f",a1,a2);
}

week-3
3a. priority

#include <stdio.h>
void main()
{
struct pp
{
int pri, pr,bt,tat,wt;
}b[100],a;
int temp,i,j,n,p,s1=0,s2=0;
float a1=0,a2=0;
printf("enter no of process:");
scanf("%d",&n);
printf("enter burst time and priority\n");
for(i=1;i<=n;i++)
scanf("%d%d",&b[i].bt,&b[i].pri);
for(i=1;i<=n;i++)
b[i].pr=i;
for(i=1;i<=n;i++)
{
for(j=1;j<=n-i;j++)
{
if(b[j].pri>b[j+1].pri)
{
a=b[j];
b[j]=b[j+1];
b[j+1]=a;
}
}
}
b[1].tat=b[1].bt;
for(i=2;i<=n;i++)
b[i].tat=b[i-1].tat+b[i].bt;
b[1].wt=0;
for(i=2;i<=n;i++)
b[i].wt=b[i-1].tat;
printf("process name \t bt\t pri \t tat\t wt \n");
for(i=1;i<=n;i++)
{
s1+=b[i].wt;
s2+=b[i].tat;
printf("%d\t%d\t%d\t%d\t%d\n",b[i].pr,b[i].bt,b[i].pri,b[i].tat,b[i].wt);
}
}

//preemptive

3b.round robin

week-4
//producer consumer
#include <stdio.h>
#include <stdlib.h>
int mutex=1,full=0,empty=3,x=0;
int main()
{
int n;
void producer();
void consumer();
int signal(int);
printf("1.producer\n 2.consumer\n 3.exit\n");
while(1)
{
printf("\n enter your choice:");
scanf("%d",&n);
switch(n)
{
case 1:if((mutex==1)&&(empty!=0))
producer();
else
printf("Buffer is full!!");
break;
case 2:if((mutex==1)&&(full!=0))
consumer();
else
printf("Buffer is empty!!");
break;
case 3:exit(0);
break;
return 0;
}
}
}
int wait(int s)
{
return(--s);
}
int signal(int s)
{
return(++s);
}
void producer()
{
mutex=wait(mutex);
full=signal(mutex);
empty=wait(empty);
x++;
printf("\n producer produces the item %d",x);
mutex=signal(mutex);
}
void consumer()
{
mutex=wait(mutex);
full=wait(full);
empty=signal(empty);
printf("\n consumer consumes item %d",x);
x--;
mutex=signal(mutex);
}

You might also like