标签:
进程与线程
进程:应用程序的一个实例使用的资源的集合。每个进程都被赋予了一个虚拟地址空间。
线程:对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强制终止仍在运行的任何后台进程。因此,前台进程应该用于执行确实想完成的任务。
标签:
原文地址:http://www.cnblogs.com/changrulin/p/4780983.html