OneCompiler

os21

108

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;

}