Kernel —— Process management

1804阅读 0评论2012-12-23 firocu
分类:LINUX


== Structure ==
进程管理包括:Presention,creation, ring changescheduling,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=0scheduler_tick()时钟中断来更新会设置need_resched
当一个优先级高的进程进入可执行状态的时候,,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
============

















上一篇:Kernel —— Time management
下一篇:Kernel —— VFS