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进程调度

results matching ""

    No results matching ""