进程,线程,应用程序域,程序集,托管
2012-11-04 23:01
281 查看
进程
定义:可并发执行的程序在一个数据集合上的运行过程,每个进程有一个自己的地址空间以及一个单一的控制流程。
要解决的问题:为了使程序能并发执行,(要并发执行就要隔离进程,使进程独立,即每个进程有属于自己的数据段、程序段、进程控制块)
进程是一个资源拥有者,拥有自己的数据段,程序段,进程控制块,因为在创建,撤销和切换过程中,系统必须付出较大的开销,所以有了appDomain.
AppDomain:系统只提供进程,Process只提供了对内存的控制,所以.Net无法直接在Process中运行,所以有了AppDomain.
托管:托管的代码不可以直接写内存,所以是安全的。
非托管:非托管的代码可以直接读写内存,不安全,但效率高,像C++中的指针。
线程
出现的背景:由于进程是一个资源的拥有者,因而在进程的创建、撤销、和切换的过程中,系统必须为之付出较大的时空开销,限制了并发程度的进一步提高。
要解决的问题:解决进程的创建、撤销、和切换的过程中,系统必须为之付出较大的时空开销的问题
解决的方法:将进程的两个属性分开,由操作系统分开处理。把“独立调度、分配的基本单位”这个属性分离出来作为线程;而把进程作为资源拥有的基本单位,线程作为进程中的一个实体而存在。
线程:CLR执行代码的操作系统的构造,在运行时,所有的托管代码都加载到一个AppDomain中,由特定的操作系统线程来运行。线程可以自由的跨越应用程序的边界,而不为每个appdomain创建新的线程。在特定的时间内,每个线程都在一个appdomain中运行,CLR会跟踪在那些appdomain中有那些线程。
单独的库程序集是不能被直接运行的(库程序集即.dll的文件),它必须和一个可执行程序集文件一起启动(可执行程序集即.exe)。当可执行文件加载完毕时,.NET会在当前进程中创建一个应用程序域称为默认域,域的名称和程序集的名称相同,它不能被销毁直至进程销毁。
appdomain与线程的关系:appdomain与线程并不是一对一的关系,单个appdomain中可以执行多个线程,而线程可以跨越appdomain的边界。
所以,这些不同的appdomain之间只能通过远程通讯来实现消息和对象的传递。
线程可以再不影响进程的情况下停止单个的appdomain。
线程为了减少程序并发执行所付出的时空开销,一个线程可以创建和撤销另一个线程。
http://www.cnblogs.com/baixiaoxu/news/2011/03/28/2024018.html
http://www.cnblogs.com/mapk/archive/2008/01/26/1041919.html
定义:可并发执行的程序在一个数据集合上的运行过程,每个进程有一个自己的地址空间以及一个单一的控制流程。
要解决的问题:为了使程序能并发执行,(要并发执行就要隔离进程,使进程独立,即每个进程有属于自己的数据段、程序段、进程控制块)
进程是一个资源拥有者,拥有自己的数据段,程序段,进程控制块,因为在创建,撤销和切换过程中,系统必须付出较大的开销,所以有了appDomain.
AppDomain:系统只提供进程,Process只提供了对内存的控制,所以.Net无法直接在Process中运行,所以有了AppDomain.
托管:托管的代码不可以直接写内存,所以是安全的。
非托管:非托管的代码可以直接读写内存,不安全,但效率高,像C++中的指针。
线程
出现的背景:由于进程是一个资源的拥有者,因而在进程的创建、撤销、和切换的过程中,系统必须为之付出较大的时空开销,限制了并发程度的进一步提高。
要解决的问题:解决进程的创建、撤销、和切换的过程中,系统必须为之付出较大的时空开销的问题
解决的方法:将进程的两个属性分开,由操作系统分开处理。把“独立调度、分配的基本单位”这个属性分离出来作为线程;而把进程作为资源拥有的基本单位,线程作为进程中的一个实体而存在。
线程:CLR执行代码的操作系统的构造,在运行时,所有的托管代码都加载到一个AppDomain中,由特定的操作系统线程来运行。线程可以自由的跨越应用程序的边界,而不为每个appdomain创建新的线程。在特定的时间内,每个线程都在一个appdomain中运行,CLR会跟踪在那些appdomain中有那些线程。
单独的库程序集是不能被直接运行的(库程序集即.dll的文件),它必须和一个可执行程序集文件一起启动(可执行程序集即.exe)。当可执行文件加载完毕时,.NET会在当前进程中创建一个应用程序域称为默认域,域的名称和程序集的名称相同,它不能被销毁直至进程销毁。
appdomain与线程的关系:appdomain与线程并不是一对一的关系,单个appdomain中可以执行多个线程,而线程可以跨越appdomain的边界。
所以,这些不同的appdomain之间只能通过远程通讯来实现消息和对象的传递。
线程可以再不影响进程的情况下停止单个的appdomain。
线程为了减少程序并发执行所付出的时空开销,一个线程可以创建和撤销另一个线程。
http://www.cnblogs.com/baixiaoxu/news/2011/03/28/2024018.html
http://www.cnblogs.com/mapk/archive/2008/01/26/1041919.html
相关文章推荐
- 进程、线程、应用程序域、托管代码、元数据等。
- 黑马程序员_学习日记65_713ASP.NET(委托、托管、扩展方法、泛型委托、进程_应用程序域_线程、多线程、异步委托)
- 在Clr中应用程序域、进程、线程的关系
- 进程、应用程序域、程序集、对象上下文
- 线程 应用程序域 进程 比较区别
- C#:进程、线程、应用程序域(AppDomain)与上下文分析
- 对进程、线程、应用程序域的理解
- 在Clr中应用程序域、进程、线程的关系
- 对进程、线程、应用程序域的理解
- 进程、线程与应用程序域
- 细说进程、应用程序域与上下文之间的关系(四)——进程应用程序域与线程的关系
- 对进程、线程、应用程序域的理解
- 进程、应用程序域、程序集、对象上下文
- 进程和线程及应用程序域,上下文
- 进程、应用程序域、程序集、对象上下文(转载)
- C# 线程 进程 应用程序域
- 线程,进程,应用程序域的关系图
- 对进程、线程、应用程序域的理解 (转载)
- 进程、应用程序域、程序集、对象上下文
- .Net托管世界的应用程序域和线程(转载)