- Process Management
- the process descriptor: struct task_struct
- the task list: a circular doubly linked list
- the current macro: the current running task
- system call and interrupts
- Process States
- TASK_RUNNING
- TASK_INTERRUPTIBLE
- TASK_UNINTERRUPTIBLE
- TASK_STOPPED
- TASK_TRACED
- EXIT_ZOMBIE
- EXIT_DEAD
- Linux Scheduler (the schedule() function in <linux/sched.c>)
- When the scheduler is called?
- What does the scheduler do?
- The Scheduling Policy: Time-Sharing, Preemptive Priority Scheduling
- I/O-bound v.s. CPU-bound processes
- Process Preemption: determined by both priority and timeslice
- An example: a text-editor and a video encoder
- The Scheduling Algorithm: the O(1) algorithm
- Runqueues and the priority arrays
- Calculating priority and timeslice
|