6/recent/ticker-posts

OS Priority Scheduling 2

Write a C Program to compute the waiting time and turnaround time of the list of processes using Priority scheduling algorithm given the process names, their burst times and priority.
Note: If more than one process has same priority then execute based on input order.


Input and Output format :

Refer Sample Input and Output for inputs and formatting specifications.

Use printf("%s%60d%60d%40d%40d\n",p1.name, p1.cbt, p1.arrt, p1.wt, p1.tat"); to display the details in the specified format.[same for process 2]
Use  "%s%40s%40s%30s%29s" to print the table header in  the specified format.



Sample Input and Output:

[Note:All the  Text in Bold corresponds to the input and the rest correspond to the output]

Enter the number of processes
4
Enter the name of process 1
A
Enter the burst time of process 1
5
Enter the priority of process 1
2
Enter the name of process 2
B
Enter the burst time of process 2
6
Enter the priority of process 2
1
Enter the name of process 3
C
Enter the burst time of process 3
3
Enter the priority of process 3
5
Enter the name of process 4
D
Enter the burst time of process 4
2
Enter the priority of process 4
4
Process Details
Process Name    CPU Burst Time          Priority               Waiting Time      Turnaround Time
B                              6                             1                         o                           6
A                              5                             2                         6                           11
D                              2                             4                        11                          13
C                              3                             5                        13                          16


Answer:

#include<stdio.h>
int main()
{
    struct process
    {
        char name;
        int wait,turn,temp,burst,arrival,tat;
        float awt,atat;
    }p[100];
    int pro;
    printf("Enter the number of processes\n");
    scanf("%d",&pro);
    char tempc;
    for(int i=0;i<pro;i++)
    {
        printf("Enter the name of process %d\n",i+1);
        scanf("%s",&p[i].name);
        printf("Enter the burst time of process %d\n",i+1);
        scanf("%d",&p[i].burst);
        printf("Enter the priority of process %d\n",i+1);
        scanf("%d",&p[i].arrival);
    }
    for(int i=0;i<pro;i++)
    {
        for(int j=0;j<pro-i-1;j++)
        {
            if(p[j].arrival>p[j+1].arrival)
            {
                p[i].temp=p[j].arrival;
                p[j].arrival=p[j+1].arrival;
                p[j+1].arrival=p[i].temp;
                
                tempc=p[j].name;
                p[j].name=p[j+1].name;
                p[j+1].name=tempc;
                
                p[i].temp=p[j].burst;
                p[j].burst=p[j+1].burst;
                p[j+1].burst=p[i].temp;
            }
        }
    }
    printf("Process Details\n");
    printf("%s%40s%40s%30s%30s\n","Process Name","CPU Burst Time","Priority","Waiting Time","Turnaround Time");
    for(int i=0;i<pro;i++)
    {
        p[i].wait=0;
        p[i].turn=0;
        for(int j=0;j<i;j++)
        {
            p[i].wait=p[i].wait+p[j].burst;
        }
        p[i].turn=p[i].wait+p[i].burst;
        printf("%s%60d%60d%40d%40d\n",&p[i].name,p[i].burst,p[i].arrival,p[i].wait,p[i].turn);
    }
    return 0;
}


Post a Comment

0 Comments