Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
147 views

Operating Systems Assignment

The document describes two programs written for operating systems assignments: 1) A program implementing Preemptive Priority Scheduling Algorithm in C that successfully schedules 5 processes with different arrival times and priorities. 2) A program implementing Optimal Page Replacement Algorithm in C that replaces pages in memory frames with the lowest possible page fault rate for a given page reference string of size 2. Both programs execute successfully.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
147 views

Operating Systems Assignment

The document describes two programs written for operating systems assignments: 1) A program implementing Preemptive Priority Scheduling Algorithm in C that successfully schedules 5 processes with different arrival times and priorities. 2) A program implementing Optimal Page Replacement Algorithm in C that replaces pages in memory frames with the lowest possible page fault rate for a given page reference string of size 2. Both programs execute successfully.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 11

Operating Systems Assignment

Name : E Ramya
Pin No : 1602-12-737-317

1.Preemptive Priority Scheduling Algorithm


AIM: To write a program of Preemptive Priority Scheduling Algorithm
Requirements:
Hardware : PIII Processor, 128 MB RAM, 10GB HDD.
Software : OS LINUX
Theory :
Fixed-priority pre-emptive scheduling is a scheduling system commonly used
in real-time systems. With fixed priority pre-emptive scheduling, the scheduler ensures
that at any given time, the processor executes the highest priority task of all those tasks
that are currently ready to execute.

Program :
#include<stdio.h>
int main()
{
int i,j,n,time,sum_wait=0,sum_turnaround=0,smallest;
int at[10],bt[10],pt[10],rt[10],remain; //rt = remaining Time
printf("Enter no of Processes : ");
scanf("%d",&n);
remain=n;
for(i=0;i<n;i++)

{
printf("Enter arrival time, burst time and priority for process p%d :",i+1);
scanf("%d",&at[i]);
scanf("%d",&bt[i]);
scanf("%d",&pt[i]);
rt[i]=bt[i];
}
pt[9]=11;
printf("\n\nProcess\t|Turnaround time|waiting time\n");
for(time=0;remain!=0;time++)
{
smallest=9;
for(i=0;i<n;i++)
{
if(at[i]<=time && pt[i]<pt[smallest] && rt[i]>0)
{
smallest=i;
}
}
rt[smallest]--;
if(rt[smallest]==0)
{
remain--;

printf("P[%d]\t|\t%d\t|\t%d\n",smallest+1,time+1-at[smallest],time+1at[smallest]-bt[smallest]);
sum_wait+=time+1-at[smallest];
sum_turnaround+=time+1-at[smallest]-bt[smallest];
}
}
printf("\nAvg waiting time = %f\n",sum_wait*1.0/n);
printf("Avg turnaround time = %f",sum_turnaround*1.0/n);
return 0;
}

Output:
Enter no of processes : 5
Enter arrival time ,burst time and priority for process p1 :0
10
2
Enter arrival time ,burst time and priority for process p2 :1
3
3
Enter arrival time ,burst time and priority for process p3 :2
2
1
Enter arrival time ,burst time and priority for process p4 :3
4

5
Enter arrival time ,burst time and priority for process p5 :4
5
4
Process

Turnaround time

Waiting time

P[3]

P[1]

12

P[2]

14

11

P[5]

16

11

P[4]

21

17

Average waiting time

=13.000

Average turnaround time = 8.200

Result :
A program in C Preemptive Priority Scheduling Algorithm is executed successfully.

2. Optimal Page Replacement Algorithm

AIM: To write a program of Optimal Page Replacement Algorithm.


Requirements:

Hardware : PIII Processor, 128 MB RAM, 10GB HDD.


Software

: OS LINUX

Theory:
An optimal page-replacement algorithm has the lowest page-fault rate of all
algorithms (called OPT or MIN). Use of this page-replacement algorithm guarantees the
lowest possible page -fault rate for a fixed number of frames. For example, on our
sample reference string, the optimal page-replacement algorithm would yield nine
page faults.

With only nine page faults, optimal replacement is much better than a

FIFO algorithm, which resulted in fifteen faults. If we ignore the first three, which all
algorithms must suffer, then optimal replacement is twice as good as FIFO replacement.

Program:
#include<stdio.h>
#include<conio.h>
main()
{
int fr[5],i,j,k,t[5],p=1,flag=0,page[25],psz,nf,t1,u[5];
clrscr();
printf("enter the number of frames:");
scanf("%d",&nf);

printf("\n enter the page size");


scanf("%d",&psz);

printf("\nenter the page sequence:");


for(i=1; i<=psz; i++)
scanf("%d",&page[i]);

for(i=1; i<=nf; i++)


fr[i]=-1;
for(i=1; i<=psz; i++)
{
if(full(fr,nf)==1)
break;
else
{
flag=0;
for(j=1; j<=nf; j++)
{
if(page[i]==fr[j])
{
flag=1;
printf("
break;
}

\t%d:\t",page[i]);

}
if(flag==0)
{
fr[p]=page[i];
printf("

\t%d:\t",page[i]);

p++;
}

for(j=1; j<=nf; j++)


printf(" %d ",fr[j]);
printf("\n");
}
}
p=0;
for(; i<=psz; i++)
{
flag=0;
for(j=1; j<=nf; j++)
{
if(page[i]==fr[j])
{
flag=1;
break;
}

}
if(flag==0)
{
p++;
for(j=1; j<=nf; j++)
{
for(k=i+1; k<=psz; k++)
{
if(fr[j]==page[k])
{
u[j]=k;
break;
}
else
u[j]=21;
}
}
for(j=1; j<=nf; j++)
t[j]=u[j];
for(j=1; j<=nf; j++)
{
for(k=j+1; k<=nf; k++)
{
if(t[j]<t[k])

{
t1=t[j];
t[j]=t[k];
t[k]=t1;
}
}
}
for(j=1; j<=nf; j++)
{
if(t[1]==u[j])
{
fr[j]=page[i];
u[j]=i;
}
}
printf("page fault\t");
}
else
printf("

\t");

printf("%d:\t",page[i]);
for(j=1; j<=nf; j++)
printf(" %d ",fr[j]);
printf("\n");
}

printf("\ntotal page faults: %d",p+3);


// getch();
}
int full(int a[],int n)
{
int k;
for(k=1; k<=n; k++)
{
if(a[k]==-1)
return 0;
}
return 1;
}

Output:
enter the number of frames:5
enter the page size2
enter the page sequence:1
2
1:

1 -1 -1 -1 -1

2:

1 2 -1 -1 -1

total page faults: 3

Result :
A program in C Optimal Page Replacement Algorithm is executed successfully.

You might also like