Linux2.6进程

1.进程、用户线程、内核线程的区别和联系

  进程 用户线程(轻量级进程) 内核线程
代码段
数据段
描述符task_struct
用户空间堆栈 一个线程组共享一个用户空间 完全没有
内核空间堆栈
PID 独一无二的 一组线程共享一个
这里的有是指拥有独立的


2.内核线程:由内核创建、调度,用于执行一些重要的、周期性的过程。

只运行在内核态、只使用3G以后的系统空间。

比如用于回收物理页面的kswapd线程


3.进程的状态

(1)就绪或运行

(2)可中断的等待

(3)不可中断的等待

(4)暂停

(5)跟踪

(6)僵死(见Linux2.6进程的创建与删除

(7)僵死撤消


4.进程描述符与进程之间是严格的一一对应


5.内核态的进程堆栈和线程描述符被紧凑地放在两个连续的页框中

目的:在内核态运行时,能够方便地得到线程描述符的地址


6.由于内核堆栈较小,不能有太深的嵌套,或使用太多太大的局部变量(用指针)

刚从用户态切换到内核态时,内核栈总是空的。


7.记录进程之间关系的数据结构

(1)进程链表:不带头的双向链表,包含所有进程描述符。0进程的描述符是链表头

(2)运行状态链表

(3)宗族关系树

(4)使用链表散列法的Hash表:用于通过PID快速找到描述符

(5)等待队列:双向链表


8.进程的创建:Linux2.6进程的创建与删除


9.为了叙述严谨,进程切换是指两个进程切换的过程,进程调度是如何选择下一个运行进程的算法

Linux0.12由于比较简单,两个过程合并到了一起

Linux2.6进程切换见Linux2.6进程切换

Linux2.6进程调度见Linux2.6进程调度



posted @ 2012-05-21 22:13  windmissing  阅读(211)  评论(0编辑  收藏  举报