码迷,mamicode.com
首页 > 其他好文 > 详细

huawei

时间:2016-10-25 01:58:25      阅读:272      评论:0      收藏:0      [点我收藏+]

标签:app   基础   局部变量   操作系统   模块   自动   设置   虚拟化   arc   

线程和进程的区别:

线程堆栈(Thread Stack)和托管堆(Managed Heap)

每个正在运行的程序都对应着一个进程(process),在一个进程内部,可以有一个或多个线程(thread),每个线程都拥有一块“自留地”,称为“线程堆栈”,大小为1M,用于保存自身的一些数据,比如函数中定义的局部变量、函数调用时传送的参数值等,这部分内存区域的分配与回收不需要程序员干涉,主要由操作系统管理。所有值类型的变量都是在线程堆栈中分配的。

另一块内存区域称为“堆(heap)”,在.NET 这种托管环境下,堆由CLR 进行管理,所以又称为“托管堆(managed heap)。

托管堆是CLR中自动内存管理的基础。初始化新进程时,运行时会为进程保留一个连续的地址空间区域。这个保留的地址空间被称为托管堆。托管堆维护着一个指针,用它指向将在堆中分配的下一个对象的地址。最初,该指针设置为指向托管堆的基址。

进程是指在系统中正在运行的一个应用程序;线程是系统分配处理器时间资源的基本单元,或者说进程之内独立执行的一个单元。

当系统加载一个CLR的进程,进程里面可能有多个线程,这时候系统会给这个进程创建一个大小为1M的线程堆栈。这个线程堆栈用来存放方法调用的实参,和方法内部定义的局部变量。

AppDomain简单的说就是应用程序的边界。可以通过它对相同进程中进行再次隔离。一个程序在运行的时候,它和它所引用、反射加载的所有模块的集合构成了一个程序域。普通桌面程序,一个程序就是一个AppDomain。CLR允许在一个进程中托管多个程序(比如IIS一类程序),一个IIS是可以运行很多网站的,如果这些网站都放在一个AppDomain里,一个网站崩溃了,其他网站也不能访问了。如果每个网站都作为独立的程序,对机器的性能要求又太高,而且没法共享一些资源。所以.net就有AppDomain的概念,一个IIS进程里,给每个网站一个AppDomain,这个每个网站都相互独立。

作为一个Windows概率,线程(thread)的职责是对CPU进行虚拟化,可将线程理解为一个逻辑CPU。Windows为每个进程都提供了该进程专用的线程。如果引用程序的代码进入无限循环,与那个代码关联的进程会冻结,但其他进程不会冻结,因为它们有自己的线程。

如何管理内存

http://www.cnblogs.com/chrisghb8812/p/5572591.html

MVC

http://www.cnblogs.com/iamlilinfeng/archive/2013/04/01/2992432.html

排序算法

http://www.cnblogs.com/WangJinYang/p/3553792.html

huawei

标签:app   基础   局部变量   操作系统   模块   自动   设置   虚拟化   arc   

原文地址:http://www.cnblogs.com/chrisghb8812/p/5995105.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!