Operating System Lab: ETCS-352
Operating System Lab: ETCS-352
41714802716
INDEX
Piyush Gupta
41714802716
if [ ${w[$i]} -le 0 ]
then
((w[i]=0))
((t[i]=b[i]))
fi
if [ ${w[$i]} -gt 0 ]
then
((t[i]=b[i]+w[i]))
fi
((i++))
done
i=1
while [ $i -le $num ]
do
echo "p[$i] : waiting time = ${w[$i]} , compeletion time = ${t[$i]}"
((i++))
done
Piyush Gupta
41714802716
OUTPUT :
nitin@nitin-G41MT-S2:~/Desktop$ ./fcfs.sh
enter number of processes
5
enter burst time and arrival time of processes
p[1] :
3
2
p[2] :
5
3
p[3] :
1
3
p[4] :
1
5
p[5] :
7
10
p[1] : waiting time = 0 , compeletion time = 3
p[2] : waiting time = 2 , compeletion time = 7
p[3] : waiting time = 7 , compeletion time = 8
p[4] : waiting time = 6 , compeletion time = 7
p[5] : waiting time = 2 , compeletion time = 9
Piyush Gupta
41714802716
Experiment 2
AIM : Write a program to implement CPU scheduling for shortest job first.
short=1000
ind=0
i=1
j=1
total=0
k=0
while [ $i -le $num ]
do
echo "p[$i] : "
read b[$i]
read a[$i]
c[$i]=0
w[$i]=0
((total=total+b[i]))
((i++))
done
i=0
((total=i-1))
i=1
average_w=0
average_t=0
OUTPUT :
nitin@nitin-G41MT-S2:~/Desktop/bash$ ./sjf.sh
enter number of jobs
6
enter burst time and arrival time of jobs
p[1] :
1
2
p[2] :
1
3
p[3] :
3
3
p[4] :
1
4
p[5] :
2
6
p[6] :
1
12
-1 -1 1 2 4 3 3 3 5 5 -1 -1 6
average waiting time : 0
average turn around time : 2
indiviual waiting time : 0 0 2 0 2 0
indiviual turn around time : 1 1 5 1 4 1
Piyush Gupta
41714802716
Experiment 3
AIM : Write a program to perform priority scheduling.
OUTPUT :
nitin@nitin-G41MT-S2:~/Desktop$ ./rr.sh
enter number of processes
5
enter burst time and arrival time of jobs in increasing order of arrival time
p[1] :
5
1
p[2] :
2
3
p[3] :
1
4
p[4] :
6
8
p[5] :
9
9
enter value of quantum
2
waiting times : 3 0 3 5 6
turnaround times : 8 2 4 11 15
sequence of execution : p1 p2 p1 p3 p1 p4 p5 p4 p5 p4 p5 p5 p5
Piyush Gupta
41714802716
EXPERIMENT 5
AIM: Write a program for page replacement policy using a) LRU b) FIFO c) Optimal.
#include<stdio.h>
int n=13,nf=4;
int p[4];
int hit=0;
int i,j,k;
int
pgfaultcnt=0;
void
initialize(){
pgfaultcnt=0;
p[i]=9999;
hit=0;
if(p[j]==data){
hit=1;
break;
return hit;
int hitind;
if(p[k]==data){
hitind=k;
break;
return hitind;
void dispPages(){
if(p[k]!=9999)
printf(" %d",p[k]);
void dispPgFaultCnt(){
void fifo(){
initialize();
printf("\nFor %d :",in[i]);
if(isHit(in[i])==0){
p[k]=p[k+1];
p[k]=in[i];
Piyush Gupta
41714802716
pgfaultcnt++;
dispPages();
else
dispPgFaultCnt();
void optimal(){
initialize();
int near[50];
printf("\nFor %d :",in[i]);
if(isHit(in[i])==0){
int pg=p[j];
int found=0;
if(pg==in[k]){
near[j]=k;
found=1;
break;
else
found=0;
}
Piyush Gupta
41714802716
if(!found)
near[j]=9999;
int max=-9999;
int repindex;
if(near[j]>max){
max=near[j];
repindex=j;
p[repindex]=in[i];
pgfaultcnt++;
dispPages();
else
dispPgFaultCnt();
void lru(){
initialize();
int least[50];
printf("\nFor %d :",in[i]);
if(isHit(in[i])==0){
Piyush Gupta
41714802716
int pg=p[j];
int found=0;
if(pg==in[k]){
least[j]=k;
found=1;
break;
else
found=0;
if(!found)
least[j]=-9999;
int min=9999;
int repindex;
if(least[j]<min){
min=least[j];
repindex=j;
p[repindex]=in[i];
pgfaultcnt++;
dispPages();
Piyush Gupta
41714802716
}
else
dispPgFaultCnt();
int main(){
lru();
return 0;
Output:
Piyush Gupta
41714802716
Piyush Gupta
41714802716
EXPERIMENT 6
AIM: Write a program to implement first fit, best fit, worst fit algorithm for memory management.
#include<stdio.h>
int main(){
int alloc[10],flag[10],i,j;
int np=3;
int nb=3;
printf("First Fit");
for(i=0;i<np;i++){
for(j=0;j<nb;j++){
if(p[i]<=b[j]){
alloc[j]=p[i];
printf("\nAlloc[%d]",alloc[j]);
flag[i]=0,b[j]=0;
break;
}else flag[i]=1;
for(i=0;i<np;i++){
if(flag[i]!=0)
printf("\n\nBest Fit\n");
for(i=0;i<nb;i++){
for(j=i+1;j<nb;j++){
if(c[i]>c[j]){
int temp=c[i];c[i]=c[j];
c[j]=temp;
for(i=0;i<nb;i++)
printf("\nBlock %d:%d",i,c[i]);
for(i=0;i<np;i++){
for(j=0;j<nb;j++){
if(p[i]<=c[j]){
alloc[j]=p[i];
printf("\nAlloc[%d]",alloc[j]);
flag[i]=0,c[j]=0;
break;
}else flag[i]=1;
for(i=0;i<np;i++){
if(flag[i]!=0)
Piyush Gupta
41714802716
printf("\n\nWorst Fit\n");
for(i=0;i<nb;i++){
for(j=i+1;j<nb;j++){
if(d[i]<d[j]){
int temp=d[i];d[i]=d[j];d[j]=temp;
for(i=0;i<nb;i++)
printf("\nBlock %d:%d",i,d[i]);
for(i=0;i<np;i++){
for(j=0;j<nb;j++){
if(p[i]<=d[j]){
alloc[j]=p[i];printf("\nAlloc[%d]",alloc[j]);
flag[i]=0;d[j]=0;break;
}else flag[i]=1;
for(i=0;i<np;i++){
if(flag[i]!=0)
}
Piyush Gupta
41714802716
return 0;
Output:
Piyush Gupta
41714802716
EXPERIMENT 7
PROGRAM:
#include<stdio.h>
int main() {
bufsize = 10;
while(choice !=3) {
scanf("%d", &choice);
switch(choice) {
case 1: if((in+1)%bufsize==out)
printf("\nBuffer is Full");
else {
break;
printf("\nBuffer is Empty");
else {
consume = buffer[out];
Piyush Gupta
41714802716
out = (out+1)%bufsize;
break;
return 0;
Output:
Piyush Gupta
41714802716
EXPERIMENT 8
PROGRAM:
#include<iostream.h>
void calculateNeed(int need[P][R], int maxm[P][R], int allot[P][R]) { for (int i = 0 ; i < P ; i++)
bool isSafe(int processes[], int avail[], int maxm[][R],int allot[][R]){ int need[P][R];
int safeSeq[P];
int work[R];
Piyush Gupta
41714802716
for (int i = 0; i < R ; i++)
work[i] = avail[i];
int count = 0;
if (finish[p] == 0) {
int j;
break;
if (j == R){
work[k] += allot[p][k];
safeSeq[count++] = p;
finish[p] = 1;
found = true;
}}}
if (found == false) {
return false;
}}
cout << "System is in safe state.\nSafe sequence is: "; for (int i = 0; i < P ;
i++)
return true;
}
Piyush Gupta
41714802716
int main() {
int maxm[][R] = {{7, 5, 3},{3, 2, 2},{9, 0, 2},{2, 2, 2},{4, 3, 3}}; int allot[][R] = {{0, 1, 0},{2, 0, 0},{3, 0,
2},{2, 1, 1},{0, 0, 2}};
return 0;
OUTPUT: