Abc C
Abc C
Abc C
Dinning philospher
#include <stdio.h>
#include <pthread.h>
#include <semaphore.h>
#include <unistd.h>
#define THINKING 0
#define HUNGRY 1
#define EATING 2
sem_t S[N]; // Semaphore array for each philosopher (for waiting on forks)
state[ph_num] = EATING;
sem_post(&S[ph_num]);
}
void take_fork(int ph_num) {
state[ph_num] = HUNGRY;
test(ph_num);
sem_wait(&S[ph_num]);
sleep(1);
printf("Philosopher %d puts down fork %d and %d\n", ph_num + 1, LEFT + 1, ph_num + 1);
test(LEFT);
test(RIGHT);
while (1) {
sleep(1); // Thinking
take_fork(*ph_num); // Trying to eat
sleep(0); // Eating
int main() {
pthread_t thread_id[N];
pthread_join(thread_id[i], NULL);
return 0;
}
//2…FCFS
#include<stdio.h>
int ct[n];
int st[n];
for(int i=0;i<n;i++){
if(i == 0){
st[i] = at[i];
else{
if(ct[i-1]>at[i]){
st[i]=ct[i-1];
else{
st[i]=at[i];
ct[i]=st[i]+bt[i];
tat[i]=ct[i]-at[i];
wt[i]=tat[i]-bt[i];
int wt[n];
int tat[n];
double twt=0,ttat=0;
findwaitingtime(n,bt,at,wt,tat);
printf("Gantt chart:");
for(int i=0;i<n;i++){
printf("P%d", i);
}
printf("\n");
for(int i=0;i<n;i++){
ttat += tat[i];
twt += wt[i];
int main(){
int n;
scanf("%d",&n);
int at[n],bt[n];
for(int i=0;i<n;i++){
scanf("%d",&at[i]);
for(int i=0;i<n;i++){
scanf("%d",&bt[i]);
ganttchartAndAvg(n, bt,at);
return 0;
}
//3…sjf---NP
#include <stdio.h>
#include <stdbool.h>
int current_time = 0;
int total_completed = 0;
completed[i] = 0;
min_bt = bt[i];
shortest = i;
if (shortest != -1){
current_time += bt[shortest];
finish_time[shortest] = current_time;
wt[shortest] = 0;
completed[shortest] = 1;
total_completed++;
else{
current_time++;
}
twt += wt[i];
ttat += tat[i];
int main() {
int n;
scanf("%d", &n);
scanf("%d", &bt[i]);
scanf("%d", &at[i]);
return 0;
//4….producer_consumer
#include <pthread.h>
#include <semaphore.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#define BUFFER_SIZE 5
int buffer[BUFFER_SIZE];
int in = 0, out = 0;
sem_t empty;
sem_t full;
pthread_mutex_t mutex;
int item;
return NULL;
int item;
return NULL;
int main() {
sem_init(&empty, 0, BUFFER_SIZE);
sem_init(&full, 0, 0);
pthread_mutex_init(&mutex, NULL);
pthread_join(prod_thread, NULL);
pthread_join(cons_thread, NULL);
sem_destroy(&empty);
sem_destroy(&full);
pthread_mutex_destroy(&mutex);
return 0;
//5…priority
#include <stdio.h>
int main(){
int n, i, j;
scanf("%d", &n);
process[i] = i;
printf("Enter burst time, arrival time and priority of P%d: ", i);
priority[i] = priority[j];
priority[j] = temp;
temp = burst_time[i];
burst_time[i] = burst_time[j];
burst_time[j] = temp;
temp = arrival_time[i];
arrival_time[i] = arrival_time[j];
arrival_time[j] = temp;
temp = process[i];
process[i] = process[j];
process[j] = temp;
waiting_time[0] = 0;
turnaround_time[0] = burst_time[0];
printf("\n");
avg_waiting_time += waiting_time[i];
avg_turnaround_time += turnaround_time[i];
return 0;
}
//6….bankers algo
#include <stdio.h>
#define MAX 10
int need[MAX][MAX];
int ans[MAX];
int ind = 0;
if (f[i] == 0) {
int flag = 0;
flag = 1;
break;
if (flag == 0) {
ans[ind++] = i;
avail[y] += alloc[i][y];
}
f[i] = 1;
if (f[i] == 0) {
return 0;
return 1;
int main() {
int n, m;
scanf("%d", &n);
scanf("%d", &m);
scanf("%d", &alloc[i][j]);
}
printf("Enter MAX Matrix:\n");
scanf("%d", &max[i][j]);
scanf("%d", &avail[i]);
return 0;
#include<stdio.h>
#include<conio.h>
#define max 30
int main(){
int n,i,j,temp,sq=0,tq,count=0;
int at[max],bt[max],ct[max],tat[max],wt[max],rem_bt[max] ;
scanf("%d",&n);
scanf("%d%d",&at[i],&bt[i]);
rem_bt[i] = bt[i];
}
scanf("%d",&tq);
if(rem_bt[i] == 0){
continue;
rem_bt[i] -= tq;
sq += tq;
else{
sq += rem_bt[i];
rem_bt[i] = 0;
ct[i] = sq;
count++;
awt += wt[i];
atat += tat[i];
printf("%d\t\t%d\t\t%d\t\t%d\t\t%d\t\t%d\n",i+1,at[i],bt[i],ct[i],tat[i],wt[i]);
awt = awt/n;
atat = atat/n;
return 0;
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
int main() {
int pipefds[2];
pid_t pid;
char read_msg[50];
if (pipe(pipefds) == -1) {
perror("pipe");
exit(EXIT_FAILURE);
pid = fork();
if (pid == -1) {
perror("fork");
exit(EXIT_FAILURE);
close(pipefds[1]);
close(pipefds[0]);
close(pipefds[0]);
close(pipefds[1]);
wait(NULL);
return 0;}
//…sjf preemtive…9
#include <stdio.h>
struct Process {
};
int main() {
scanf("%d", &n);
printf("Enter Arrival Time and Burst Time for Process %d: ", i + 1);
p[i].id = i + 1; // Process ID
}
// Start processing with SJF Preemptive
while (completed != n) {
// Find the process with the shortest remaining time that has arrived
shortest = -1;
min_rt = MAX;
if (p[i].at <= current_time && p[i].rt > 0 && p[i].rt < min_rt) {
min_rt = p[i].rt;
shortest = i;
if (shortest == -1) {
continue;
p[shortest].rt--;
current_time++;
if (p[shortest].rt == 0) {
completed++;
avg_wt += p[shortest].wt;
avg_tat += p[shortest].tat;
avg_wt /= n;
avg_tat /= n;
return 0;
#include <stdio.h>
struct Process {
int isSystemProcess; // Flag to indicate if the process is a system process (1 for system, 0 for user)
};
temp = p[i];
p[i] = p[j];
p[j] = temp;
int currentTime = 0;
currentTime = p[i].at;
}
}
if (p[i].isSystemProcess == 1) {
systemQueue[systemCount++] = p[i];
} else {
userQueue[userCount++] = p[i];
sortByArrival(systemQueue, systemCount);
sortByArrival(userQueue, userCount);
calculateTimes(systemQueue, systemCount);
printf("ID\tAT\tBT\tCT\tTAT\tWT\n");
calculateTimes(userQueue, userCount);
printf("ID\tAT\tBT\tCT\tTAT\tWT\n");
int main() {
int n;
scanf("%d", &n);
// Input: arrival time, burst time, and process type for each process
printf("Enter Arrival Time and Burst Time for Process %d: ", i + 1);
scanf("%d", &p[i].isSystemProcess);
multiLevelQueueScheduling(p, n);
return 0;