Linux2.6进程

来源:互联网 发布:虚拟机安装mac系统 编辑:程序博客网 时间:2024/04/30 00:42

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



原创粉丝点击