Seminar on Linux Process Management

Download Report

Transcript Seminar on Linux Process Management

Seminar on
Linux Process Management
Presentation by
Manoj Dhage
MTech 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



Process
Lightweight Process
Process 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
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]
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/



.
Thank You.