Question

In: Computer Science

Write a C program that creates a toy scheduler for the child processes in part A....

Write a C program that creates a toy scheduler for the child processes in part A. This program takes as input the number of processes, and all of the PIDs that are being echoed. HINT: Look up redirecting echo output. The program will schedule the ”processes” (note that these are not true processes, this is a toy system. You are effectively only scheduling echo statements). The result of the scheduler will be to echo the PID and current system time of each ”process” scheduled. The first toy scheduling algorithm to write this program for is First Come First Serve. After implementing FCFS, write a toy scheduler for Round Robin scheduling.

Here is code for part A:

prog.c:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/resource.h>
#include <sys/wait.h>

/**
 * This consists of a loop that echoes
 * the PID and the niceness of the
 * current process once per second.
 */
void proccessBody()
{
    for(;;)
    {
        printf("PID: %d; Niceness: %d;\n", getpid(), getpriority(PRIO_PROCESS, 0));
        sleep(1); // waiting for one second
    }
}

/**
 * This creates the n dummy processes.
 */
int main()
{
    // creating the processes
    const int n = 5;
    for(int i = 0; i < n; ++i)
    {
        if(fork() == 0)
        {
            // inside child process
            proccessBody(); // calling the process body
            exit(EXIT_SUCCESS); // child exiting successfully
        }
    }

    // waiting for the child processes to end
    while(wait(NULL) > 0);

    return 0;
}

Solutions

Expert Solution

void findTurnAroundTime( int processes[], int n,  

                  int bt[], int wt[], int tat[])

{

    for (int i = 0; i < n ; i++)

        tat[i] = bt[i] + wt[i];

}

   

void findavgTime( int processes[], int n, int bt[])

{

    int wt[n], tat[n], total_wt = 0, total_tat = 0;

   

    

    findWaitingTime(processes, n, bt, wt);

   

    findTurnAroundTime(processes, n, bt, wt, tat);

   

      

    printf("Processes   Burst time   Waiting time   Turn around time\n");

   

    

  

    for (int i=0; i<n; i++)

    {

        total_wt = total_wt + wt[i];

        total_tat = total_tat + tat[i];

        printf("   %d ",(i+1));

        printf("       %d ", bt[i] );

        printf("       %d",wt[i] );

        printf("       %d\n",tat[i] );

    }

    int s=(float)total_wt / (float)n;

    int t=(float)total_tat / (float)n;

    printf("Average waiting time = %d",s);

    printf("\n");

    printf("Average turn around time = %d ",t);

}

   

int main()

{

    //process id's

    int processes[] = { 1, 2, 3};

    int n = sizeof processes / sizeof processes[0];

   

    

    int burst_time[] = {10, 5, 8};

   

    findavgTime(processes, n, burst_time);

    return 0;

}


Related Solutions

In C language, Write a program called minishell that creates two child processes: one to execute...
In C language, Write a program called minishell that creates two child processes: one to execute 'ls -al' and the other to execute ‘grep minishell.c’. After the forks, the original parent process waits for both child processes to finish before it terminates. The parent should print out the pid of each child after it finishes. The standard output of 'ls -al' process should be piped to the input to the 'grep minishell.c' process. Make sure you close the unnecessary open...
Write a program in C or C++ that spawns three child processes. The first child sends...
Write a program in C or C++ that spawns three child processes. The first child sends a signal to the parent (you'll need the parent's pid!), which the parent shall catch. The second child waits for 10 seconds and then terminates. Once the parent detects that both of these has happened, it should signal the third child to terminate.
C programming language The program first creates a child process CP. So, there are two processes:...
C programming language The program first creates a child process CP. So, there are two processes: The parent process does the following: a. compute the summary of all the even number from 1, 2, .. 1000, and output this summary; b. wait for the termination of the child process CP, then terminate; The child process does the following: a. compute the summary of all the odd number from 1, 2, .. 1000, and output this summary; b. terminates;
Write a “C” program(Linux) that creates a pipe and forks a child process. The parent then...
Write a “C” program(Linux) that creates a pipe and forks a child process. The parent then sends the following message on his side of the pipe “I am your daddy! and my name is <pid-of the-parent-process>\n”, the child receives this message and prints it to its stdout verbatim. The parent then blocks reading on the pipe from the child. The child writes back to its parent through its side ofthe pipe stating “Daddy, my name is <pid-of-the-child>”. The parent then...
Write a C program that outputs a formatted header line and creates 10 children processes each...
Write a C program that outputs a formatted header line and creates 10 children processes each of which displays a line of the output as shown below. Notice the values of Child no and x, they have to be the same as shown here while the processes PIDs values are based on the what your system assigns to these processes. Child    PID        PPID      X 0           13654    13653    5 1           13655    13653    10 2           13656    13653    15 3           13657    13653    20...
Write a C++ program to display toy name
Write a C++ program to display toy name
Write a program (in C, or Java, or C++, or C#) that creates three new threads...
Write a program (in C, or Java, or C++, or C#) that creates three new threads (besides the already existing main thread) and synchronizes them in such a way that each thread displays it's thread id in turn for 5 iterations. The output of the program should look like this: Thread 1 - iteration no. 1 Thread 2 - iteration no. 1 Thread 3 - iteration no. 1 Thread 1 - iteration no. 2 Thread 2 - iteration no. 2...
You will write a C program to fork a child process. The child process will print...
You will write a C program to fork a child process. The child process will print the current time/date. The parent will wait for the child to complete. Here is how you can programmatically call the Linux date command from a C program. execlp("/bin/date","date",NULL); Your C file should be named myfork.c The binary will be named myfork.
In programming C language, write a program that creates a binary tree of words to be...
In programming C language, write a program that creates a binary tree of words to be used as a spell checking device for various text files. The list of words will come from a file “words.txt”. Your program is to read through the “words.txt” file and insert the word on that line into the tree in lexicographic order (also known as Dictionary order). Words in the file will be separated by spaces. Once this is done, your program should then...
C++ : Write a program that creates a login name for a user, given the user's...
C++ : Write a program that creates a login name for a user, given the user's first name, last name, and a four-digit integer as input. Output the login name, which is made up of the first five letters of the last name, followed by the first letter of the first name, and then the last two digits of the number (use the % operator). If the last name has less than five letters, then use all letters of the...
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT