Skip to content

Commit 6f8832f

Browse files
committed
os lab 11
1 parent f89b391 commit 6f8832f

File tree

6 files changed

+326
-0
lines changed

6 files changed

+326
-0
lines changed

OS Lab/OS Lab By Week/lab11/add1.c

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
#include<stdio.h>
2+
#include<stdlib.h>
3+
4+
int* sort(int *a, int n)
5+
{
6+
int i, j;
7+
for(i=0; i<=n-1; i++)
8+
for(j=0; j<=n-i-1; j++)
9+
if(a[j+1] < a[j])
10+
{
11+
int temp = a[j+1];
12+
a[j+1] = a[j];
13+
a[j] = temp;
14+
}
15+
return a;
16+
}
17+
18+
int search(int *a, int key, int n)
19+
{
20+
int i=0;
21+
while(i<n && a[i] != key)
22+
i++;
23+
return i;
24+
}
25+
26+
int main()
27+
{
28+
int n, *queue, head;
29+
int i;
30+
printf("Enter the size of queue request :\n");
31+
scanf("%d", &n);
32+
queue = (int*)calloc(n+1, sizeof(int));
33+
for(i=1; i<=n; i++)
34+
scanf("%d", &queue[i]);
35+
printf("Enter the starting head position:\n");
36+
scanf("%d", &head);
37+
queue[0] = head;
38+
queue = sort(queue, n);
39+
int seek = 0;
40+
int pos = search(queue, head, n);
41+
printf("Track Traversed\tDifferent between Tracks\n");
42+
for(i=pos; i>=1; i--)
43+
{
44+
int diff = abs(queue[i]-queue[i-1]);
45+
seek += diff;
46+
printf("%d\t\t%d\n", queue[i-1], diff);
47+
}
48+
int d = queue[pos+1]-queue[0];
49+
seek += d;
50+
printf("%d\t\t%d\n", queue[pos+1], d);
51+
int k = pos+1;
52+
while(k<n)
53+
{
54+
int diff = queue[k+1] - queue[k];
55+
seek += diff;
56+
printf("%d\t\t%d\n", queue[k+1], diff);
57+
k++;
58+
}
59+
double avg = (seek/n);
60+
printf("Average Seek Time:%.2f\n", avg);
61+
return 0;
62+
}

OS Lab/OS Lab By Week/lab11/add2.c

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
#include <stdio.h>
2+
#include <stdlib.h>
3+
4+
int* sort(int *a, int n)
5+
{
6+
int i, j;
7+
for(i=0; i<=n-1; i++)
8+
for(j=0; j<=n-i-1; j++)
9+
if(a[j+1] < a[j])
10+
{
11+
int temp = a[j+1];
12+
a[j+1] = a[j];
13+
a[j] = temp;
14+
}
15+
return a;
16+
}
17+
18+
int search(int *a, int key, int n)
19+
{
20+
int i=0;
21+
while(i<n && a[i]!=key)
22+
i++;
23+
return i;
24+
}
25+
26+
int main()
27+
{
28+
int n, *queue, head, end;
29+
int i;
30+
printf("Enter the size of queue request :\n");
31+
scanf("%d", &n);
32+
queue = (int*)calloc(n+1, sizeof(int));
33+
for(i=1; i<=n; i++)
34+
scanf("%d", &queue[i]);
35+
printf("Enter the starting head position:\n");
36+
scanf("%d", &head);
37+
queue[0] = head;
38+
queue = sort(queue, n);
39+
int seek = 0;
40+
int pos = search(queue, head, n);
41+
printf("Track Traversed\tDifferent between Tracks\n");
42+
for(i=pos; i>=1; i--)
43+
{
44+
int diff = abs(queue[i]-queue[i-1]);
45+
seek += diff;
46+
printf("%d\t\t%d\n", queue[i-1], diff);
47+
}
48+
int d = abs(queue[n]-queue[0]);
49+
seek +=d;
50+
printf("%d\t\t%d\n", queue[n], d);
51+
int k = n-1; int start = queue[n];
52+
while(k>pos)
53+
{
54+
int dif = abs(start-queue[k]);
55+
seek += dif;
56+
printf("%d\t\t%d\n", queue[k], dif);
57+
start = queue[k]; k--;
58+
}
59+
double avg = (seek/n);
60+
printf("Average Seek Time :%.2f\n", avg);
61+
return 0;
62+
}
63+

OS Lab/OS Lab By Week/lab11/add3.c

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
#include <stdio.h>
2+
#include <stdlib.h>
3+
4+
void sstf(int noq, int qu[10], int st, int visit[10])
5+
{
6+
int min,s=0,p,i;
7+
while(1)
8+
{
9+
min=999;
10+
for(i=0;i<noq;i++)
11+
if (visit[i] == 0)
12+
{
13+
if(min > abs(st - qu[i]))
14+
{
15+
min = abs(st-qu[i]);
16+
p = i;
17+
}
18+
}
19+
if(min == 999)
20+
break;
21+
visit[p]=1;
22+
s=s + min;
23+
st = qu[p];
24+
}
25+
printf("Total seek time : %d\n", s);
26+
printf("Average seek time : %.2f\n", s/(float)noq);
27+
}
28+
29+
int main()
30+
{
31+
int i, n, noq, st;
32+
printf("Maximum disk size?\n");
33+
scanf("%d", &n);
34+
printf("Number of queue elements?\n");
35+
scanf("%d", &noq);
36+
int *qu = (int*) calloc(noq, sizeof(int));
37+
int *visit = (int *) calloc(noq, sizeof(int));
38+
printf("Enter work queue\n");
39+
for (i=0; i<noq; i++)
40+
{
41+
scanf("%d", &qu[i]);
42+
visit[i] = 0;
43+
}
44+
printf("Enter initial head position\n");
45+
scanf("%d", &st);
46+
sstf(noq, qu, st, visit);
47+
return 0;
48+
}

OS Lab/OS Lab By Week/lab11/prog1.c

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#include <stdio.h>
2+
#include <stdlib.h>
3+
4+
int main()
5+
{
6+
int queue[20], n, head, i, j, k, seek=0, max, diff;
7+
float aver;
8+
printf("Max disk range?\n");
9+
scanf("%d", &max);
10+
printf("Queue request size?\n");
11+
scanf("%d", &n);
12+
printf("Queue?\n");
13+
for(i=1; i<=n; i++)
14+
scanf("%d", &queue[i]);
15+
printf("Initial head at?\n");
16+
scanf("%d", &head);
17+
queue[0] = head;
18+
for(j=0; j<=n-1; j++)
19+
{
20+
diff = abs(queue[j+1]-queue[j]);
21+
seek += diff;
22+
printf("From %d to %d with seek %d\n", queue[j], queue[j+1], diff);
23+
}
24+
printf("total seek time = %d\n", seek);
25+
aver = seek/(float)n;
26+
printf("average seek time = %.2f\n", aver);
27+
return 0;
28+
}

OS Lab/OS Lab By Week/lab11/prog2.c

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
#include <stdio.h>
2+
#include <stdlib.h>
3+
4+
void scan(int noq, int qu[10], int st)
5+
{
6+
int i, j, s=0;
7+
for(i=0; i<noq; i++)
8+
{
9+
if(st < qu[i])
10+
{
11+
for(j=i-1; j>= 0;j--)
12+
{
13+
s=s+abs(st - qu[j]);
14+
st = qu[j];
15+
}
16+
s = s + abs(st - 0);
17+
st = 0;
18+
for(j = 1;j < noq;j++)
19+
{
20+
s= s + abs(st - qu[j]);
21+
st = qu[j];
22+
}
23+
break;
24+
}
25+
}
26+
printf("Total seek time : %d\n", s);
27+
printf("Average seek time : %.2f\n", s/(float) noq);
28+
}
29+
30+
int main()
31+
{
32+
int i, j, n, noq, st, t;
33+
printf("Maximum disk size?\n");
34+
scanf("%d", &n);
35+
printf("Number of queue elements?\n");
36+
scanf("%d", &noq);
37+
int *qu = (int*) calloc(noq, sizeof(int));
38+
int *visit = (int *) calloc(noq, sizeof(int));
39+
printf("Enter work queue\n");
40+
for (i=0; i<noq; i++)
41+
{
42+
scanf("%d", &qu[i]);
43+
visit[i] = 0;
44+
}
45+
printf("Enter initial head position\n");
46+
scanf("%d", &st);
47+
for (i=0; i<noq; i++)
48+
{
49+
for (j=i+1; j<noq; j++)
50+
{
51+
if (qu[i] > qu[j])
52+
{
53+
t = qu[i];
54+
qu[i] = qu[j];
55+
qu[j] = t;
56+
}
57+
}
58+
}
59+
scan(noq, qu, st);
60+
return 0;
61+
}

OS Lab/OS Lab By Week/lab11/prog3.c

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
#include <stdio.h>
2+
#include <stdlib.h>
3+
4+
int* sort(int *a,int n)
5+
{
6+
int i, j;
7+
for(i=0; i<=n-1; i++)
8+
for(j=0; j<=n-i-1; j++)
9+
if(a[j+1] < a[j])
10+
{
11+
int temp = a[j+1];
12+
a[j+1] = a[j];
13+
a[j] = temp;
14+
}
15+
return a;
16+
}
17+
18+
int search(int *a, int key, int n)
19+
{
20+
int i=0;
21+
while(i<n && a[i] != key)
22+
i++;
23+
return i;
24+
}
25+
26+
int main()
27+
{
28+
int n, *queue, head, end;
29+
int i;
30+
printf("Enter the size of queue request :\n");
31+
scanf("%d", &n);
32+
queue = (int*) calloc(n+1, sizeof(int));
33+
for(i=1; i<=n; i++)
34+
scanf("%d", &queue[i]);
35+
printf("Enter the starting head position:\n");
36+
scanf("%d", &head);
37+
printf("Enter the End Position :");
38+
scanf("%d", &end);
39+
queue[0] = head;
40+
queue = sort(queue, n);
41+
int seek = 0;
42+
int pos = search(queue, head, n);
43+
printf("Track Traversed\tDifferent between Tracks\n");
44+
for(i=pos; i>=1; i--)
45+
{
46+
int diff = abs(queue[i]-queue[i-1]);
47+
seek += diff;
48+
printf("%d\t\t%d\n", queue[i-1], diff);
49+
}
50+
seek += abs(queue[i]-0);
51+
int start = end-1;
52+
int k = n;
53+
while(k>pos)
54+
{
55+
int diff = abs(start-queue[k]);
56+
seek += diff;
57+
printf("%d\t\t%d\n", queue[k], diff);
58+
start = queue[k];
59+
k--;
60+
}
61+
double avg = (seek/n);
62+
printf("Average Seek Time :%.2f\n",avg);
63+
return 0;
64+
}

0 commit comments

Comments
 (0)