0% found this document useful (0 votes)
11 views10 pages

Aliya #19

The document contains C code for implementing shortest job first and priority scheduling algorithms. It defines process structures, sorts processes by arrival time or priority, calculates waiting and turnaround times, and outputs results.

Uploaded by

aamam0266
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
11 views10 pages

Aliya #19

The document contains C code for implementing shortest job first and priority scheduling algorithms. It defines process structures, sorts processes by arrival time or priority, calculates waiting and turnaround times, and outputs results.

Uploaded by

aamam0266
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 10

NAME : Aliya ijaz

ROLL NO :BSIT51F22R019
ASSIGNMENT NO #08
SUBMITTED TO: SIR WALEED

CODE#1

#include<stdio.h>

typedefstruct{
intarrival;
intburst;
intpriority;
}Process;

voidSJF(Processprocesses[],intn){
inttotal_turnaround_time=0;
inttotal_waiting_time=0;
intcurrent_time=0;

for(inti=0;i<n;i++){
for(intj=i+1;j<n;j++){
if(processes[i].arrival>processes[j].arrival||
(processes[i].arrival==processes[j].arrival&&
processes[i].burst>processes[j].burst)){
Processtemp=processes[i];
processes[i]=processes[j];
processes[j]=temp;
}
}
}

for(inti=0;i<n;i++){
if(current_time<processes[i].arrival){
current_time=processes[i].arrival;
}
total_turnaround_time+=current_time+processes[i].burst-processes[i].arrival;
total_waiting_time+=current_time-processes[i].arrival;
current_time+=processes[i].burst;
}

printf("SJFScheduling:\n");
printf("AverageTurnaroundTime:%f\n",(float)total_turnaround_time/n);
printf("AverageWaitingTime:%f\n",(float)total_waiting_time/n);
}

voidPriority(Processprocesses[],intn){
inttotal_turnaround_time=0;
inttotal_waiting_time=0;
intcurrent_time=0;

for(inti=0;i<n;i++){
for(intj=i+1;j<n;j++){
if(processes[i].priority>processes[j].priority){
Processtemp=processes[i];
processes[i]=processes[j];
processes[j]=temp;
}
}
}

for(inti=0;i<n;i++){
if(current_time<processes[i].arrival){
current_time=processes[i].arrival;
}

total_turnaround_time+=current_time+processes[i].burst-processes[i].arrival;
total_waiting_time+=current_time-processes[i].arrival;
current_time+=processes[i].burst;
}

printf("PriorityScheduling:\n");
printf("AverageTurnaroundTime:%f\n",(float)total_turnaround_time/n);
printf("AverageWaitingTime:%f\n",(float)total_waiting_time/n);
}

intmain(){
intn;
printf("Enterthenumberofprocesses:");
scanf("%d",&n);

Processprocesses[n];

for(inti=0;i<n;i++){
printf("Enterarrivaltime,CPUburst,andpriorityforprocess%d:",i+1);
scanf("%d%d
%d",&processes[i].arrival,&processes[i].burst,&processes[i].priority);
}

SJF(processes,n);
Priority(processes,n);

return0;
}

Output1:
Code2:

#include<stdio.h>

typedefstruct{
intpid;
intarrival;
intburst;
intwaiting_time;
intturnaround_time;
}Process;

voidSJF(Processprocesses[],intn){
inttotal_waiting_time=0;
inttotal_turnaround_time=0;
intcurrent_time=0;
intcompleted_processes=0;

for(inti=0;i<n;i++){
for(intj=i+1;j<n;j++){
if(processes[i].arrival>processes[j].arrival||
(processes[i].arrival==processes[j].arrival&&
processes[i].burst>processes[j].burst)){
Processtemp=processes[i];
processes[i]=processes[j];
processes[j]=temp;
}
}
}

while(completed_processes<n){
intmin_burst=1000;
intnext_process=-1;

for(inti=0;i<n;i++){
if(processes[i].arrival<=current_time&&processes[i].burst<min_burst){
min_burst=processes[i].burst;
next_process=i;
}
}

if(next_process==-1){
current_time++;
continue;
}

processes[next_process].waiting_time=current_time-processes[next_process].arrival;
processes[next_process].turnaround_time=processes[next_process].waiting_time+processes[next
_process].burst;

total_waiting_time+=processes[next_process].waiting_time;
total_turnaround_time+=processes[next_process].turnaround_time;

current_time+=processes[next_process].burst;
completed_processes++;
processes[next_process].burst=1000;
}

printf("ProcessDetails:\n");
printf("PID\tArrival\tBurst\tWaiting\tTurnaround\n");
for(inti=0;i<n;i++){
printf("%d\t%d\t%d\t%d\t%d\
n",processes[i].pid,processes[i].arrival,processes[i].burst,processes[i].waiting_time,processes[i].t
urnaround_time);
}

printf("AverageWaitingTime:%f\n",(float)total_waiting_time/n);
printf("AverageTurnaroundTime:%f\n",(float)total_turnaround_time/n);
}

intmain(){
intn;
printf("Enterthenumberofprocesses:");
scanf("%d",&n);

Processprocesses[n];

for(inti=0;i<n;i++){
processes[i].pid=i+1;
printf("EnterarrivaltimeandCPUburstforprocess%d:",i+1);
scanf("%d%d",&processes[i].arrival,&processes[i].burst);
}

SJF(processes,n);

return0;
}

Output2:
Code3:

#include<stdio.h>

typedefstruct{
intpid;
intburst;
intpriority;
intwaiting_time;
intturnaround_time;
}Process;

voidPriority(Processprocesses[],intn){
inttotal_waiting_time=0;
inttotal_turnaround_time=0;
intcurrent_time=0;
intcompleted_processes=0;

for(inti=0;i<n;i++){
for(intj=i+1;j<n;j++){
if(processes[i].priority>processes[j].priority){
Processtemp=processes[i];
processes[i]=processes[j];
processes[j]=temp;
}
}
}

while(completed_processes<n){
intmin_priority=1000;
intnext_process=-1;

for(inti=0;i<n;i++){
if(processes[i].priority<min_priority){
min_priority=processes[i].priority;
next_process=i;
}
}

processes[next_process].waiting_time=current_time;
processes[next_process].turnaround_time=processes[next_process].waiting_time+processes[next
_process].burst;

total_waiting_time+=processes[next_process].waiting_time;
total_turnaround_time+=processes[next_process].turnaround_time;

current_time+=processes[next_process].burst;
completed_processes++;

processes[next_process].priority=1000;
}

printf("ProcessDetails:\n");
printf("PID\tBurst\tPriority\tWaiting\tTurnaround\n");
for(inti=0;i<n;i++){
printf("%d\t%d\t%d\t%d\t%d\
n",processes[i].pid,processes[i].burst,processes[i].priority,processes[i].waiting_time,processes[i].
turnaround_time);
}

printf("AverageWaitingTime:%f\n",(float)total_waiting_time/n);
printf("AverageTurnaroundTime:%f\n",(float)total_turnaround_time/n);
}

intmain(){
intn;
printf("Enterthenumberofprocesses:");
scanf("%d",&n);

Processprocesses[n];

for(inti=0;i<n;i++){
processes[i].pid=i+1;
printf("EnterCPUburstandpriorityforprocess%d:",i+1);
scanf("%d%d",&processes[i].burst,&processes[i].priority);
}

Priority(processes,n);

return0;
}

You might also like