== Structure ==
进程管理包括:Presention,creation, ring change,scheduling,destruction.
== Understand ==
Process presentation
============
Linux use task_struct to descripte a process. It contains some info below:
Process state,
Ring change
==========
User -> Kernel
-------------------
得到内核栈地址:tr->tss->esp0,esp指向内核栈。
将所有寄存器中用户空间内容保存到内核空间。
Kernel -> User
-------------------
用内核栈上保存的user space的信息切换回用户空间。
Process scheduling
===========
scheduling algorithm
---------------------------
进程切换的时机
------------------
1 资源不可用(or nothing to do) 会调用schdule()
2 时间片用完 current->counter=0,scheduler_tick()时钟中断来更新会设置need_resched
3 当一个优先级高的进程进入可执行状态的时候,,try_to_wake_up()设置need_resched
进程切换的形式
-------------------
主动:in kernel: schdule(),some system-call: sched_yield、sched_setscheduler、pause、nanosleep
被动Preemption:need_resched is set.user preemption and kernel preemption。
Process creation
==========
Create process
Create thread
Create kthread
linux用hash pid和循环链表组织所有进程。
Process destruction
============
阅读(1781) | 评论(0) | 转发(0) |