Chinaunix首页 | 论坛 | 博客
  • 博客访问: 403357
  • 博文数量: 48
  • 博客积分: 764
  • 博客等级: 上士
  • 技术积分: 1133
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-17 13:29
文章分类

全部博文(48)

文章存档

2014年(5)

2013年(34)

2012年(9)

分类: LINUX

2012-12-23 16:49:23


== 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
============

















阅读(1733) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~