Os Lab 12 I200958
Os Lab 12 I200958
Task1:
Solution:
#include <stdio.h>
#include <pthread.h>
int main() {
pthread_join(add_thread, NULL);
pthread_join(sub_thread, NULL);
pthread_join(mul_thread, NULL);
pthread_join(div_thread, NULL);
printf("Addition: %.2lf\n", add_result);
printf("Subtraction: %.2lf\n", sub_result);
printf("Multiplication: %.2lf\n", mul_result);
printf("Division: %.2lf\n", div_result);
return 0;
}
ScreenShot:
Task2:
#include <stdio.h>
#include <pthread.h>
#include <math.h>
#include <stdlib.h>
void* calculate_square(void* arg) {
double* input = (double*) arg;
double* result = (double*) malloc(sizeof(double)); // Allocate
memory for result
*result = (*input) * (*input); // Calculate square
pthread_exit(result); // Return result
}
int main() {
double number;
printf("Enter a number: ");
scanf("%lf", &number);
pthread_t square_thread, square_root_thread;
double *square_result, *square_root_result;
free(square_result);
free(square_root_result);
return 0;
}
Screenshot:
Task3:
#include <stdio.h>
#include <pthread.h>
#include <stdlib.h>
#include <unistd.h>
pthread_attr_getstacksize(attr, &stack_size);
pthread_attr_getschedpolicy(attr, &policy);
if (policy == SCHED_FIFO) {
printf("Scheduling policy: SCHED_FIFO\n");
} else if (policy == SCHED_RR) {
printf("Scheduling policy: SCHED_RR\n");
} else if (policy == SCHED_OTHER) {
printf("Scheduling policy: SCHED_OTHER\n");
} else {
printf("Unknown scheduling policy\n");
}
pthread_exit(NULL);
}
int main() {
pthread_t thread;
pthread_attr_t attr;
pthread_attr_init(&attr);
pthread_attr_setstacksize(&attr, STACK_SIZE);
pthread_attr_setschedpolicy(&attr, SCHED_RR);
printf("Thread completed.\n");
return 0;
}
Screenshot: