220 likes | 325 Views
Seminar on Linux Process Management. Presentation by Tapan Kumar Sahoo UCE BURLA. 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
E N D
Seminar onLinux Process Management Presentation by Tapan Kumar Sahoo UCE BURLA.
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 • Process • Lightweight Process • Process Descriptor
Process Descriptor Ref: Understanding the Linux Kernel
Process State • TASK_RUNNING • TASK_INTERRUPTIBLE • TASK_UNINTERRUPTIBLE • TASK_STOPPED • TASK_ZOMBIE
The Process List Process Descriptor Handling Ref: Understanding the Linux Kernel
continued… • List of Data Structure Ref: Understanding the Linux Kernel
Process Switch • Hardware Context • Happens only in schedule() function • Steps - switch page global directory - switch kernel mode stack and H/W context
The Linux 2.6.8.1 CPU Scheduler • Runqueues • The O(1) Scheduling Algorithm - one Runqueue per CPU - active priority array - expired priority array
Use Priority Arrays • active priority array • 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 directory switch kernel mode stack
continued… • Called in prev, return in next • Why this is O(1) • Invoked by - scheduler_tick() - system call
scheduler_tick() • Invoked every 1 ms by timer interrupt • Do 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 waitqueue • Change state to TASK_INTERRUPTABLE or TASK_UNINTERRUPTABLE • Invoke schedule() • If resource available remove from waitqueue
Handling real time tasks • Task priority range -20 to 19 • SCHED_FIFO Scheduling • SCHED_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/ .