Professional Documents
Culture Documents
OSPrac
OSPrac
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <semaphore.h>
#include <unistd.h>
#define NUM_THREADS 2
// Shared resource
int shared_variable = 0;
sem_t mutex;
int id = ((int)thread_id);
sem_wait(&mutex);
// Critical section
shared_variable++;
sem_post(&mutex);
// Non-critical section
usleep(100000);
pthread_exit(NULL);
int main() {
pthread_t threads[NUM_THREADS];
int thread_ids[NUM_THREADS];
// Initialize semaphore
sem_init(&mutex, 0, 1);
// Create threads
thread_ids[i] = i;
// Join threads
pthread_join(threads[i], NULL);
// Destroy semaphore
sem_destroy(&mutex);
return 0;
}
2. PROCESS CREATION USING FORK(), GETPID(),GETPPID(), WAIT()
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
int main() {
pid_t child_pid;
child_pid = fork();
if (child_pid == -1) {
perror("fork");
exit(EXIT_FAILURE);
if (child_pid == 0) {
} else {
return 0;
}
3. BANKERS ALGORITHM FOR DEADLOCKS
#include <stdio.h>
void main() {
printf("\n Enter instances for al[%d][%d] = ", i,j); // al[][] matrix is for allocated instances
scanf("%d", &al[i][j]);
printf("\n Enter instances for max[%d][%d] = ", i,j); // max[][] matrix is for max instances
scanf("%d", &max[i][j]);
printf("\n Available Resource for av[%d] = ",i); // av[] matrix is for available instances
scanf("%d", &av[i]);
}
printf("\n");
printf("\n\n");
printf("\n");
printf("\n\n");
printf("\n");
y = 0;
while (p != 0) {
z = 0;
// or not
z++; // counter if condition TRUE
// is TRUE
}} // end while
printf("\n");
4. FCFS
#include <stdio.h>
wt[0] = 0;
total_wt += wt[i];
total_tat += tat[i];
int main() {
int n;
scanf("%d", &n);
int burst_time[n];
scanf("%d", &burst_time[i]);
findAverageTime(n, burst_time);
return 0;
}
5. SJF
#include <stdio.h>
int temp[n];
temp[i] = bt[i];
while (complete != n) {
if ((temp[j] <= t) && (temp[j] < minm) && (temp[j] > 0)) {
minm = temp[j];
shortest = j;
temp[shortest] = 0;
wt[shortest] = t;
t += bt[shortest];
complete++;
minm = 9999;
total_wt += wt[i];
total_tat += tat[i];
int main() {
int n;
scanf("%d", &n);
int burst_time[n];
scanf("%d", &burst_time[i]);
findAverageTime(n, burst_time);
return 0;
}
6. Priority Scheduling
#include <stdio.h>
wt[0] = 0;
pos = i;
pos = j;
temp = priority[i];
priority[i] = priority[pos];
priority[pos] = temp;
temp = bt[i];
bt[i] = bt[pos];
bt[pos] = temp;
total_wt += wt[i];
total_tat += tat[i];
int main() {
int n;
scanf("%d", &n);
scanf("%d", &burst_time[i]);
printf("Priority: ");
scanf("%d", &priority[i]);
return 0;
7. ROUND ROBIN
#include <stdio.h>
void findWaitingTime(int processes[], int n, int bt[], int wt[], int quantum) {
int remaining_time[n];
remaining_time[i] = bt[i];
wt[i] = 0;
while (1) {
int done = 1;
if (remaining_time[i] > 0) {
t += quantum;
remaining_time[i] -= quantum;
} else {
t += remaining_time[i];
wt[i] = t - bt[i];
remaining_time[i] = 0;
if (done == 1)
break;
void findTurnAroundTime(int processes[], int n, int bt[], int wt[], int tat[]) {
total_wt += wt[i];
total_tat += tat[i];
}
printf("Average waiting time = %.2f\n", total_wt / n);
int main() {
int n, quantum;
scanf("%d", &n);
processes[i] = i + 1;
scanf("%d", &burst_time[i]);
scanf("%d", &quantum);
return 0;
8. LRU
#include <stdio.h>
printf("Frames: ");
if (frames[i] == -1) {
printf("[ ] ");
} else {
printf("\n");
if (frames[i] == page) {
int minIndex = 0;
minIndex = i;
return minIndex;
}
void lruPageReplacement(int pages[], int n, int frames[], int frameCount) {
int pageFaults = 0;
printFrames(frames, frameCount);
frames[lruIndex] = pages[i];
pageFaults++;
} else {
if (frames[j] == pages[i]) {
break;
int main() {
scanf("%d", &pages[i]);
return 0;
9. LFU
#include <stdio.h>
#include <limits.h>
printf("Frames: ");
if (frames[i] == -1) {
printf("[ ] ");
} else {
printf("\n");
}
int isPageInFrames(int frames[], int n, int page) {
if (frames[i] == page) {
int minIndex = 0;
minIndex = i;
return minIndex;
int pageFaults = 0;
printFrames(frames, frameCount);
frames[lfuIndex] = pages[i];
frequency[lfuIndex] = 1; // Set frequency to 1 for the newly added page
pageFaults++;
} else {
if (frames[j] == pages[i]) {
break;
int main() {
scanf("%d", &n);
scanf("%d", &pages[i]);
return 0;