user567879
user567879

Reputation: 5349

How scheduler gets called when a high priority task comes

I have read here about situations where a scheduler is called. But what happens when a high priority task comes?

Upvotes: 1

Views: 286

Answers (3)

lsk
lsk

Reputation: 532

Scheduler maintains a set of all tasks that are ready to run in the system. In a multi-priority system, the task set usually supports the notion of priority. When a high priority task arrives in the system, it is put into the set of tasks sorted by priority.

There are certain points in the kernel where we check if a better process is available to run, compared to the currently running process. This can happen when the time slice expires OR when the ISR is done OR when a lock is unlocked, etc. Look for calls to switch() OR _switch() or something similar...this is the routine that checks the set of tasks and determines if the current task is the highest prio.

If the current task is not the highest prio task, then the current task is switched out and the highest prio task is obtained from the task set and scheduled to run.

Upvotes: 0

Ben
Ben

Reputation: 7628

High priority tasks are scheduled more often than low priority tasks but when a high priority task comes it still has to wait until the quantum of the running task is over.

Upvotes: 1

sealz
sealz

Reputation: 5408

Priority changes and is adjusted based on past CPU usage.

The longer version

In Linux, process priority is dynamic. The scheduler keeps track of what processes are doing and adjusts their priorities periodically; in this way, processes that have been denied the use of the CPU for a long time interval are boosted by dynamically increasing their priority. Correspondingly, processes running for a long time are penalized by decreasing their priority.

Upvotes: 0

Related Questions