Seminar on Linux Process Management - School of...
Transcript of Seminar on Linux Process Management - School of...
Seminar on
Linux Process Management
Presentation by Manoj DhageMTech 1st Year,
SIT, IIT Kharagpur.
Outline
Process - process descriptor, process state, process switch.
The Linux 2.6.8.1 Scheduler- Runqueues, priority arrays- Calcucalation of priorities and timeslices,- schedule() function- Scheduler tuning
Process
ProcessLightweight ProcessProcess Descriptor
Process Descriptor
Ref: Understanding the Linux Kernel
Process State
TASK_RUNNING TASK_INTERRUPTIBLE TASK_UNINTERRUPTIBLE TASK_STOPPED TASK_ZOMBIE
Process Descriptor Handling The Process List
Ref: Understanding the Linux Kernel
continued…
List of Data Structure
Ref: Understanding the Linux Kernel
Process Switch
Hardware ContextHappens only in schedule() functionSteps
- switch page global directory- switch kernel mode stack and H/W
context
The Linux 2.6.8.1 CPU Scheduler
RunqueuesThe O(1) Scheduling Algorithm
- one Runqueue per CPU- active priority array- expired priority array
Use Priority Arrays
active priority arraybitmap[BITMAP_SIZE]
bitmap[BITMAP_SIZE]
Calculating priority
static priority- nice() system call - specified by user- never modified by scheduler- used to calculate timeslice
continued…
dynamic priority- subtracts –5 to +5 from static priority depending on the time spend in running or waiting- used for scheduling purpose
The schedule() function.
steps involved- find process with maximum dynamic priority- prev and next pointers to process
descriptors- switch to next
switch page global directoryswitch kernel mode stack
continued…
Called in prev, return in nextWhy this is O(1) Invoked by
- scheduler_tick()- system call
scheduler_tick()
Invoked every 1 ms by timer interruptDo not always invoke schedule()Whenever a task runs out of time slice,
it is given new time slice and dynamic priority and put in expired array
Reinsert interactive task on active array If there is no active task swap the
pointers of active and expired arrays
System calls
Insert current task in a waitqueueChange state to
TASK_INTERRUPTABLE or TASK_UNINTERRUPTABLE
Invoke schedule() If resource available remove from
waitqueue
Handling real time tasks
Task priority range -20 to 19SCHED_FIFO SchedulingSCHED_RR Scheduling
Scheduler tuning
MIN_TIMESLICE AND MAXI_TIMESLICE
PRIO_BONUS_RATIO STARVATION_LIMIT
Future scope
Scheduler modes- server mode, bigger timeslice- desktop mode, more responsiveness
Swappable schedulers- different scheduler for different users- basic kernel scheduler would be round robin
3. References
Josh Aas, “Understanding the Linux 2.6.8.1 CPU Scheduler”,
February 2005. Abraham Silberschatz, Greg Gagne, Peter Galvin,
“Operating System Concepts”, Wiley. Daniel P. Bovet, Marco Cesati, “Understanding the Linux Kernel”,
2ndEdition. O’Reilly, July 2003. http://plg.uwaterloo.ca/~itbowman/CS746G/a1/ . http://josh.trancesoftware.com/linux/ .
Thank YouThank You.