0% found this document useful (0 votes)
12 views60 pages

Os Lab File Doc5533

Uploaded by

keshavforpc
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)
12 views60 pages

Os Lab File Doc5533

Uploaded by

keshavforpc
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/ 60

OPERATINGSYSTEMLAB

KCS-451
BachelorofTechnology
in

Departmentofcomputerscienceandengineering

GUIDEDBY: SUBMITTEDBY:
Mrs. Versha Verma Name:--
RollNo:--
Section:--

……………………………………………………………………………………………………………………….

AmbalikaInstituteofManagement&TechnologyLucknow,UP
(Dr.A.P.J.AbdulKalamTechnicalUniversity,Uttar Pradesh)
TABLEOFCONTENTS

EXP.NO NAMEOFTHEEXPERIMENT Signature


CPUSCHEDULING ALGORITHMS
A)FIRSTCOMEFIRSTSERVE(FCFS)
1 B)SHORTEST JOBFIRST(SJF)
C)ROUNDROBIN
D)PRIORITY
PRODUCER-CONSUMER PROBLEM USING
2
SEMAPHORES
3 DINING-PHILOSOPHERSPROBLEM
MEMORYMANAGEMENTTECHNIQUES
A)MULTI PROGRAMMING WITH FIXED
4 NUMBEROFTASKS(MFT)
B)MULTI PROGRAMMING WITH
VARIABLENUMBEROFTASKS(MVT)
CONTIGUOUSMEMORYALLOCATION
A)WORSTFIT
5
B)BESTFIT
C)FIRSTFIT
PAGEREPLACEMENTALGORITHMS
A)FIRSTINFIRST OUT(FIFO)
6
B)LEASTRECENTLYUSED(LRU)
C)OPTIMAL
FILEORGANIZATIONTECHNIQUES
7 A)SINGLELEVEL DIRECTORY
B)TWOLEVEL DIRECTORY
FILEALLOCATIONSTRATEGIES
A)SEQUENTIAL
8
B)INDEXED
C)LINKED
9 DEADLOCKAVOIDANCE
10 DEADLOCKPREVENTION
DISKSCHEDULINGALGORITHMS
A)FCFS
11
B)SCAN
C)C-SCAN

EXPERIMENT-1

Page1
CPUSCHEDULINGALGORITHMS

(A) FIRSTCOMEFIRSTSERVE:

AIM:Towritea c program
tosimulatetheCPUschedulingalgorithm FirstComeFirstServe
(FCFS)

SOURCECODE:

#include<st
dio.h>
#include<co
nio.h>
main()
{
intbt[20], wt[20],
tat[20], i, n; float
wtavg, tatavg;
clrscr();
printf("\nEnter the
number of processes --
"); scanf("%d", &n);
for(i=0;i<n;i++)
{
printf("\
nEnterBurstTimeforProcess
%d--",i); scanf("%d", &bt[i]);
}
wt[0] = wtavg =
0;tat[0] =
Page2
tatavg = bt[0];
for(i=1;i<n;i++)
{
wt[i]=wt[i-1]+bt[i-1];
tat[i] = tat[i-1]
+bt[i]; wtavg =
wtavg + wt[i];
tatavg = tatavg +
tat[i];
}
printf("\tPROCESS\tBURSTTIME\tWAITINGTIME\
tTURNAROUNDTIME\n");
for(i=0;i<n;i++)
printf("\n\t P%d \t\t %d \t\t %d \t\t %d", i, bt[i],
wt[i], tat[i]);printf("\nAverage Waiting Time --
%f", wtavg/n);
printf("\nAverage Turnaround
Time -- %f", tatavg/n); getch();
}

Page3
INPUT
Enterthenumberofprocesses-- 3
EnterBurstTimeforProcess0-- 24
EnterBurstTimeforProcess1-- 3
EnterBurstTimeforProcess2-- 3

OUTPUT
PROCESS BURSTTIME WAITINGTIME TURNAROUND
TIME
P0 24 0 24
P1 3 24 27
P2 3 27 30
AverageWaitingTime-- 17.000000
AverageTurnaroundTime-- 27.000000

Page4
(B) SHORTESTJOBFIRST:

AIM: To write a programto stimulate the CPU scheduling


algorithmShortest job first(Non- Preemption)

SOURCECODE:

#include<st
dio.h>
#include<co
nio.h>
main()
{
intp[20],bt[20],wt[20],tat[20],i,k,n,temp;fl
oatwtavg, tatavg;
clrscr();
printf("\nEnter the number of
processes -- "); scanf("%d", &n);
for(i=0;i<n;i++)
{
p[i]=i;
printf("Enter 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=b
t[i];
bt[i]=bt
[k];
Page5
bt[k]=t
emp;

temp=p[i];
p[i]=p[k];
p[k]=temp;
}
wt[0]=wtavg=0;
tat[0]=tatavg=bt[0];for(i=1;i<n;i++)
{
wt[i]=wt[i-1]+bt[i-1];
tat[i] = tat[i-1]
+bt[i]; wtavg =
wtavg + wt[i];
tatavg = tatavg
+ tat[i];
}
printf("\n\tPROCESS\tBURSTTIME\tWAITINGTIME\
tTURNAROUNDTIME\n");
for(i=0;i<n;i++)
printf("\n\tP%d\t\t%d\t\t%d\t\t%d",p[i],bt[i],wt[i],tat[i]);

Page6
printf("\nAverage Waiting Time --
%f", wtavg/n); printf("\nAverage
Turnaround Time -- %f", tatavg/n);
getch();}

INPUT
Enterthenumberofprocesses-- 4
EnterBurstTimeforProcess0-- 6
EnterBurstTimeforProcess1-- 8
EnterBurstTimeforProcess2-- 7
EnterBurstTimeforProcess3-- 3
OUTPUT
PROCESS BURST WAITING TURNAROUND
TIME TIME TIME
P3 3 0 3
P0 6 3 9
P2 7 9 16
P1 8 16 24
AverageWaitingTime-- 7.000000
AverageTurnaroundTime-- 13.000000

Page7
(C) ROUNDROBIN:

AIM:TosimulatetheCPUschedulingalgorithmround-robin.

SOURCECODE:

#include<st
dio.h>
main()
{
int

i,j,n,bu[10],wa[10],tat[10],t,ct
[10],max; float
awt=0,att=0,temp=0;
clrscr();
printf("Enterthenoofprocesses--");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("\
nEnterBurstTimeforprocess
%d--",i+1); scanf("%d",&bu[i]);
ct[i]=bu[i];
}
printf("\nEnterthesizeof
timeslice--"); scanf("%d",&t);
max=bu[0];
for(i=1;i<n;i++)
if(max<bu[i])m
ax=bu[i];
for(j=0;j<(max/
t)+1;j++)
for(i=0;i<n;i++)
Page8
if(bu[i]!=0)
if(bu[i]<=t)
{
tat[i]=temp
+bu[i];
temp=temp
+bu[i];
bu[i]=0;
}
else {
bu[i]=bu
[i]-t;
temp=te
mp+t;
}
for(i=0;i<n
;i++)
{ wa[i]=tat[
i]-
ct[i];att+=t
at[i];
awt+=wa[i];
}
printf("\nThe Average Turnaround
time is -- %f",att/n); printf("\nThe
Average Waiting time is -- %f
",awt/n);
printf("\n\tPROCESS\tBURSTTIME\tWAITINGTIME\
tTURNAROUNDTIME\n");
for(i=0;i<n;i++)

Page9
printf("\t%d \t %d \t\t %d \t\t %d \
n",i+1,ct[i],wa[i],tat[i]);getch();
}

INPUT:

Enterthenoofprocesses–3
Enter Burst Time for
process 1 – 24 Enter Burst
Timefor process 2 --
3EnterBurstTimeforproce
ss3–3 Enter the size of
time slice – 3

OUTPUT:
PROCESS BURSTTIME WAITINGTIME TURNAROUNDTIME
1 24 6 30
2 3 4 7
3 3 7 10
The Average Turnaround time
is – 15.666667 The Average
Waiting time is----------5.666667

Page1
(D) PRIORITY:

AIM:TowriteacprogramtosimulatetheCPUschedulingpriorityalgorithm.

SOURCECODE:

#include<st
dio.h>
main()
{
int p[20],bt[20],pri[20], wt[20],tat[20],i, k,
n, temp; float wtavg, tatavg;
clrscr();
printf("Enter the number
ofprocesses --- "); scanf("%d",&n);
for(i=0;i<n;
i++){ p[i] =
i;
printf("EntertheBurstTime&PriorityofProcess
%d---",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=bt[i];
bt[i]=bt[k];
bt[k]=temp;
Page1
temp=pri[i];
pri[i]=pri[k]
;
pri[k]=temp;
}
wtavg = wt[0] =
0; tatavg =
tat[0] = bt[0];
for(i=1;i<n;i++)
{
wt[i]=wt[i-1]+bt[i-1];
tat[i]=tat[i-1]+bt[i];

wtavg = wtavg
+ wt[i]; tatavg
=tatavg +
tat[i];
}
printf("\nPROCESS\t\tPRIORITY\tBURSTTIME\
tWAITINGTIME\tTURNAROUND TIME");
for(i=0;i<n;i++)
printf("\n%d\t\t%d\t\t%d\t\t%d\t\t%d",p[i],pri[i],bt[i],wt[i],tat[i]);

Page1
printf("\nAverage Waiting Time is ---
%f",wtavg/n); printf("\nAverageTurnaround Time
is --- %f",tatavg/n);
getch();
}

INPUT
Enterthenumberofprocesses--5
EntertheBurstTime& PriorityofProcess0---10 3
EntertheBurstTime& PriorityofProcess1---1 1
EntertheBurstTime& PriorityofProcess2---2 4
EntertheBurstTime& PriorityofProcess3---1 5
EntertheBurstTime& PriorityofProcess4---5 2
OUTPUT
PROCESS PRIORITY BURSTTIME WAITIN TURNARO
G TIME UNDTIME
1 1 1 0 1
4 2 5 1 6
0 3 10 6 16
2 4 2 16 18
3 5 1 18 19
Average Waiting Time is ---
8.200000
Average Turnaround Time is

12.000000

Page1
EXPERIMENT-2

AIM:ToWriteaCprogramtosimulateproducer-
consumerproblemusingsemaphores.

PROGRAM:

#include<stdi
o.>void
main()
{
intbuffer[10],bufsize,in, out,
produce, consume, choice=0; in =
0;
out=0;
bufsize=10;
while(choice!=3)
{
printf(“\n1. Produce \t 2.
Consume \t3. Exit”);
printf(“\nEnter your choice: ”);
scanf(“%d”,&choice);
switch(choice){
case1:if((in+1)%bufsize==out)
printf(“\nBufferisFull”);
else
{
printf(“\nEnterthe
value: “);
scanf(“%d”,
&produce);
}
brea buffer[in] = produce;
k;;; in= (in+1)%bufsize;
case2:if(in==out)
printf(“\nBufferisEmpty”);

Page1
else
{
} } }
consume=buffer[out];
printf(“\nThe consumed value is
%d”, consume); out =
(out+1)%bufsize;
}
break;

Page1
OUTPUT
1. Produce2. Consume 3.
Exit Enter your
choice: 2
BufferisEmpty
1. Produce 2.
Consume 3. Exit
Enter your choice: 1
Enter thevalue:100
1. Produce 2.
Consume 3. Exit
Enter your choice: 2
Theconsumedvalueis100
1. Produce 2.
Consume 3. Exit
Enter your choice:

Page1
EXPERIMENT-3
AIM:ToWriteaCprogramtosimulatetheconceptofDining-
Philosophersproblem.

PROGRAM

inttph,philname[20],status[20],howhung,hu[20],cho;main()
{
inti;clrscr();
printf("\n\nDININGPHILOSOPHERPROBLEM");
printf("\nEnter the total no. of
philosophers: ");
scanf("%d",&tph);
for(i=0;i<tph;i++)
{
philname[i]=(i+1);status[i]=1;
}
printf("How manyare
hungry: ");
scanf("%d",
&howhung);
if(howhung==tph)
{
printf(“\n All are hungry..\nDead lock
stage will occur”); printf(\n”Exiting\
n”);
else{ for(i=0;i<ho
whung;i++){
printf(“Enterphilosopher
%dposition:”,(i+1));
scanf(“%d”,&hu[i]);
status[hu[i]]=2;
}
do

Page1
printf("1.Onecaneatatatime\t2.Twocaneatatatime
\t3.Exit\nEnter
your choice:");
scanf("%d",
&cho); switch(cho)
{
case1:one();
break;
case2:two
();
brea
k;
case3:exit }
(0);
{

}while(1);
}
}
one()

Page1
default: printf("\nIn
validoption.."); int
pos=0, x, i;
printf("\nAllow one philosopher to
eat at any time\n");
for(i=0;i<howhung; i++, pos++)
{
printf("\nP %d is granted to eat",
philname[hu[pos]]);
for(x=pos;x<howhung;x++)
printf("\nP%diswaiting",philname[hu[x]]);

}
}
tw
o()
{

inti,j,s=0, t,r, x;
printf("\
nAllowtwophilosopherstoeatatsa
me time\n");
for(i=0;i<howhung;i++)
{
for(j=i+1;j<howhung;j++)
{
if(abs(hu[i]-hu[j])>=1&&abs(hu[i]-hu[j])!=4)
{
printf("\n\ncombination
%d \n", (s+1)); t=hu[i];
r=hu[j]; s++;
printf("\nP %d and P %d are grantedto eat",
philname[hu[i]], philname[hu[j]]);
for(x=0;x<howhu
ng;x++)
{
if((hu[x]!=t)&&(hu[x]!=r))

Page1
printf("\nP%diswaiting",philname[hu[x]]);
}
}
}
}
}

Page2
INPUT
DININGPHILOSOPHERPROBLEM
Enterthetotalno.ofphilosoph
ers:5 How many are hungry
:3
Enterphilosopher1position:2
Enterphilosopher2position:4
Enterphilosopher3position:5

OUTPUT
1. Onecaneatatatime
2. Twocaneatatatime
3. Exit

Enteryourchoice:1

Allow one philosopherto


eatat any timeP 3 is
granted to eat
P 3 is
waitingP
5 is
waitingP
0 is
waiting
P5isgrantedto
eatP 5 is
waiting
P0iswaiting
P0isgrantedto
eatP 0 is
waiting

Page2
1. One can eat at a time 2.Two caneat at atime3.Exit
Enter your choice: 2

Allow two philosophers to eat at


same time combination 1
P 3 and P 5
aregranted to eat P
0 is waiting
combination2
P 3 and P 0 are granted to eat P 5
is waiting combination
P 5 and P 0 are
granted to eat P 3
is waiting
1. Onecaneatata time
2. Twocaneatata time
3. ExitEnteryourchoice:3

Page2
EXPERIMENT-4

MEMORYALLOCATIONTECHNIQUES
AIM:ToWriteaCprogramtosimulatethefollowingcontiguousmemoryallocationt
echniquesa)Worst-fitb)
Best-fitc)First-fit
(A) WORSTFIT:

PROGRAM:
#include<stdio.
h>
#include<conio.
h>#define
max25 void
main()
{
int
frag[max],b[max],f[max],i,j,nb,n
f,temp; static int
bf[max],ff[max]; clrscr();
printf("\n\
tMemoryManagementScheme -
FirstFit"); printf("\nEnter the
number of blocks:");
scanf("%d",&nb);
printf("Enterthenumberoffiles:");
scanf("%d",&nf);
printf("\nEnter the size of
theblocks:-\n"); for(i=1;i<=nb;i++)
{
printf("Block%d:",i);
Page2
scanf("%d",&b[i]);
}
printf("Enter the size of thefiles:-\
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)
{
temp=b[j]-
f[i];
if(temp>=0)
{
ff[i]=j;

Page2
break;
}
}
}
frag[i]=t
emp;
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();
}

INPUT

Enter the number


ofblocks: 3 Enter
the number of files:
2

Enter the size ofthe


blocks:- Block 1: 5
Block2:2
Block3:7

Enterthesizeof
thefiles:- File 1: 1
File2:4
OUTPUT
FileNo File Size BlockNo BlockSize Fragment
1 1 1 5 4
2 4 3 7 3

Page2
(B) BESTFIT:

PROGRAM:
#include<stdio.
h>
#include<conio.
h>#define
max25 void
main()
{
int
frag[max],b[max],f[max],i,j,nb,nf,temp,l
owest=10000; static int bf[max],ff[max];
clrscr();
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)
{
Page2
temp=b[
j]- f[i];
if(temp>
=0)
if(lowest>temp)
{
ff[i]=j;
lowest=t
em p;
}
}}
frag[i]=lowest;bf[ff[i]]=1;lowest=10000;
}
printf("\nFile No\tFile Size \tBlock
No\tBlockSize\
tFragment"); 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]);

Page2
getch();
}
INPUT
Enterthenumberofblocks:3
Enter thenumberof files:2

Enterthesizeoftheblocks:- Block
1: 5
Block2:2
Block3:7

Enterthesizeofthefiles:- File 1: 1
File2:4

OUTPUT
File No FileSize BlockNo BlockSize Fragment
1 1 2 2 1
2 4 1 5 1

Page2
(C) FIRST FIT:
PROGRAM:

#include<stdio.
h>
#include<conio.
h>#define
max25 void
main()
{
int
frag[max],b[max],f[max],i,j,nb,nf,tem
p,highest=0; static int bf[max],ff[max];
clrscr();
printf("\n\tMemory ManagementScheme-
WorstFit");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)//ifbf[j]isnotallocated
Page2
{
temp=b[j]-
f[i];
if(temp>=0)
if(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();
}

Page3
INPUT
Enter thenumberof blocks:3
Enter the number of files: 2

Enter the size of the blocks:-


Block 1: 5
Block2:2
Block3:7

Enterthesizeof thefiles:- File 1:


1
File2:4

OUTPUT
FileNo FileSize BlockNo BlockSize Fragment
1 1 3 7 6
2 4 1 5 1

Page3
EXPERIMENT-5

PAGEREPLACEMENTALGORITHMS

AIM:ToimplementFIFOpagereplacementtechnique.
a) FIFO b)LRU c)OPTIMAL

A) FIRSTINFIRST
OUT
SOURCECODE :

#include<stdio.h>
#include<conio.h>
intfr[3];
voidmain()
{
voiddisplay();
inti,j,page[12]={2,3,2,1,5,2,4,5,3,2,5,2};
int
flag1=0,flag2=0,pf=0,frs
ize=3,top0; clrscr();
for(i=0;i<3;i++)
{
fr[i]=-1;
}
for(j=0;j<12;j++)
{
flag1=0;flag2=0;for(i=0;i<12;i++)
{
if(fr[i]==page[j])
{
flag1=1;flag2=1;break;
}
}
if(flag1==0)
{
Page3
for(i=0;i<frsize;i++)
{
if(fr[i]==-1)
{
fr[i]=page[j];flag2=1;break;
}
}
}

Page3
if(flag2==0)
{
fr[top]=page[j
];top++;
pf++;
if(top>=
frsiz
e)top=0;
}
display();
printf("Number ofpage faults:%d ",pf+frsize);

getch();

}
voiddisplay()
{
inti;

printf("\n");
for(i=0;i<3;i+
+)
printf("%d\
t",fr[i]);
}

OUTPUT:

2-1-1
23-1
23-1
231
531
Page3
521
524
524
324
324
354
352

Numberofpagefaults:9

Page3
B) LEASTRECENTLYUSED

AIM:ToimplementLRUpagereplacementtechnique.

SOURCE CODE :

#include<stdio.h>#i
nclude<conio.h>int
fr[3]; void main()
{
void display();
int p[12]={2,3,2,1,5,2,4,5,3,2,5,2},i,j,fs[3];
int
index,k,l,flag1=0,flag2=0,pf=0,frsize=
3;clrscr(); for(i=0;i<3;i++)
{
fr[i]=-1;
}
for(j=0;j<12;j++)
{
flag1=0,flag2=0;
for(i=0;i<3;i++)
{
if(fr[i]==p[j])
{
flag1=1;flag2=1; break;
}
}
if(flag1==0)
{

for(i=0;i<3;i++)
{
if(fr[i]==-1)
{
fr[i]=p[j];

flag2=1; break;
Page3
}
}
}
if(flag2==0)
{
for(i=0;i<3;i++)fs[i]=0;
for(k=j-1,l=1;l<=frsize-1;l++,k--)
{
for(i=0;i<3;i++)
{
if(fr[i]==p[k])fs[i]=1;
}}
for(i=0;i<3;i++)

Page3
{
if(fs[i]=0)
index=i;
}
fr[index]=p[j
];pf++;
}
display();
}
printf("\nnoofpagefaults
:%d",pf+frsize);getch();
}
voiddisplay()
{
inti; printf("\n");
for(i=0;i<3;i++)
printf("\t%d",fr[i]);
}

OUTPUT:

2-1-1
23-1
23-1
231
251
251
254
254
354
352
352
352

Noofpagefaults:7
Page3
C) OPTIMAL

AIM:Toimplementoptimalpagereplacementtechnique.

SOURCECODE:

/*Program to simulate optimal


page replacement
*/ #include<stdio.h>
#include<co
nio.>int
fr[3], n, m;
void
display();
void main()
{
int
i,j,page[20],fs[1
0];
intmax,found=0,
lg[3],
index,k,l,flag1=
0,flag
2=0,pf=0;float
pr; clrscr();
printf("Enter length of the reference string: ");
scanf("%d",&n);
printf("Enter the
reference string:
"); for(i=0;i<n;i++)
scanf("%d",&page[i]);
printf("Enterno of
frames:
Page3
");
scanf("%d",&m);
for(i=0;i<m;i++)
fr[i]=-1; pf=m;
for(j=0;j<n;j++)

flag1=0;fla
g2=0;
for(i=0;i<
m;i++)
{
if(fr[i]==page[j])
{
flag1=1;flag
2=1; break;
}
}
if(flag1==0)
{
for(i=0;i<m;i++)
{
if(fr[i]==-1)

Page4
{
fr[i]=page[j];fla
g2=1; break;
}
}
}
if(flag2==0)
{
for(i=0;i<m;
i++) lg[i]=0;
for(i=0;i<m;
i++)
{
for(k=j+1;k<=n;k++)
{
if(fr[i]==page[k])
{
lg[i]=k-j;
break;
}
}
}
found=0;
for(i=0;i<m;
i++)
{
if(lg[i]==0)
{
index=i;
found=1;
break;

}
}
if(found==0)
{
max=lg[0];

index=0;
for(i=0;i<m;i+
Page4
+)
{
if(max<lg[i])
{
max=lg[i]
; index=i;
}
}
}
fr[index]=p
age[j]; pf++;
}
display();
}

Page4
printf("Numberof page faults :
%d\n", pf);
pr=(float)pf/n*100;
printf("Pagefaultrate=%f\n",pr);getch();
}
voiddisplay()
{
int i;

for(i=0;i<m;i++)
printf("%d\
t",fr[i]);
printf("\n");
}

OUTPUT:
Enterlengthofthereferencestring:12
Enter the referencestring:1234 1 2
5 1 2 3 4 5 Enter no of frames: 3
1-1-1
12-1
123
124
124
124
125
125
125
325
425
425
Number of page
faults : 7 Page

Page4
fault rate =
58.333332

Page4
EXPERIMENT-6
DEADLOCKAVOIDANCE

AIM:ToSimulatebankersalgorithmforDeadLockAvoidance(Banker‘sAl
gorithm)

SOURCE CODE :

#include<stdio.
h>
#include<conio.
h>#include<stri
ng.h> void
main()
{
int alloc[10][10],max[10]
[10]; int
avail[10],work[10],total[
10];int i,j,k,n,need[10]
[10];
intm;
int
count=0,c=0
; char
finish[10];
clrscr();
printf("Enter the no. of processes and
resources:"); scanf("%d
%d",&n,&m);
for(i=0;i<=n;i+
+) finish[i]='n';
Page4
printf("Enter the claim
matrix:\n");
for(i=0;i<n;i++)
for(j=0;j<m;j++)
scanf("%d",&max[i]
[j]);
printf("Enter the allocation

matrix:\n"); for(i=0;i<n;i+
+)
for(j=0;j<m;j++)
scanf("%d",&alloc[i]
[j]); printf("Resource
vector:");
for(i=0;i<m;i++)
scanf("%d",&total[i]);
for(i=0;i<m;i++)
avail[i]=0;
for(i=0;i<n;i++)

Page4
for(j=0;j<m;j
++) avail[j]
+=alloc[i][j];
for(i=0;i<m;i
++)
work[i]=avail
[i];
for(j=0;j<m;j
++)
work[j]=total
[j]- work[j];
for(i=0;i<n;i+
+)
for(j=0;j<m;j
++) need[i]
[j]=max[i][j]-
alloc[i][j];A:
for(i=0;i<n;i++)
{
c=0;
for(j=0;j<m;j++)
if((need[i]
[j]<=work[j])&&(finish[i]==
'n')) c++;
if(c==m)
{
printf("All the resources can be allocated to
Process %d", i+1); printf("\n\nAvailable
resources are:");
for(k=0;k<m;k++)
{
work[k]+=alloc[i][k];
printf("%4d",work[k]);
}

Page4
printf("\n");
finish[i]='y';
printf("\nProcess %d executed?:%c
\n",i+1,finish[i]); count++;
}
}
if(count!
=n) goto
A;
else
printf("\
nSystemisinsafemode");
printf("\n The given state is
safe state"); getch();
}

Page4
OUTPUT

Enter the no. of processes and


resources: 4 3Enter the claim
matrix:
322
613
314
422
Entertheallocationmatrix:
100
612
211
002
Resourcevector:936
Allthe resources can be allocated to
Process 2Available resources are: 6
23
Process2executed?:y
AlltheresourcescanbeallocatedtoProcess3Availablereso
urcesare: 8 3 4 Process 3 executed?:y
AlltheresourcescanbeallocatedtoProcess4Availableresourcesare:836
Process4executed?:y
All the resources can be allocated to
Process 1Available resources are: 9
36
Process 1 executed?:y
System is in safe mode The
given state is safe state

Page4
EXPERIMENT-7
AIM: ToWriteaCprogramtosimulatediskschedulingalgorithms
a)FCFS b)SCAN c)C-SCAN

PROGRAM

(A) FCFSDISKSCHEDULINGALGORITHM
#include<std
io.h>main()
{
int t[20], n, I, j, tohm[20], tot=0;
float avhm;clrscr(); printf(“enter
the no.of tracks”);
scanf(“%d”,&n);
printf(“enter the tracks to be
traversed”);
for(i=2;i<n+2;i++)
scanf(“%d”,&t*i
+); for(i=1;i<n+1;i+
+)
{
tohm[i]=t[i+1
]-t[i];
if(tohm[i]<0)
tohm[i]=tohm
[i]*(-1);
}
for(i=1;i<n+1;i++)
tot+=tohm
[i];

Page5
avhm=(float)tot
/n;
printf(“Tracks traversed\
tDifference between tracks\n”);
for(i=1;i<n+1;i++)
printf(“%d\t\t\t%d\n”,t*i+,tohm*i+);
printf("\nAverage header movements:
%f",avhm);getch();
}

Page5
INPUT

Enterno.oftracks:9
Entertrackposition:55 58 60 70 18 90 150 160184

OUTPUT

Trackstraversed Differencebetweentracks
55 45
58 3
60 2
70 10
18 52
90 72
150 60
160 10
184 24

Averageheadermovements:30.888889

Page5
(B) SCANDISKSCHEDULINGALGORITHM
#include<std
io.h>main()
{
int t[20],d[20], h, i, j, n, temp, k,
atr[20],tot, p, sum=0; clrscr();
printf("enterthenooftrackstobetraver
esed"); scanf("%d'",&n);
printf("enter the position of
head"); scanf("%d",&h);
t[0]=0;t[1]=h;
printf("enter the
tracks");
for(i=2;i<n+2;i++)
scanf("%d",&t[i]);
for(i=0;i<n+2;i++)
{
for(j=0;j<(n+2)-i-1;j++)
{
if(t[j]>t[j+1])
{
temp=t[
j];
t[j]=t[j+
1];
t[j+1]=t
emp;
}}}
for(i=0;i<n
+2;i++)
if(t[i]==h)
j=i;k=i;
p=0;
while(t[j
]!=0) }
{
Page5
atr[p]=t[
j];

atr[p]=t[
j];j--; p+
+;
for(p=k+1;p<n+2
;p++,k++)
atr[p]=t[k+1
];
for(j=0;j<n+1;j++)
{
if(atr[j]>atr[j+1])
d[j]=atr[j]-atr[j+1];
else
d[j]=atr[j+1]-atr[j];
sum+=d[j];
}
printf("\nAverage header
movements:%f",(float)sum/n);
getch();}

Page5
INPUT

Enterno.oftracks:9
Entertrackposition:55 58 60 70 18 90 150 160184
OUTPUT
Trackstraversed Differencebetweentracks

150 50
160 10
184 24
90 94
70 20
60 10
58 2
55 3
18 37

Averageheadermovements:27.77

Page5
(C) C-SCANDISKSCHEDULINGALGORITHM
#include<std
io.h>main()
{
int t[20], d[20], h, i, j, n, temp, k,
atr[20],tot, p, sum=0; clrscr();
printf("enterthenooftrackstobetraver
esed"); scanf("%d'",&n);
printf("enter the position of
head"); scanf("%d",&h);
t[0]=0;t[1]=h;
printf("enter total
tracks");
scanf("%d",&tot);
t[2]=tot-1;
printf("enter the
tracks");
for(i=3;i<=n+2;i++)
scanf("%d",&t[i]);
for(i=0;i<=n+2;i++)
for(j=0;j<=(n+2)-i-1;j++)
if(t[j]>t[j+1])
{
{

}
for(i=0;i<=n+
2;i++)
if(t[i]==h);
j=i;brea
k;
p=0;
while(t[j]!
=tot-1)
Page5
t t[j];
e t[j]=t[j
m +1];
p t[j+1]=t
= emp
atr[p]=
t[j]; j+
+;
p++;
}
atr[p]=t[j];
p++; i=0;
while(p!=(n+3)&&t[i]!=t[h])
{
atr[p]=t[i]
;i++; p++;

Page5
for(j=0;j<n+2;j++)
{
if(atr[j]>atr[j+1])
d[j]=atr[j]-atr[j+1];
else
d[j]=atr[j+1]-atr[j];
sum+=d[j];
}
printf("total header movements
%d",sum); printf("avg is %f",
(float)sum/n);
getch();
}

INPUT

Enterthetrackposition:55 58 60 70 18 90 150 160


184Enterstarting
position :100

OUTPUT
Trackstraversed DifferenceBetweentracks
150 50
160 10
184 24
18 240
55 37
58 3
60 2
70 10
90 20
Averageseektime:35.7777779

Page5
Page5

You might also like