Round Robin Scheduling is a scheduling algorithm used by the system to schedule CPU utilization. This is a preemptive algorithm. There exist a fixed time slice associated with each request called the quantum. The job scheduler saves the progress of the job that is being executed currently and moves to the next job present in the queue when a particular process is executed for a given time quantum.
For an additional 1 point of extra credit, change the scheduler algorithm so that it allocates processor time proportionally to each task's priority. If you choose to do this, you should come up with your own priority scheduling algorithm. We provide the functions do_getpriority and do_setpriority in scheduler.[ch] to help you with this. Describe your algorithm in your README.
One way to test your implementation of priority scheduling would be to modify test_preempt, so that each task has a different priority. If you observe that two counters are growing at different rates and the priority numbers and entry counts of processes/threads are changing as you expect, your algorithm probably works. You do not need to submit these test cases.
Task PrioritiesEach task is assigned a priority from 0 to ( configMAX_PRIORITIES - 1 ), where configMAX_PRIORITIES is defined within FreeRTOSConfig.h.If the port in use implements a port optimised task selection mechanism that usesa 'count leading zeros' type instruction (for task selection in a single instruction)and configUSE_PORT_OPTIMISED_TASK_SELECTION is set to 1 in FreeRTOSConfig.h, then configMAX_PRIORITIEScannot be higher than 32. In all other cases configMAX_PRIORITIES can take anyvalue within reason - but for reasons of RAM usage efficiency should be kept tothe minimum value actually necessary.Low priority numbers denote low priority tasks. The idle task has priority zero (tskIDLE_PRIORITY).The FreeRTOS scheduler ensures that tasks in the Ready or Running state willalways be given processor (CPU) time in preference to tasks of a lower prioritythat are also in the ready state. In other words, the task placed into the Running stateis always the highest priority task that is able to run.Any number of tasks can share the same priority. If configUSE_TIME_SLICING isnot defined, or if configUSE_TIME_SLICING is set to 1, then Ready state tasks of equalpriority will share the available processing time using a time sliced round robinscheduling scheme.
The operating system uses CPU scheduling and multiprogramming to provide each user with a small portion of a time. Computer systems that were designed primarily as batch systems have been modified to time-sharing systems.
Process scheduling is an essential part of a Multiprogramming operating systems. Such operating systems allow more than one process to be loaded into the executable memory at a time and the loaded process shares the CPU using time multiplexing.
It is also called a job scheduler. A long-term scheduler determines which programs are admitted to the system for processing. It selects processes from the queue and loads them into memory for execution. Process loads into the memory for CPU scheduling.
Medium-term scheduling is a part of swapping. It removes the processes from the memory. It reduces the degree of multiprogramming. The medium-term scheduler is in-charge of handling the swapped out-processes.
These algorithms are either non-preemptive or preemptive. Non-preemptivealgorithms are designed so that once a process enters the running state, it cannot be preempted until it completes its allotted time, whereas the preemptive scheduling is based on priority where a scheduler may preempt a low priority running process anytime when a high priority process enters into a ready state. 2b1af7f3a8