Deepak1.docx

  • Uploaded by: Deepak Kishan
  • 0
  • 0
  • August 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Deepak1.docx as PDF for free.

More details

  • Words: 396
  • Pages: 5
Operating System -Assignment Question 17- Design a scheduler following non-preemptive scheduling approach to schedule the processes that arrives at different units and having burst time double the arrival time.Process is not being pre-empted until it finishes its service time. Compute the average waiting time and average turnaround time. What should be the average waiting time if processes are executed according to shortest job first scheduling approach with the same attribute values.

#include<stdio.h>

struct time { int p,art,but,wtt,tat,st; };

int process(struct time a[], int pro,int t) {

int i,minpro, mintime=999; for(i=0;i<pro;i++) { if(a[i].art >= t && a[i].st == 0) { if(mintime < a[i].but) { mintime = a[i].but; minpro = i; } } } a[minpro].st = 1; return minpro; }

void ganttchart(struct time a[],int gc[],int pro) { int i,x=0; printf("Gantt Chart\n"); printf("0"); for(i=0;i<pro;i++) { x = x + a[gc[i]].but;

printf(" -> [P%d] <- %d",a[gc[i]].p,x); } printf("\n"); return; }

int main() { int i,pro,curpro,t=0,gc[100]; struct time a[100]; float avgwt=0,avgtt=0; printf("Enter Number of Processes\n"); scanf("%d",&pro); for(i=0;i<pro;i++) { printf("Enter Arrival Time & Burst Time for Process P%d\n",i); a[i].p = i; scanf("%d%d",&a[i].art,&a[i].but); a[i].st = 0; }

for(i=0;i<pro;i++) { curpro = process(a,pro,t);

a[curpro].wtt = t - a[curpro].art; a[curpro].tat = a[curpro].art + a[curpro].but; t = t + a[curpro].but; avgwt = avgwt + a[curpro].wtt; avgtt = avgtt + a[curpro].tat; gc[i] = curpro; } printf("***************************************\n"); printf("Pro\tArTi\tBuTi\tTaTi\tWtTi\n"); printf("***************************************\n"); for(i=0;i<pro;i++) { printf("%d\t%d\t%d\t%d\t%d\n",a[i].p,a[i].art,a[i].but,a[i].tat,a[i].wtt ); } printf("***************************************\n"); ganttchart(a,gc,pro); printf("***************************************\n"); avgwt = avgwt/pro; avgtt = avgtt/pro; printf("Average Waiting Time : %.2f\n",avgwt); printf("Average Turnaround Time : %.2f\n",avgtt); return 0;

} 1. The choice of preemptive and non preemptive arises when a new process arrives at the ready queue and a previous process is not finished and is being executed. If the next CPU burst of new process is shorter than current executing process, then in preemptive version , it will stop that process and will start executing the newly arrived process. 2. While, in non preemptive version of SJF, even if the arriving process is shorter than currently executing process, current process is not stopped . After the current process finishes , then the new process gets in the queue. This is the key difference between preemptive and preemptive version of SJF. 3. The current state of the process is saved by the context switch and the CPU is given to another process. Process

Burst time

Arrival time

P1

2

1

P2

4

2

P3

6

3

P4

8

4

Awt=2992128 Atat=997380

More Documents from "Deepak Kishan"

Simulation Questions.doc
August 2019 10
Deepak1.docx
August 2019 12
A.docx
October 2019 36
Question Paper 66666.pdf
October 2019 39
Me6701_iq.pdf
November 2019 41
Pawan.docx
November 2019 41