进程与线程

进程:应用程序的一个实例使用的资源的集合。每个进程都被赋予了一个虚拟地址空间

线程:对CPU进行虚拟化,可以理解为一个逻辑CPU.

线程要素

线程包括以下要素:

1. 线程内核对象, 其中包含

  1)一组对线程进行描述的属性

  2)线程上下文,即包含CPU寄存器的集合的一个内存块

2. 线程环境块,在用户模式中分配和初始化的一个内存块,其中包含

  1)线程的异常处理链首  

  2)线程的"线程本地存储数据"

  3)由GDI和OpenGL图形使用的一些数据结构

3. 用户模式栈

  1)存储传给方法的局部变量和实参

  2)包含当前方法返回时,线程接着执行的地址

4. 内核模式栈

  1)用于应用程序代码想操作系统中的一个内核模式函数传递实参。Windows将实参从线程的用户模式栈复制到线程的内核模式栈

5. DLL线程连接和线程分离通知

上下文切换

上下文切换(30毫秒):线程运行的时间片也叫量程。

1. 保存CPU寄存器的值到线程内核对象的一个上下文结构中。还要考虑CPU的高速缓存(cache).

2. 调度线程。

3. 加载所选上下文结构中的值到CPU的寄存器中。

使用线程的理由

可以使用线程将代码同其他代码隔离;可以使用线程来实现并发执行;可以使用线程来简化编程;

零页线程:系统启动时,会创建一个系统中唯一的优先级为0的零页线程,负责在没有其他进程需要执行的时候,将系统RAM的所有空闲页清零。

显示创建线程

非普通优先级运行,表现为前台线程,需要长时间运行, 需要提前终止。

现在一个CLR线程直接对应一个Windows线程,将来LCR可能引入它自己的逻辑线程概念,使得一个CLR逻辑线程并非一定映射到一个物理Windows线程。

一个进程中所有的前台进程停止运行时,CLR强制终止仍在运行的任何后台进程。因此,前台进程应该用于执行确实想完成的任务。

posted on 2012-12-06 17:40  逝者如斯(乎)  阅读(572)  评论(0编辑  收藏  举报