os21
Q1)
#include <stdio.h>
#include <stdlib.h>
void fcfs(int requests[], int n, int start);
int main() {
int n, start;
printf("Enter the total number of disk blocks: ");
scanf("%d", &n);
int *requests = (int *)malloc(n * sizeof(int));
printf("Enter the disk request string:\n");
for (int i = 0; i < n; i++) {
scanf("%d", &requests[i]);
}
printf("Enter the starting head position: ");
scanf("%d", &start);
fcfs(requests, n, start);
free(requests);
return 0;
}
void fcfs(int requests[], int n, int start) {
int total_head_movements = 0;
printf("List of requests in order of service:\n");
int cur = start;
for (int i = 0; i < n; i++) {
printf("%d -> ", requests[i]);
total_head_movements += abs(cur - requests[i]);
cur = requests[i];
}
printf("\nTotal number of head movements: %d\n", total_head_movements);
}
Q2)
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <mpi.h>
#define ARRAY_SIZE 1000
int main(int argc, char *argv[]) {
MPI_Init(&argc, &argv);
int rank;
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
int *arr = (int *)malloc(ARRAY_SIZE * sizeof(int));
if (rank == 0) {
srand(time(NULL));
for (int i = 0; i < ARRAY_SIZE; i++) {
arr[i] = rand() % 1000;
}
}
int sum_local = 0;
for (int i = rank; i < ARRAY_SIZE; i += size) {
if (arr[i] % 2 == 0) {
sum_local += arr[i];
}
}
int sum_global;
MPI_Reduce(&sum_local, &sum_global, 1, MPI_INT, MPI_SUM, 0, MPI_COMM_WORLD);
if (rank == 0) {
printf("Sum of even numbers: %d\n", sum_global);
}
MPI_Finalize();
return 0;
}